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/06/30 16:29:08 UTC

svn commit: r1355742 - in /jena/trunk/jena-arq/src: main/java/com/hp/hpl/jena/sparql/algebra/op/ main/java/com/hp/hpl/jena/sparql/algebra/optimize/ test/java/com/hp/hpl/jena/sparql/algebra/

Author: andy
Date: Sat Jun 30 14:29:06 2012
New Revision: 1355742

URL: http://svn.apache.org/viewvc?rev=1355742&view=rev
Log:
Make OpJoin.create skip nulls (for convenience).

Added:
    jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/AbstractTestUnionTransform.java
      - copied, changed from r1355059, jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/UnionTransformTests.java
Removed:
    jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/UnionTransformTests.java
Modified:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpJoin.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpUnion.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPattern2Join.java
    jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestUnionTransformQuads.java
    jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestUnionTransformTriples.java

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpJoin.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpJoin.java?rev=1355742&r1=1355741&r2=1355742&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpJoin.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpJoin.java Sat Jun 30 14:29:06 2012
@@ -28,25 +28,34 @@ import com.hp.hpl.jena.sparql.util.NodeI
 
 public class OpJoin extends Op2
 {
+    /** Create join - an argument of null is 
+     * simply dropped so Join.create(null, op) is op and Join.create(op,null) is op.
+     */
     public static Op create(Op left, Op right)
     {
-        // Don't simplify here - changes SPARQL for OPTIONAL {{ FILTER }}
-        // The  {{}} results in (join unit (filter ...)) the filter is not moved
-        // into the LeftJoin.  
-        
-//        // Inline simplification (too early - changes SPARQL for OPTIONAL {{ FILTER }} 
-//        if ( simplifyEarly )
-//        {
-//            if ( isJoinIdentify(left) )
-//                return right ;
-//
-//            if ( isJoinIdentify(right) )
-//                return left ;
-//        }
-        
+        if ( left == null )
+            return right ;
+        if ( right == null )
+            return left ;
         return new OpJoin(left, right) ;
     }
     
+    /** Create join, removing any joins with the identity table and any nulls.
+     *  <br/>Join.create(null, op) is op.
+     *  <br/>Join.create(op, null) is op.
+     *  <br/>Join.create(TableUnit, op) is op.
+     *  <br/>Join.create(op, TableUnit) is op.
+     */
+    public static Op createReduce(Op left, Op right)
+    {
+        if ( left == null || isJoinIdentify(left) )
+            return right ;
+        if ( right == null || isJoinIdentify(right) )
+            return left ;
+        return new OpJoin(left, right) ;
+    }
+    
+
     public static boolean isJoinIdentify(Op op)
     {
         if ( ! ( op instanceof OpTable ) )

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpUnion.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpUnion.java?rev=1355742&r1=1355741&r2=1355742&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpUnion.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpUnion.java Sat Jun 30 14:29:06 2012
@@ -26,6 +26,7 @@ import com.hp.hpl.jena.sparql.util.NodeI
 
 public class OpUnion extends Op2
 {
+    /** Create a union, dropping any nulls. */
     public static Op create(Op left, Op right)
     {
         if ( left == null )

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java?rev=1355742&r1=1355741&r2=1355742&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPathFlatternStd.java Sat Jun 30 14:29:06 2012
@@ -76,22 +76,13 @@ public class TransformPathFlatternStd ex
     
     static VarAlloc varAlloc = new VarAlloc(ARQConstants.allocVarAnonMarker+"Q") ;
     
-    static Op join(Op op1, Op op2)
+    private static Op join(Op op1, Op op2)
     {
-        if ( op1 == null )
-            return op2 ;
-        if ( op2 == null )
-            return op1 ;
         return OpJoin.create(op1, op2) ;
     }
     
-    static Op union(Op left, Op right)
+    private static Op union(Op left, Op right)
     {
-        if ( left == null )
-            return right ;
-        if ( right == null )
-            return left ;
-
         return new OpUnion(left, right) ;
     }
     

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPattern2Join.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPattern2Join.java?rev=1355742&r1=1355741&r2=1355742&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPattern2Join.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/TransformPattern2Join.java Sat Jun 30 14:29:06 2012
@@ -61,13 +61,8 @@ public class TransformPattern2Join exten
         return op ;
     }
     
-    
     private static Op join(Op left, Op right)
     {
-        if ( left == null || OpJoin.isJoinIdentify(left) )
-          return right ;
-      if ( right == null || OpJoin.isJoinIdentify(right) )
-          return left ;
-      return OpJoin.create(left, right) ;
-  }
+      return OpJoin.createReduce(left, right) ;
+    }
 }

Copied: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/AbstractTestUnionTransform.java (from r1355059, jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/UnionTransformTests.java)
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/AbstractTestUnionTransform.java?p2=jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/AbstractTestUnionTransform.java&p1=jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/UnionTransformTests.java&r1=1355059&r2=1355742&rev=1355742&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/UnionTransformTests.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/AbstractTestUnionTransform.java Sat Jun 30 14:29:06 2012
@@ -28,7 +28,7 @@ import com.hp.hpl.jena.sparql.core.Quad 
 import com.hp.hpl.jena.sparql.engine.QueryIterator ;
 import com.hp.hpl.jena.sparql.engine.binding.Binding ;
 
-public abstract class UnionTransformTests extends BaseTest
+public abstract class AbstractTestUnionTransform extends BaseTest
 {
     // Tests of patterns over the implicit union of all named graphs.
     // Two sets - for triples and for quads

Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestUnionTransformQuads.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestUnionTransformQuads.java?rev=1355742&r1=1355741&r2=1355742&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestUnionTransformQuads.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestUnionTransformQuads.java Sat Jun 30 14:29:06 2012
@@ -20,7 +20,7 @@ package com.hp.hpl.jena.sparql.algebra;
 
 import com.hp.hpl.jena.sparql.sse.SSE ;
 
-public class TestUnionTransformQuads extends UnionTransformTests  
+public class TestUnionTransformQuads extends AbstractTestUnionTransform  
 {
     @Override
     protected Op op(String pattern)

Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestUnionTransformTriples.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestUnionTransformTriples.java?rev=1355742&r1=1355741&r2=1355742&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestUnionTransformTriples.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/algebra/TestUnionTransformTriples.java Sat Jun 30 14:29:06 2012
@@ -20,7 +20,7 @@ package com.hp.hpl.jena.sparql.algebra;
 
 import com.hp.hpl.jena.sparql.sse.SSE ;
 
-public class TestUnionTransformTriples extends UnionTransformTests  
+public class TestUnionTransformTriples extends AbstractTestUnionTransform  
 {
     @Override
     protected Op op(String pattern)