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/03/11 18:56:41 UTC
svn commit: r1455261 - in
/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql:
algebra/Transformer.java expr/Expr.java graph/NodeTransformLib.java
lib/NodeConverters.java
Author: andy
Date: Mon Mar 11 17:56:41 2013
New Revision: 1455261
URL: http://svn.apache.org/r1455261
Log:
JENA-389
Allow the transformation to take separate algbera and expression transformation.
Renaming nodes takes full control of the process, not relying on
the Transformer to traverse expressions.
Removed:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/lib/NodeConverters.java
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/expr/Expr.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/graph/NodeTransformLib.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=1455261&r1=1455260&r2=1455261&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 Mon Mar 11 17:56:41 2013
@@ -47,10 +47,21 @@ public class Transformer
public static Op transform(Transform transform, Op op)
{ return get().transformation(transform, op, null, null) ; }
+ /** Transform an algebra expression and the expressions */
+ public static Op transform(Transform transform, ExprTransform exprTransform, Op op)
+ { return get().transformation(transform, exprTransform, op, null, null) ; }
+
+ /** Transformation with specific Transform and default ExprTransform (apply transform inside pattern expressions like NOT EXISTS) */
public static Op transform(Transform transform, Op op, OpVisitor beforeVisitor, OpVisitor afterVisitor)
{
return get().transformation(transform, op, beforeVisitor, afterVisitor) ;
}
+
+ /** Transformation with specific Transform and ExprTransform applied */
+ public static Op transform(Transform transform, ExprTransform exprTransform, Op op, OpVisitor beforeVisitor, OpVisitor afterVisitor)
+ {
+ return get().transformation(transform, exprTransform, op, beforeVisitor, afterVisitor) ;
+ }
/** Transform an algebra expression except skip (leave alone) any OpService nodes */
public static Op transformSkipService(Transform transform, Op op)
@@ -59,6 +70,13 @@ public class Transformer
}
/** Transform an algebra expression except skip (leave alone) any OpService nodes */
+ public static Op transformSkipService(Transform transform, ExprTransform exprTransform, Op op)
+ {
+ return transformSkipService(transform, exprTransform, op, null, null) ;
+ }
+
+
+ /** Transform an algebra expression except skip (leave alone) any OpService nodes */
public static Op transformSkipService(Transform transform, Op op, OpVisitor beforeVisitor, OpVisitor afterVisitor)
{
// Skip SERVICE
@@ -66,7 +84,6 @@ public class Transformer
{
// Simplest way but still walks the OpService subtree (and throws away the transformation).
Transform walker = new TransformSkipService(transform) ;
- ExprTransform exprTransform = new ExprTransformApplyTransform(transform, beforeVisitor, afterVisitor) ;
return Transformer.transform(walker, op, beforeVisitor, afterVisitor) ;
}
else
@@ -79,7 +96,26 @@ public class Transformer
return v.result() ;
}
}
-
+
+ /** Transform an algebra expression except skip (leave alone) any OpService nodes */
+ public static Op transformSkipService(Transform transform, ExprTransform exprTransform, Op op, OpVisitor beforeVisitor, OpVisitor afterVisitor)
+ {
+ // Skip SERVICE
+ if ( true )
+ {
+ // Simplest way but still walks the OpService subtree (and throws away the transformation).
+ Transform walker = new TransformSkipService(transform) ;
+ return Transformer.transform(walker, exprTransform, op, beforeVisitor, afterVisitor) ;
+ }
+ else
+ {
+ ApplyTransformVisitorServiceAsLeaf v = new ApplyTransformVisitorServiceAsLeaf(transform, exprTransform) ;
+ WalkerVisitorSkipService walker = new WalkerVisitorSkipService(v, beforeVisitor, afterVisitor) ;
+ OpWalker.walk(walker, op) ;
+ return v.result() ;
+ }
+ }
+
/** Transform an Op - not recursively */
public static Op transformOne(Transform transform, Op op)
{
@@ -93,6 +129,11 @@ public class Transformer
protected Op transformation(Transform transform, Op op, OpVisitor beforeVisitor, OpVisitor afterVisitor)
{
ExprTransform exprTransform = new ExprTransformApplyTransform(transform, beforeVisitor, afterVisitor) ;
+ return transformation(transform, exprTransform, op, beforeVisitor, afterVisitor) ;
+ }
+
+ protected Op transformation(Transform transform, ExprTransform exprTransform, Op op, OpVisitor beforeVisitor, OpVisitor afterVisitor)
+ {
ApplyTransformVisitor v = new ApplyTransformVisitor(transform, exprTransform) ;
return transformation(v, op, beforeVisitor, afterVisitor) ;
}
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/Expr.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/Expr.java?rev=1455261&r1=1455260&r2=1455261&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/Expr.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/Expr.java Mon Mar 11 17:56:41 2013
@@ -61,7 +61,7 @@ public interface Expr
*/
public NodeValue eval(Binding binding, FunctionEnv env) ;
- // These (copySubstitute, copyNodeTransform) predate transform support and should be chnaged.
+ // These (copySubstitute, applyNodeTransform) predate transform support and should be changed.
// But they work so there is no hurry.
/** Deep copy with substitution */
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/graph/NodeTransformLib.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/graph/NodeTransformLib.java?rev=1455261&r1=1455260&r2=1455261&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/graph/NodeTransformLib.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/graph/NodeTransformLib.java Mon Mar 11 17:56:41 2013
@@ -43,9 +43,8 @@ public class NodeTransformLib
public static Op transform(NodeTransform nodeTransform, Op op)
{
Transform opTransform = new NodeTransformOp(nodeTransform) ;
- return Transformer.transform(opTransform, op) ;
+ return Transformer.transform(opTransform, null, op) ; // No expr transform - we do it ourselves.
}
-
/** Do a node->node conversion of a BGP - return original BGP for "no change" */
public static BasicPattern transform(NodeTransform nodeTransform, BasicPattern pattern)