Repository: jena Updated Branches: refs/heads/master 5f625be1c -> 8d4cb5600
JENA-1170 : Map<Var, ? extends Var> and allow var -> var substitution. Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/8d4cb560 Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/8d4cb560 Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/8d4cb560 Branch: refs/heads/master Commit: 8d4cb56005332638a24e13fda571680a8ed23fa0 Parents: 5f625be Author: Andy Seaborne <[email protected]> Authored: Wed Apr 27 17:30:50 2016 +0100 Committer: Andy Seaborne <[email protected]> Committed: Wed Apr 27 17:30:50 2016 +0100 ---------------------------------------------------------------------- .../syntax/syntaxtransform/ElementTransformSubst.java | 2 +- .../sparql/syntax/syntaxtransform/NodeTransformSubst.java | 4 ++-- .../sparql/syntax/syntaxtransform/QueryTransformOps.java | 9 +++++---- 3 files changed, 8 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/8d4cb560/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/ElementTransformSubst.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/ElementTransformSubst.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/ElementTransformSubst.java index 2ae2cad..8707f93 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/ElementTransformSubst.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/ElementTransformSubst.java @@ -40,7 +40,7 @@ import org.apache.jena.sparql.syntax.ElementTriplesBlock ; public class ElementTransformSubst extends ElementTransformCopyBase { private final NodeTransform nodeTransform ; - public ElementTransformSubst(Map<Var, Node> mapping) { + public ElementTransformSubst(Map<Var, ? extends Node> mapping) { this.nodeTransform = new NodeTransformSubst(mapping) ; } http://git-wip-us.apache.org/repos/asf/jena/blob/8d4cb560/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/NodeTransformSubst.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/NodeTransformSubst.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/NodeTransformSubst.java index bdb0441..98b5905 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/NodeTransformSubst.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/NodeTransformSubst.java @@ -26,9 +26,9 @@ import org.apache.jena.sparql.graph.NodeTransform ; /** A {@link NodeTransform} substituting variables for {@link Node}s. */ public class NodeTransformSubst implements NodeTransform { - private final Map<Var, Node> map ; + private final Map<Var, ? extends Node> map ; - NodeTransformSubst(Map<Var, Node> map) { + NodeTransformSubst(Map<Var, ? extends Node> map) { this.map = map ; } http://git-wip-us.apache.org/repos/asf/jena/blob/8d4cb560/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java index c05823a..d5c33c3 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/syntax/syntaxtransform/QueryTransformOps.java @@ -39,7 +39,7 @@ import org.apache.jena.sparql.syntax.ElementGroup ; /** Support for transformation of query abstract syntax. */ public class QueryTransformOps { - public static Query transform(Query query, Map<Var, Node> substitutions) { + public static Query transform(Query query, Map<Var, ? extends Node> substitutions) { ElementTransform eltrans = new ElementTransformSubst(substitutions) ; NodeTransform nodeTransform = new NodeTransformSubst(substitutions) ; ExprTransform exprTrans = new ExprTransformNodeElement(nodeTransform, eltrans) ; @@ -83,11 +83,12 @@ public class QueryTransformOps { if ( ev != ev2 ) { if ( e != null ) throw new ARQException("Can't substitute " + v + " because it's used as an AS variable") ; - if ( ev2 instanceof NodeValue ) { - // Convert to (substit value AS ?var) + if ( ev2.isConstant() || ev2.isVariable() ) { + // Convert to (substitute value AS ?var) map.put(v, ev2) ; continue ; - } else + } + else throw new ARQException("Can't substitute " + v + " because it's not a simple value: " + ev2) ; } if ( e == null )
