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 2016/06/07 10:45:11 UTC

jena git commit: JENA-1190: Handle paths in TransfrmFilterEquality

Repository: jena
Updated Branches:
  refs/heads/master 1ca43f086 -> accab21cd


JENA-1190: Handle paths in TransfrmFilterEquality


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/accab21c
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/accab21c
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/accab21c

Branch: refs/heads/master
Commit: accab21cd19824d2d47f9d4bba635a73796632b8
Parents: 1ca43f0
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Jun 7 11:45:03 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Jun 7 11:45:03 2016 +0100

----------------------------------------------------------------------
 .../optimize/TransformFilterEquality.java       |  3 +++
 .../algebra/optimize/TestTransformFilters.java  | 24 ++++++++++++++++++++
 2 files changed, 27 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/accab21c/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterEquality.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterEquality.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterEquality.java
index 45a9167..86c0336 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterEquality.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterEquality.java
@@ -238,6 +238,9 @@ public class TransformFilterEquality extends TransformCopy {
         if (op instanceof OpBGP || op instanceof OpQuadPattern)
             return true;
 
+        if (op instanceof OpPath )
+            return true;
+        
         if (op instanceof OpFilter) {
             OpFilter opf = (OpFilter) op;
             // Expressions are always safe transform by substitution.

http://git-wip-us.apache.org/repos/asf/jena/blob/accab21c/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestTransformFilters.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestTransformFilters.java b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestTransformFilters.java
index 545c63e..00ec664 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestTransformFilters.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestTransformFilters.java
@@ -194,6 +194,30 @@ public class TestTransformFilters extends AbstractTestTransform
                t_equality,
                (String[])null);
     }
+    
+    @Test public void equality_path_1() {
+        testOp("(filter (= ?x <http://constant1/>) (path ?x (path+ :p) ?y))",
+               t_equality,
+               "(assign ((?x <http://constant1/>)) (path <http://constant1/> (path+ :p) ?y) )") ;
+    }
+
+    @Test public void equality_path_2() {
+        testOp("(filter (= ?y <http://constant1/>) (path ?x (path+ :p) ?y))",
+               t_equality,
+               "(assign ((?y <http://constant1/>)) (path ?x (path+ :p) <http://constant1/>) )") ;
+    }
+
+    @Test public void equality_path_3() {
+        testOp("(filter ((= ?x <http://constant1/>) (= ?y <http://constant2/>)) (path ?x (path+ :p) ?y))",
+               t_equality,
+               "(assign ((?x <http://constant1/>) (?y <http://constant2/>)) (path <http://constant1/> (path+ :p) <http://constant2/>) )") ;
+    }
+
+    @Test public void equality_path_4() {
+        testOp("(filter (= ?x <http://constant1/>) (join (bgp (?x :q ?z)) (path ?x (path+ :p) ?y) ))",
+               t_equality,
+               "(assign ((?x <http://constant1/>)) (join (bgp (<http://constant1/> :q ?z)) (path <http://constant1/> (path+ :p) ?y) ))") ;
+    }
 
     @Test public void optionalEqualitySubQuery_01() {
         // Presence of ?test in the projection blocks the rewrite.