@Override public void visit(OpProject opProject) { // The walker (WalkerVisitorVisible) handles this // for visible variables, not mentioned variable collecting. // The visibleOnly/clear is simply to be as general as possible. List<Var> vs = opProject.getVars(); if (visibleOnly) { clear(graphAcc, vs); clear(subjAcc, vs); clear(predAcc, vs); clear(objAcc, vs); } for (Var v : vs) { if (!graphAcc.contains(v) && !subjAcc.contains(v) && !predAcc.contains(v) && !objAcc.contains(v)) { addVar(unknownAcc, v); } } }
@Override public void visit(OpBGP opBGP) { vars(opBGP.getPattern()) ; }
@Override public void visit(OpQuadPattern quadPattern) { addVar(graphAcc, quadPattern.getGraphNode()) ; vars(quadPattern.getBasicPattern()) ; }
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); }
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); }