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.