/** Transform an algebra expression */ public static Element transform(Element element, ElementTransform transform) { return transform(element, transform, null, null, null) ; }
public static Element transform(Element element, Map<Node, BinaryRelation> virtualPredicates) { ElementTransformVirtualPredicates elementTransform = new ElementTransformVirtualPredicates(virtualPredicates); Element result = ElementTransformer.transform(element, elementTransform, new ExprTransformCopy(false)); return result; }
public static Element applyNodeTransformJena(Element element, NodeTransform nodeTransform) { org.apache.jena.sparql.syntax.syntaxtransform.ElementTransform elementTransform = new ElementTransformSubst2(nodeTransform);//new ElementTransformSubst2(nodeTransform); ExprTransform exprTransform = new org.apache.jena.sparql.syntax.syntaxtransform.ExprTransformNodeElement(nodeTransform, elementTransform); //Element result = ElementTransformer.transform(element, elementTransform, exprTransform); // Element result = org.aksw.jena_sparql_api.backports.syntaxtransform.ElementTransformer.transform(element, elementTransform, exprTransform); Element result = org.apache.jena.sparql.syntax.syntaxtransform.ElementTransformer.transform(element, elementTransform, exprTransform); return result; }
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 Expr transform(ExprFunctionOp funcOp, ExprList args, Op opArg) { // Syntax phased only - ignore args and opArg Element elt = funcOp.getElement() ; Element elt1 = ElementTransformer.transform(elt, elementTransform, this, beforeVisitor, afterVisitor) ; if ( elt == elt1 ) return funcOp ; else { if ( funcOp instanceof E_Exists ) return new E_Exists(elt1) ; if ( funcOp instanceof E_NotExists ) return new E_NotExists(elt1) ; throw new InternalErrorException("Unknown ExprFunctionOp: " + funcOp.getFunctionSymbol()) ; } } }
@Override public Expr transform(ExprFunctionOp funcOp, ExprList args, Op opArg) { Element el2 = ElementTransformer.transform(funcOp.getElement(), transform) ; if ( el2 == funcOp.getElement() ) return super.transform(funcOp, args, opArg) ; if ( funcOp instanceof E_Exists ) return new E_Exists(el2) ; if ( funcOp instanceof E_NotExists ) return new E_NotExists(el2) ; throw new ARQInternalErrorException("Unrecognized ExprFunctionOp: \n"+funcOp) ; } }
@Override public void visit(UpdateModify update) { Element el = update.getWherePattern() ; Element el2 = ElementTransformer.transform(el, elTransform, exprTransform) ; List<Quad> del = update.getDeleteQuads() ; List<Quad> del1 = transform(del) ; List<Quad> ins = update.getInsertQuads() ; List<Quad> ins1 = transform(ins) ; UpdateModify mod = new UpdateModify() ; addAll(mod.getDeleteAcc(), del1) ; addAll(mod.getInsertAcc(), ins1) ; mod.setElement(el2); result = mod ; }
/** Transform a query using {@link ElementTransform} and {@link ExprTransform}. * It is the responsibility of these transforms to transform to a legal SPARQL query. */ public static Query transform(Query query, ElementTransform transform, ExprTransform exprTransform) { Query q2 = QueryTransformOps.shallowCopy(query); // "Shallow copy with transform." transformVarExprList(q2.getProject(), exprTransform); transformVarExprList(q2.getGroupBy(), exprTransform); transformExprList(q2.getHavingExprs(), exprTransform); if (q2.getOrderBy() != null) { transformSortConditions(q2.getOrderBy(), exprTransform); } // ?? DOES NOT WORK: transformExprListAgg(q2.getAggregators(), exprTransform) ; ?? // if ( q2.hasHaving() ) {} // if ( q2.hasAggregators() ) {} Element el = q2.getQueryPattern(); Element el2 = ElementTransformer.transform(el, transform, exprTransform); // Top level is always a group. if (!(el2 instanceof ElementGroup)) { ElementGroup eg = new ElementGroup(); eg.addElement(el2); el2 = eg; } q2.setQueryPattern(el2); return q2; }