You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2012/08/20 15:59:19 UTC

svn commit: r1375024 - in /jena/trunk/jena-arq: src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/ testing/ARQ/ testing/ARQ/OptFilterEquality/

Author: andy
Date: Mon Aug 20 13:59:18 2012
New Revision: 1375024

URL: http://svn.apache.org/viewvc?rev=1375024&view=rev
Log:
Tidy up.
Add tests.


Added:
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/data-3.ttl
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/data-4.ttl
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-01.rq
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-01.srj
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-02.rq
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-02.srj
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-03.rq
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-03.srj
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-04.rq
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-04.srj
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-05.rq
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-05.srj
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-06.rq
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-06.srj
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-07.rq
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-07.srj
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-08.rq
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-08.srj
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-10.rq
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-10.srj
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-11.rq
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-11.srj
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-12.rq
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-12.srj
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/manifest.ttl
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/op.sse
    jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/op1.sse
Modified:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterEquality.java
    jena/trunk/jena-arq/testing/ARQ/manifest-arq.ttl

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterEquality.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterEquality.java?rev=1375024&r1=1375023&r2=1375024&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterEquality.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterEquality.java Mon Aug 20 13:59:18 2012
@@ -61,8 +61,6 @@ public class TransformFilterEquality ext
         ExprList remaining = p.getRight() ;
         
         // ---- Check if the subOp is the right shape to transform.
-        
-
         Op op = subOp ;
         
         // Special case : deduce that the filter will always "eval unbound"
@@ -72,7 +70,6 @@ public class TransformFilterEquality ext
         {
             return OpTable.empty() ;
         }
-
         
         // Special case: the deep left op of a OpConditional/OpLeftJoin is unit table.
         // Given the there is an equality filter, if the right does not match, 
@@ -223,10 +220,7 @@ public class TransformFilterEquality ext
         return false ;
     }
     
-    // -- A special case
-    // If a sequence of OPTIONALS, and nothing prior to the first, we end up with
-    // a unit table on the left sid of a next of LeftJoin/conditionals.
-
+    // -- Special cases
     private static boolean testSpecialCaseUnused(Op op, List<Pair<Var, NodeValue>> equalities, ExprList remaining)
     {
         // If the op does not contain the var at all, for some equality
@@ -241,6 +235,9 @@ public class TransformFilterEquality ext
         return false ;
     }
 
