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 2013/02/08 15:03:56 UTC

svn commit: r1444017 - in /jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql: algebra/Transformer.java algebra/op/OpConditional.java algebra/op/OpLeftJoin.java expr/ExprWalker.java graph/NodeTransformOp.java

Author: andy
Date: Fri Feb  8 14:03:56 2013
New Revision: 1444017

URL: http://svn.apache.org/r1444017
Log:
Rationalization and checking post issue J-340.

Modified:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/Transformer.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpConditional.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpLeftJoin.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/ExprWalker.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/graph/NodeTransformOp.java

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/Transformer.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/Transformer.java?rev=1444017&r1=1444016&r2=1444017&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/Transformer.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/Transformer.java Fri Feb  8 14:03:56 2013
@@ -151,14 +151,14 @@ public class Transformer
 
         private ExprList transform(ExprList exprList, ExprTransform exprTransform)
         {
-            if ( exprTransform == null )
+            if ( exprList == null || exprTransform == null )
                 return exprList ;
             return ExprTransformer.transform(exprTransform, exprList) ;
         }
 
         private Expr transform(Expr expr, ExprTransform exprTransform)
         {
-            if ( exprTransform == null )
+            if ( expr == null || exprTransform == null )
                 return expr ;
             return ExprTransformer.transform(exprTransform, expr) ;
         }
@@ -326,9 +326,15 @@ public class Transformer
         }
         
         @Override
-        protected void visitFilter(OpFilter opFilter) {
+        protected void visitFilter(OpFilter opFilter)
+        {
+            Op subOp = null ;
+            if ( opFilter.getSubOp() != null )
+                subOp = pop() ;
+            boolean changed = ( opFilter.getSubOp() != subOp ) ;
+            
+            // Now any expressions.
             ExprList ex = new ExprList() ;
-            boolean changed = false ;
             for ( Expr e : opFilter.getExprs() )
             {
                 Expr e2 = transform(e, exprTransform) ;
@@ -338,11 +344,7 @@ public class Transformer
             }
             OpFilter f = opFilter ;
             if ( changed )
-                f = (OpFilter)OpFilter.filter(ex, opFilter.getSubOp()) ;
-            // As Op1.
-            Op subOp = null ;
-            if ( f.getSubOp() != null )
-                subOp = pop() ;
+                f = (OpFilter)OpFilter.filter(ex, subOp) ;
             push(f.apply(transform, subOp)) ;
         }
         

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpConditional.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpConditional.java?rev=1444017&r1=1444016&r2=1444017&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpConditional.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpConditional.java Fri Feb  8 14:03:56 2013
@@ -30,10 +30,8 @@ import com.hp.hpl.jena.sparql.util.NodeI
  *  execute the expression (i.e. index-join it to the element
  *  in the input stream).  If it matches, return those results.
  *  If it does not, return the input stream element. */
-public class OpConditional extends Op2 //OpN??
+public class OpConditional extends Op2
 {
-    // Extends to OpN with a series of optionals.
-    
     public OpConditional(Op left, Op right)
     {
         super(left, right) ;

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpLeftJoin.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpLeftJoin.java?rev=1444017&r1=1444016&r2=1444017&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpLeftJoin.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/op/OpLeftJoin.java Fri Feb  8 14:03:56 2013
@@ -29,7 +29,13 @@ import com.hp.hpl.jena.sparql.util.NodeI
 public class OpLeftJoin extends Op2
 {
     ExprList expressions = null ;
-    
+
+    /** Guaranteed to return a new left join*/
+    public static OpLeftJoin createLeftJoin(Op left, Op right, ExprList exprs)
+    { 
+        return new OpLeftJoin(left, right, exprs) ;
+    }
+
     public static Op create(Op left, Op right, ExprList exprs)
     { 
         return new OpLeftJoin(left, right, exprs) ;

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/ExprWalker.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/ExprWalker.java?rev=1444017&r1=1444016&r2=1444017&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/ExprWalker.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/ExprWalker.java Fri Feb  8 14:03:56 2013
@@ -31,7 +31,11 @@ public class ExprWalker //implements Exp
     public void walk(Expr expr) { expr.visit(visitor) ; }
 
     static public void walk(ExprVisitor visitor, Expr expr)
-    { expr.visit(new WalkerBottomUp(visitor)) ; }
+    {
+        if ( expr == null )
+            return ;
+        expr.visit(new WalkerBottomUp(visitor)) ;
+    }
     
 //    static public void walk(ExprVisitor visitor, Expr expr)
 //    { expr.visit(new WalkerTopDown(visitor)) ; }

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/graph/NodeTransformOp.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/graph/NodeTransformOp.java?rev=1444017&r1=1444016&r2=1444017&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/graph/NodeTransformOp.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/graph/NodeTransformOp.java Fri Feb  8 14:03:56 2013
@@ -37,7 +37,7 @@ import com.hp.hpl.jena.sparql.path.Path 
 
 class NodeTransformOp extends TransformCopy
 {
-    // This finds everywhere that node can lurk in an alegra expression:
+    // This finds everywhere that node can lurk in an algebra expression:
     //   BGPs, paths, triples, quads
     //   GRAPH, GRAPH{} (DatasetNames)
     //   Filters, including inside EXISTS and expressions in LeftJoin
@@ -191,8 +191,6 @@ class NodeTransformOp extends TransformC
     @Override public Op transform(OpGroup opGroup, Op subOp)
     {
         VarExprList groupVars = NodeTransformLib.transform(transform, opGroup.getGroupVars()) ;
-        
-        
         // Rename the vars in the expression as well.
         // .e.g max(?y) ==> max(?/y)  
         // These need renaming as well.