/** * Walking OP for Optional in SPARQL algebra. */ private void optionalVisit(final Op op) { OpWalker.walk(op, this); }
public static Op transform(Op op) { TransformUnionQuery t = new TransformUnionQuery() ; Op op2 = Transformer.transform(t, op, new Pusher(t.currentGraph), new Popper(t.currentGraph)) ; return op2 ; }
public static void visibleVars(Op op, Set<Var> acc) { OpVarsPattern visitor = new OpVarsPattern(acc, true) ; // Does not work yet for new walker. OpWalker.walk(new OpWalkerVisitorVisible(visitor, acc), op) ; }
public static Tuple<Set<Var>> mentionedVarsByPosition(Op op) { Set<Var> graphAcc = collector() ; Set<Var> subjAcc = collector() ; Set<Var> predAcc = collector() ; Set<Var> objAcc = collector() ; Set<Var> unknownAcc = collector() ; OpVarsPatternWithPositions visitor = new OpVarsPatternWithPositions(graphAcc, subjAcc, predAcc, objAcc, unknownAcc, false); OpWalker.walk(op, visitor); return TupleFactory.tuple(graphAcc, subjAcc, predAcc, objAcc, unknownAcc); }
private ElementGroup asElementGroup(Op op) { startSubGroup() ; op.visit(this) ; return endSubGroup() ; }
public static void fixedVars(Op op, Set<Var> acc) { OpVarsPattern visitor = new OpVarsPattern(acc, true) ; OpWalker.walk(new OpWalkerVisitorFixed(visitor, acc), op) ; }
public static Op quadizeBlock(Op op) { final Deque<QuadSlot> stack = new ArrayDeque<>() ; QuadSlot qSlot = new QuadSlot(Quad.defaultGraphNodeGenerated, Quad.defaultGraphNodeGenerated) ; stack.push(qSlot) ; // Starting condition OpVisitor before = new Pusher(stack) ; OpVisitor after = new Popper(stack) ; TransformQuadBlockGraph qg = new TransformQuadBlockGraph(stack, before, after) ; return Transformer.transformSkipService(qg, null, op, before, after) ; }
public static Op quadize(Op op) { final Deque<QuadSlot> stack = new ArrayDeque<>() ; QuadSlot qSlot = new QuadSlot(Quad.defaultGraphNodeGenerated, Quad.defaultGraphNodeGenerated) ; stack.push(qSlot) ; // Starting condition OpVisitor before = new Pusher(stack) ; OpVisitor after = new Popper(stack) ; TransformQuadGraph qg = new TransformQuadGraph(stack, before, after) ; return Transformer.transformSkipService(qg, null, op, before, after) ; }
public static void walk(Op op, OpVisitor visitor) { // new walker :: this works // Walker.walk(op, visitor); walk(new OpWalkerVisitor(visitor, null, null), op) ; }
public static void mentionedVars(Op op, Set<Var> acc) { OpVarsMentioned visitor = new OpVarsMentioned(acc) ; OpWalker.walk(op, visitor) ; }
public void walk(Op op) { if ( op == null ) return ; if ( opDepth == opDepthLimit ) // No deeper. return ; opDepth++ ; try { op.visit(this); } finally { opDepth-- ; } }
@Override public Op transform(OpFilter opFilter, Op op) { // Can't really do much here because we are working in node id space, and the lexicial forms etc // of nodes aren't available until the bridge is added. // See QueryCompilerMain. return super.transform(opFilter, op) ; }
@Override public Op apply(Transform transform, OpVisitor before, OpVisitor after) { Op opx = Transformer.transformSkipService(transform, null, op, before, after) ; return new OpExtTest(opx) ; }
/** Turn an algebra expression into quadblock form */ public static Op toQuadBlockForm(Op op) { return AlgebraQuad.quadizeBlock(op) ; }
private static Element unwrapGroupOfOnePathBlock(Element e) { Element e2 = getElementOfGroupOfOne(e) ; if ( e2 != null ) return e2 ; return e ; }
private ElementGroup endSubGroup() { ElementGroup g = pop() ; ElementGroup r = currentGroup ; currentGroup = g ; return r ; }
public static Tuple<Set<Var>> mentionedVarsByPosition(Op... ops) { Set<Var> graphAcc = collector() ; Set<Var> subjAcc = collector() ; Set<Var> predAcc = collector() ; Set<Var> objAcc = collector() ; Set<Var> unknownAcc = collector() ; OpVarsPatternWithPositions visitor = new OpVarsPatternWithPositions(graphAcc, subjAcc, predAcc, objAcc, unknownAcc, false); for (Op op : ops) OpWalker.walk(op, visitor); return TupleFactory.tuple(graphAcc, subjAcc, predAcc, objAcc, unknownAcc); }