/** Transform a query based on a mapping from {@link Var} variable to replacement {@link Node}. */ 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); return transform(query, eltrans, exprTrans); }
/** Transform an {@link Update} based on a mapping from {@link Var} variable to replacement {@link Node}. */ public static Update transform(Update update, Map<Var, Node> substitutions) { ElementTransform eltrans = new ElementTransformSubst(substitutions) ; NodeTransform nodeTransform = new NodeTransformSubst(substitutions) ; ExprTransform exprTrans = new ExprTransformNodeElement(nodeTransform, eltrans) ; return transform(update, eltrans, exprTrans) ; }
/** * Transform a query based on a mapping from variable name to replacement * {@link RDFNode} (a {@link Resource} (or blank node) or a {@link Literal}). */ public static Query transformQuery(Query query, Map<String, ? extends RDFNode> substitutions) { // Must have a different name because of Java's erasure of parameterised types. Map<Var, Node> map = TransformElementLib.convert(substitutions); return transform(query, map); }
public static Query transform(Query query, ElementTransform transform) { ExprTransform noop = new ExprTransformApplyElementTransform(transform); return transform(query, transform, noop); }
private Element fixupGroupsOfOne(ElementGroup eg) { ElementTransform transform = new ElementTransformCleanGroupsOfOne() ; ExprTransform exprTransform = new ExprTransformApplyElementTransform(transform) ; Element el2 = ElementTransformer.transform(eg, transform, exprTransform) ; // Top level is always a group or a subquery. if ( ! ( el2 instanceof ElementGroup ) && ! ( el2 instanceof ElementSubQuery ) ) { ElementGroup eg2 = new ElementGroup() ; eg2.addElement(el2); el2 = eg2 ; } return el2 ; }
@Override public void visit(ElementExists el) { Element elt = el.getElement() ; Element elt1 = subElement(elt) ; Element el2 = transform.transform(el, elt1) ; push(el2) ; }
@Override public void visit(ElementGroup el) { ElementGroup newElt = new ElementGroup() ; transformFromTo(el.getElements(), newElt.getElements()) ; Element el2 = transform.transform(el, newElt.getElements()) ; push(el2) ; }
/** * Transform an {@link Update} based on a mapping from variable name to replacement * {@link RDFNode} (a {@link Resource} (or blank node) or a {@link Literal}). */ public static Update transformUpdate(Update update, Map<String, ? extends RDFNode> substitutions) { Map<Var, Node> map = TransformElementLib.convert(substitutions); return transform(update, map); }
protected Element transformation(Element element, ElementTransform transform, ExprTransform exprTransform, ElementVisitor beforeVisitor, ElementVisitor afterVisitor) { ApplyElementTransformVisitor v = new ApplyElementTransformVisitor(transform, exprTransform) ; return transformation(v, element, beforeVisitor, afterVisitor) ; }
public ApplyElementTransformVisitor(ElementTransform transform, ExprTransform exprTransform) { if ( transform == null ) transform = ElementTransformIdentity.get() ; this.transform = transform ; this.exprTransform = exprTransform ; }
private Node transformNode(Node n) { if ( exprTransform == null ) return n ; return TransformElementLib.apply(n, exprTransform) ; }
/** Transform an {@link UpdateRequest} based on a mapping from {@link Var} variable to replacement {@link Node}. */ public static UpdateRequest transform(UpdateRequest update, Map<Var, Node> substitutions) { ElementTransform eltrans = new ElementTransformSubst(substitutions) ; NodeTransform nodeTransform = new NodeTransformSubst(substitutions) ; ExprTransform exprTrans = new ExprTransformNodeElement(nodeTransform, eltrans) ; return transform(update, eltrans, exprTrans) ; }
@Override public void visit(ElementNotExists el) { Element elt = el.getElement() ; Element elt1 = subElement(elt) ; Element el2 = transform.transform(el, elt1) ; push(el2) ; }
/** * Transform an {@link UpdateRequest} based on a mapping from variable name to replacement * {@link RDFNode} (a {@link Resource} (or blank node) or a {@link Literal}). */ public static UpdateRequest transformUpdate(UpdateRequest update, Map<String, ? extends RDFNode> substitutions) { Map<Var, Node> map = TransformElementLib.convert(substitutions); return transform(update, map); }