+    // If a sequence of OPTIONALS, and nothing prior to the first, we end up with
+    // a unit table on the left side of deepest leftjoin/conditional.
+    
     private static boolean testSpecialCase1(Op op, List<Pair<Var, NodeValue>> equalities , ExprList remaining )
     {
        return false ;

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/data-3.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/data-3.ttl?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/data-3.ttl (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/data-3.ttl Mon Aug 20 13:59:18 2012
@@ -0,0 +1,3 @@
+@prefix : <http://example.org/> .
+
+:x :p 1 .

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/data-4.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/data-4.ttl?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/data-4.ttl (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/data-4.ttl Mon Aug 20 13:59:18 2012
@@ -0,0 +1,7 @@
+@prefix : <http://example.org/> .
+
+:x1 :p 1 .
+
+:x1 :r 2 .
+
+:x2 :p 2 .

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-01.rq
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-01.rq?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-01.rq (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-01.rq Mon Aug 20 13:59:18 2012
@@ -0,0 +1,8 @@
+PREFIX : <http://example.org/>
+
+SELECT *
+{
+   ?x :p ?o1 .
+   OPTIONAL { ?x :qq ?o2 }
+   FILTER(?x = :x)
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-01.srj
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-01.srj?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-01.srj (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-01.srj Mon Aug 20 13:59:18 2012
@@ -0,0 +1,13 @@
+{
+  "head": {
+    "vars": [ "x" , "o1" , "o2" ]
+  } ,
+  "results": {
+    "bindings": [
+      {
+        "x": { "type": "uri" , "value": "http://example.org/x" } ,
+        "o1": { "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "type": "typed-literal" , "value": "1" }
+      }
+    ]
+  }
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-02.rq
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-02.rq?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-02.rq (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-02.rq Mon Aug 20 13:59:18 2012
@@ -0,0 +1,8 @@
+PREFIX : <http://example.org/>
+
+SELECT *
+{
+   ?x :qq ?o .
+   OPTIONAL { ?x :p ?v }
+   FILTER(?x = :x)
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-02.srj
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-02.srj?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-02.srj (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-02.srj Mon Aug 20 13:59:18 2012
@@ -0,0 +1,10 @@
+{
+  "head": {
+    "vars": [ "x" , "o" , "v" ]
+  } ,
+  "results": {
+    "bindings": [
+      
+    ]
+  }
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-03.rq
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-03.rq?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-03.rq (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-03.rq Mon Aug 20 13:59:18 2012
@@ -0,0 +1,7 @@
+PREFIX : <http://example.org/>
+
+SELECT *
+{
+   OPTIONAL { ?x :p ?o }
+   FILTER(?x = :x)
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-03.srj
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-03.srj?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-03.srj (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-03.srj Mon Aug 20 13:59:18 2012
@@ -0,0 +1,13 @@
+{
+  "head": {
+    "vars": [ "x" , "o" ]
+  } ,
+  "results": {
+    "bindings": [
+      {
+        "x": { "type": "uri" , "value": "http://example.org/x" } ,
+        "o": { "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "type": "typed-literal" , "value": "1" }
+      }
+    ]
+  }
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-04.rq
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-04.rq?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-04.rq (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-04.rq Mon Aug 20 13:59:18 2012
@@ -0,0 +1,8 @@
+PREFIX : <http://example.org/>
+
+SELECT *
+{
+   OPTIONAL { ?x :qq ?o1 }
+   OPTIONAL { ?x :p ?o2 }
+   FILTER(?x = :x)
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-04.srj
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-04.srj?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-04.srj (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-04.srj Mon Aug 20 13:59:18 2012
@@ -0,0 +1,13 @@
+{
+  "head": {
+    "vars": [ "x" , "o1" , "o2" ]
+  } ,
+  "results": {
+    "bindings": [
+      {
+        "x": { "type": "uri" , "value": "http://example.org/x" } ,
+        "o2": { "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "type": "typed-literal" , "value": "1" }
+      }
+    ]
+  }
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-05.rq
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-05.rq?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-05.rq (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-05.rq Mon Aug 20 13:59:18 2012
@@ -0,0 +1,8 @@
+PREFIX : <http://example.org/>
+
+SELECT *
+{ 
+   OPTIONAL { ?x :p ?o2 }
+   OPTIONAL { ?x :qq ?o1 }
+   FILTER(?x = :x)
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-05.srj
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-05.srj?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-05.srj (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-05.srj Mon Aug 20 13:59:18 2012
@@ -0,0 +1,13 @@
+{
+  "head": {
+    "vars": [ "x" , "o2" , "o1" ]
+  } ,
+  "results": {
+    "bindings": [
+      {
+        "x": { "type": "uri" , "value": "http://example.org/x" } ,
+        "o2": { "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "type": "typed-literal" , "value": "1" }
+      }
+    ]
+  }
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-06.rq
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-06.rq?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-06.rq (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-06.rq Mon Aug 20 13:59:18 2012
@@ -0,0 +1,8 @@
+PREFIX : <http://example.org/>
+
+SELECT *
+{
+   ?x :p ?v .
+   OPTIONAL { }
+   FILTER(?x = :x)
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-06.srj
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-06.srj?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-06.srj (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-06.srj Mon Aug 20 13:59:18 2012
@@ -0,0 +1,13 @@
+{
+  "head": {
+    "vars": [ "x" , "v" ]
+  } ,
+  "results": {
+    "bindings": [
+      {
+        "x": { "type": "uri" , "value": "http://example.org/x" } ,
+        "v": { "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "type": "typed-literal" , "value": "1" }
+      }
+    ]
+  }
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-07.rq
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-07.rq?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-07.rq (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-07.rq Mon Aug 20 13:59:18 2012
@@ -0,0 +1,7 @@
+PREFIX : <http://example.org/>
+
+SELECT *
+{
+   OPTIONAL { }
+   FILTER(?x = :x)
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-07.srj
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-07.srj?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-07.srj (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-07.srj Mon Aug 20 13:59:18 2012
@@ -0,0 +1,10 @@
+{
+  "head": {
+    "vars": [  ]
+  } ,
+  "results": {
+    "bindings": [
+      
+    ]
+  }
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-08.rq
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-08.rq?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-08.rq (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-08.rq Mon Aug 20 13:59:18 2012
@@ -0,0 +1,8 @@
+PREFIX : <http://example.org/>
+
+SELECT *
+{
+   OPTIONAL { ?x :zpp ?o1 }
+   OPTIONAL { ?x :zqq ?o2 }
+   FILTER(?x = :x)
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-08.srj
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-08.srj?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-08.srj (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-08.srj Mon Aug 20 13:59:18 2012
@@ -0,0 +1,10 @@
+{
+  "head": {
+    "vars": [ "x" , "o1" , "o2" ]
+  } ,
+  "results": {
+    "bindings": [
+      
+    ]
+  }
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-10.rq
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-10.rq?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-10.rq (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-10.rq Mon Aug 20 13:59:18 2012
@@ -0,0 +1,10 @@
+PREFIX : <http://example.org/>
+
+SELECT *
+{ 
+   ?x :qq ?v 
+   OPTIONAL { ?x :p ?o2 
+       OPTIONAL { ?x :qq ?o1 }
+   }
+   FILTER(?x = :x)
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-10.srj
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-10.srj?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-10.srj (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-10.srj Mon Aug 20 13:59:18 2012
@@ -0,0 +1,10 @@
+{
+  "head": {
+    "vars": [ "x" , "v" , "o2" , "o1" ]
+  } ,
+  "results": {
+    "bindings": [
+      
+    ]
+  }
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-11.rq
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-11.rq?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-11.rq (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-11.rq Mon Aug 20 13:59:18 2012
@@ -0,0 +1,13 @@
+PREFIX : <http://example.org/>
+
+SELECT *
+{ 
+   ?x :r ?v 
+   OPTIONAL { 
+        ?z :p 1 
+        OPTIONAL { 
+          ?x2 :p ?v 
+        }
+   }
+   FILTER(?x = :x1)
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-11.srj
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-11.srj?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-11.srj (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-11.srj Mon Aug 20 13:59:18 2012
@@ -0,0 +1,15 @@
+{
+  "head": {
+    "vars": [ "x" , "v" , "z" , "x2" ]
+  } ,
+  "results": {
+    "bindings": [
+      {
+        "x": { "type": "uri" , "value": "http://example.org/x1" } ,
+        "v": { "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "type": "typed-literal" , "value": "2" } ,
+        "z": { "type": "uri" , "value": "http://example.org/x1" } ,
+        "x2": { "type": "uri" , "value": "http://example.org/x2" }
+      }
+    ]
+  }
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-12.rq
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-12.rq?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-12.rq (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-12.rq Mon Aug 20 13:59:18 2012
@@ -0,0 +1,13 @@
+PREFIX : <http://example.org/>
+
+SELECT *
+{ 
+   ?x :r ?v 
+   OPTIONAL { 
+        ?z :p 1 
+        OPTIONAL { 
+          ?x2 :p ?v 
+        }
+   }
+   FILTER(?x2 = :x2)
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-12.srj
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-12.srj?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-12.srj (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/filter-equality-12.srj Mon Aug 20 13:59:18 2012
@@ -0,0 +1,15 @@
+{
+  "head": {
+    "vars": [ "x" , "v" , "z" , "x2" ]
+  } ,
+  "results": {
+    "bindings": [
+      {
+        "x": { "type": "uri" , "value": "http://example.org/x1" } ,
+        "v": { "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "type": "typed-literal" , "value": "2" } ,
+        "z": { "type": "uri" , "value": "http://example.org/x1" } ,
+        "x2": { "type": "uri" , "value": "http://example.org/x2" }
+      }
+    ]
+  }
+}

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/manifest.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/manifest.ttl?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/manifest.ttl (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/manifest.ttl Mon Aug 20 13:59:18 2012
@@ -0,0 +1,109 @@
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+# 
+#       http://www.apache.org/licenses/LICENSE-2.0
+# 
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+@prefix rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs:	<http://www.w3.org/2000/01/rdf-schema#> .
+@prefix mf:     <http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#> .
+@prefix mfx:    <http://jena.hpl.hp.com/2005/05/test-manifest-extra#> .
+@prefix qt:     <http://www.w3.org/2001/sw/DataAccess/tests/test-query#> .
+
+<>  rdf:type mf:Manifest ;
+    rdfs:label "Algebra optimizations - Filter Equality" ;
+    mf:entries
+    ( 
+      # data-3
+      [  mf:name    "filter-equality-01" ;
+         rdf:type   mfx:TestQuery ; 
+         mf:action
+            [ qt:query  <filter-equality-01.rq> ;
+              qt:data   <data-3.ttl> ] ;
+        mf:result  <filter-equality-01.srj>
+      ]
+      [  mf:name    "filter-equality-02" ;
+         rdf:type   mfx:TestQuery ; 
+         mf:action
+            [ qt:query  <filter-equality-02.rq> ;
+              qt:data   <data-3.ttl> ] ;
+        mf:result  <filter-equality-02.srj>
+      ]
+      [  mf:name    "filter-equality-03" ;
+         rdf:type   mfx:TestQuery ; 
+         mf:action
+            [ qt:query  <filter-equality-03.rq> ;
+              qt:data   <data-3.ttl> ] ;
+        mf:result  <filter-equality-03.srj>
+      ]
+      [  mf:name    "filter-equality-04" ;
+         rdf:type   mfx:TestQuery ; 
+         mf:action
+            [ qt:query  <filter-equality-04.rq> ;
+              qt:data   <data-3.ttl> ] ;
+        mf:result  <filter-equality-04.srj>
+      ]
+      [  mf:name    "filter-equality-05" ;
+         rdf:type   mfx:TestQuery ; 
+         mf:action
+            [ qt:query  <filter-equality-05.rq> ;
+              qt:data   <data-3.ttl> ] ;
+        mf:result  <filter-equality-05.srj>
+      ]
+
+      [  mf:name    "filter-equality-06" ;
+         rdf:type   mfx:TestQuery ; 
+         mf:action
+            [ qt:query  <filter-equality-06.rq> ;
+              qt:data   <data-3.ttl> ] ;
+        mf:result  <filter-equality-06.srj>
+      ]
+
+      [  mf:name    "filter-equality-07" ;
+         rdf:type   mfx:TestQuery ; 
+         mf:action
+            [ qt:query  <filter-equality-07.rq> ;
+              qt:data   <data-3.ttl> ] ;
+        mf:result  <filter-equality-07.srj>
+      ]
+
+      [  mf:name    "filter-equality-08" ;
+         rdf:type   mfx:TestQuery ; 
+         mf:action
+            [ qt:query  <filter-equality-08.rq> ;
+              qt:data   <data-3.ttl> ] ;
+        mf:result  <filter-equality-08.srj>
+      ]
+
+      # data-4
+      [  mf:name    "filter-equality-10" ;
+         rdf:type   mfx:TestQuery ; 
+         mf:action
+            [ qt:query  <filter-equality-10.rq> ;
+              qt:data   <data-3.ttl> ] ;
+        mf:result  <filter-equality-10.srj>
+      ]
+      [  mf:name    "filter-equality-11" ;
+         rdf:type   mfx:TestQuery ; 
+         mf:action
+            [ qt:query  <filter-equality-11.rq> ;
+              qt:data   <data-4.ttl> ] ;
+        mf:result  <filter-equality-11.srj>
+      ]
+      [  mf:name    "filter-equality-12" ;
+         rdf:type   mfx:TestQuery ; 
+         mf:action
+            [ qt:query  <filter-equality-12.rq> ;
+              qt:data   <data-4.ttl> ] ;
+        mf:result  <filter-equality-12.srj>
+      ]
+    ) .

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/op.sse
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/op.sse?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/op.sse (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/op.sse Mon Aug 20 13:59:18 2012
@@ -0,0 +1,7 @@
+(prefix ((: <http://example.org/>))
+  (filter (= ?x :x)
+    (leftjoin
+      (leftjoin
+        (table unit)
+        (bgp (triple ?x :qq ?o1)))
+      (bgp (triple ?x :p ?o2)))))

Added: jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/op1.sse
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/op1.sse?rev=1375024&view=auto
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/op1.sse (added)
+++ jena/trunk/jena-arq/testing/ARQ/OptFilterEquality/op1.sse Mon Aug 20 13:59:18 2012
@@ -0,0 +1,6 @@
+(prefix ((: <http://example.org/>))
+  (assign ((?x :x))
+    (conditional
+      (bgp (triple :x :qq ?o1))
+      (bgp (triple :x :p ?o2))))
+)

Modified: jena/trunk/jena-arq/testing/ARQ/manifest-arq.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/testing/ARQ/manifest-arq.ttl?rev=1375024&r1=1375023&r2=1375024&view=diff
==============================================================================
--- jena/trunk/jena-arq/testing/ARQ/manifest-arq.ttl (original)
+++ jena/trunk/jena-arq/testing/ARQ/manifest-arq.ttl Mon Aug 20 13:59:18 2012
@@ -34,6 +34,7 @@
 
         <Algebra/manifest.ttl>
         <Optimization/manifest.ttl>
+        <OptFilterEquality/manifest.ttl>
 
         <Select/manifest.ttl>
         <Construct/manifest.ttl>