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/11 19:12:17 UTC
svn commit: r1371979 - in /jena/trunk/jena-arq/src:
main/java/com/hp/hpl/jena/sparql/algebra/optimize/
test/java/com/hp/hpl/jena/sparql/algebra/
test/java/com/hp/hpl/jena/sparql/algebra/optimize/
Author: andy
Date: Sat Aug 11 17:12:16 2012
New Revision: 1371979
URL: http://svn.apache.org/viewvc?rev=1371979&view=rev
Log:
Push filter-equality through UNION.
Added:
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestPattern2Join.java
- copied, changed from r1370004, jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestPattern2Join.java
Removed:
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestPattern2Join.java
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterEquality.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestFilterTransform.java
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestOptimizer.java
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=1371979&r1=1371978&r2=1371979&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 Sat Aug 11 17:12:16 2012
@@ -116,7 +116,7 @@ public class TransformFilterEquality ext
return true ;
}
- if ( op instanceof OpJoin )
+ if ( op instanceof OpJoin || op instanceof OpUnion)
{
Op2 op2 = (Op2)op ;
return safeToTransform(exprs, op2.getLeft()) && safeToTransform(exprs, op2.getRight()) ;
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java?rev=1371979&r1=1371978&r2=1371979&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformFilterPlacement.java Sat Aug 11 17:12:16 2012
@@ -98,8 +98,8 @@ public class TransformFilterPlacement ex
private static Op transform(ExprList exprs, Set<Var> varsScope, Op x)
{
- // OpAssign could be done if the assignment and exprs are independent.
- // TODO Dispatch by visitor
+ // OpAssign/OpExtend could be done if the assignment and exprs are independent.
+ // TODO Dispatch by visitor??
if ( x instanceof OpBGP )
return transformFilterBGP(exprs, varsScope, (OpBGP)x) ;
Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java?rev=1371979&r1=1371978&r2=1371979&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TS_Algebra.java Sat Aug 11 17:12:16 2012
@@ -20,7 +20,6 @@ package com.hp.hpl.jena.sparql.algebra;
import com.hp.hpl.jena.sparql.algebra.optimize.TestOptimizer ;
-import com.hp.hpl.jena.sparql.algebra.optimize.TestPattern2Join ;
import com.hp.hpl.jena.sparql.algebra.optimize.TestTransformMergeBGPs ;
import com.hp.hpl.jena.sparql.algebra.optimize.TestVarRename ;
Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestFilterTransform.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestFilterTransform.java?rev=1371979&r1=1371978&r2=1371979&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestFilterTransform.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestFilterTransform.java Sat Aug 11 17:12:16 2012
@@ -132,7 +132,20 @@ public class TestFilterTransform
"(filter (= ?x1 <x>) (leftjoin (bgp ( ?s ?p ?x)) (bgp ( ?s ?p ?x1))))") ;
}
-
+ @Test public void equality13()
+ {
+ test("(filter (= ?x1 <x>) (join (bgp ( ?s ?p ?x1)) (bgp ( ?s ?p ?x1))))",
+ t_equality,
+ "(assign((?x1 <x>)) (join (bgp ( ?s ?p <x>)) (bgp ( ?s ?p <x>))))") ;
+ }
+
+ @Test public void equality14()
+ {
+ test("(filter (= ?x1 <x>) (union (bgp ( ?s ?p ?x1)) (bgp ( ?s ?p ?x1))))",
+ t_equality,
+ "(assign((?x1 <x>)) (union (bgp ( ?s ?p <x>)) (bgp ( ?s ?p <x>))))") ;
+ }
+
@Test public void disjunction01()
{
test("(filter (|| (= ?x <x>) (= ?x <y>)) (bgp ( ?s ?p ?x)) )",
Copied: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestPattern2Join.java (from r1370004, jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestPattern2Join.java)
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestPattern2Join.java?p2=jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestPattern2Join.java&p1=jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestPattern2Join.java&r1=1370004&r2=1371979&rev=1371979&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestPattern2Join.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestPattern2Join.java Sat Aug 11 17:12:16 2012
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package com.hp.hpl.jena.sparql.algebra.optimize;
+package com.hp.hpl.jena.sparql.algebra;
import org.junit.Test ;
import org.openjena.atlas.junit.BaseTest ;
@@ -27,6 +27,7 @@ import com.hp.hpl.jena.query.QueryFactor
import com.hp.hpl.jena.sparql.algebra.Algebra ;
import com.hp.hpl.jena.sparql.algebra.Op ;
import com.hp.hpl.jena.sparql.algebra.Transformer ;
+import com.hp.hpl.jena.sparql.algebra.optimize.TransformPattern2Join ;
import com.hp.hpl.jena.sparql.sse.SSE ;
public class TestPattern2Join extends BaseTest
Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestOptimizer.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestOptimizer.java?rev=1371979&r1=1371978&r2=1371979&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestOptimizer.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/optimize/TestOptimizer.java Sat Aug 11 17:12:16 2012
@@ -20,6 +20,7 @@ package com.hp.hpl.jena.sparql.algebra.o
import org.junit.Test ;
import org.openjena.atlas.junit.BaseTest ;
+import org.openjena.atlas.lib.StrUtils ;
import com.hp.hpl.jena.query.ARQ ;
import com.hp.hpl.jena.query.Query ;
@@ -49,7 +50,6 @@ public class TestOptimizer extends BaseT
check(queryString, opExpectedString) ;
}
-
@Test public void query_rename_02()
{
String queryString =
@@ -60,14 +60,7 @@ public class TestOptimizer extends BaseT
" (bgp (triple ?s ?p ?o))\n" +
" (slice _ 50\n" +
" (project (?v)\n" +
-
-// // Old - no BGP merge
-// " (sequence\n" +
-// " (bgp (triple ?/x ?/y ?v))\n" +
-// " (bgp (triple ?/a ?/y ?/w)))" +
- // Merged BGP
"(bgp (triple ?/x ?/y ?v) (triple ?/a ?/y ?/w))" +
-
"))))" ;
check(queryString, opExpectedString) ;
}
@@ -313,6 +306,25 @@ public class TestOptimizer extends BaseT
}
}
+ @Test public void optimize_01()
+ {
+ String queryString = "SELECT * { { ?s ?p ?x } UNION { ?s1 ?p1 ?x } FILTER(?x = <urn:x1> || ?x = <urn:x2>) }" ;
+ String opExpectedString = StrUtils.strjoinNL(
+ "(disjunction",
+ " (assign ((?x <urn:x1>))" ,
+ " (union" ,
+ " (bgp (triple ?s ?p <urn:x1>))" ,
+ " (bgp (triple ?s1 ?p1 <urn:x1>))))" ,
+ " (assign ((?x <urn:x2>))" ,
+ " (union" ,
+ " (bgp (triple ?s ?p <urn:x2>))" ,
+ " (bgp (triple ?s1 ?p1 <urn:x2>)))))" ) ;
+ check(queryString, opExpectedString) ;
+ }
+
+
+
+
private static void check(String queryString, String opExpectedString)
{
queryString = "PREFIX : <http://example/>\n"+queryString ;