public void processJoin(Collection<Op> children) { Set<Var> visibleVars = new HashSet<>(); for(Op child : children) { if(child != current) { OpVars.visibleVars(child, visibleVars); } } Set<Var> originalVars = MultimapUtils.getAll(varDeps, visibleVars); //Set<Var> overlapVars = Sets.intersection(projectedVars, originalVars); referencedVars.addAll(originalVars); }
public static Set<Var> visibleVars(Op op) { Set<Var> acc = collector() ; visibleVars(op, acc) ; return acc ; }
private static boolean testSpecialCaseUnused(Op op, List<Pair<Var, NodeValue>> equalities, ExprList remaining) { // If the op does not contain the var at all, for some equality // then the filter expression will be "eval unbound" i.e. false. // We can return empty table. Set<Var> patternVars = OpVars.visibleVars(op); for (Pair<Var, NodeValue> p : equalities) { if (!patternVars.contains(p.getLeft())) return true; } return false; }
private static boolean testSpecialCaseUnused(Op op, List<Pair<Var, NodeValue>> equalities, ExprList remaining) { // If the op does not contain the var at all, for some equality // then the filter expression will be "eval unbound" i.e. false. // We can return empty table. Set<Var> patternVars = OpVars.visibleVars(op); for (Pair<Var, NodeValue> p : equalities) { if (!patternVars.contains(p.getLeft())) return true; } return false; }
public void processJoin(Collection<Op> children) { Set<Var> visibleVars = new HashSet<>(); for(Op child : children) { if(child != current) { OpVars.visibleVars(child, visibleVars); } } Set<Var> originalVars = MultimapUtils.getAll(varDeps, visibleVars); //Set<Var> overlapVars = Sets.intersection(projectedVars, originalVars); referencedVars.addAll(originalVars); }
/** * Like OpVars.visibleVars, but filters out non-named vars Filter out * non-named vars * * @param op * @return */ public static Set<Var> visibleNamedVars(Op op) { Set<Var> result = OpVars.visibleVars(op).stream().filter(x -> x.isNamedVar()) .collect(Collectors.toCollection(Sets::newLinkedHashSet)); return result; }
@Override public Op copy(List<Op> subOps) { if(subOps.size() != 1) { throw new RuntimeException("Exactly 1 subOp expected, instead got: " + subOps); } Op subOp = subOps.get(0); Set<Var> initialVars = OpVars.visibleVars(subOp); OpDistinctExtendFilter result = new OpDistinctExtendFilter(subOps.get(0), initialVars); return result; }
@Override public Op copy(List<Op> subOps) { if(subOps.size() != 1) { throw new RuntimeException("Exactly 1 subOp expected, instead got: " + subOps); } Op subOp = subOps.get(0); Set<Var> initialVars = OpVars.visibleVars(subOp); OpDistinctExtendFilter result = new OpDistinctExtendFilter(subOps.get(0), initialVars); return result; }
private static boolean testSpecialCaseUnused(Op op, List<Pair<Var, Var>> joins, ExprList remaining) { // If the op does not contain one of the vars at all, then the implicit // join will be "eval unbound" i.e. false. // We can return empty table. Set<Var> patternVars = OpVars.visibleVars(op); for (Pair<Var, Var> p : joins) { if (!patternVars.contains(p.getLeft()) || !patternVars.contains(p.getRight())) return true; } return false; }
@Override public void visit(ExprFunctionOp funcOp) { Collection<Var> vars = OpVars.visibleVars(funcOp.getGraphPattern()) ; for ( Var v : vars ) action.var(acc, v) ; }
@Override public void visit(OpQuadPattern op) { VarUsage2 varUsage = allocate(op); Set<Var> suppliedVars = OpVars.visibleVars(op); varUsage.setVisibleVars(suppliedVars); }
@Override public void visit(OpQuadPattern op) { VarUsage2 varUsage = allocate(op); Set<Var> suppliedVars = OpVars.visibleVars(op); varUsage.setVisibleVars(suppliedVars); }
protected QueryIterator execute(OpMinus opMinus, QueryIterator input) { Op lhsOp = opMinus.getLeft() ; Op rhsOp = opMinus.getRight() ; QueryIterator left = exec(lhsOp, input) ; QueryIterator right = exec(rhsOp, root()) ; Set<Var> commonVars = OpVars.visibleVars(lhsOp) ; commonVars.retainAll(OpVars.visibleVars(rhsOp)) ; return QueryIterMinus.create(left, right, commonVars, execCxt) ; }
private static void visible(String string, String... vars) { Op op = SSE.parseOp(string) ; Collection<Var> c = OpVars.visibleVars(op) ; check(vars, c) ; }
private static ResultSet exec(String pattern, Graph graph) { Op op = SSE.parseOp(pattern, pmap) ; List<Var> vars = new ArrayList<>() ; vars.addAll(OpVars.visibleVars(op)) ; QueryIterator qIter = Algebra.exec(op, graph) ; return ResultSetFactory.create(qIter, Var.varNames(vars)) ; }
public static void execute(Op op, DatasetGraph dsg, ResultsFormat outputFormat) { QueryIterator qIter = Algebra.exec(op, dsg) ; List<String> vars = null ; if ( op instanceof OpProject ) vars = Var.varNames(((OpProject)op).getVars()) ; else // The variables defined in patterns (not Filters, nor NOT EXISTS, // nor ORDER BY) vars = Var.varNames(OpVars.visibleVars(op)) ; ResultSet results = ResultSetFactory.create(qIter, vars) ; outputResultSet(results, null, outputFormat) ; }
static public Set<Var> nonLinearVars(OpLeftJoin op) { Op left = effectiveOp(op.getLeft()) ; Op right = effectiveOp(op.getRight()) ; Set<Var> leftVars = OpVars.visibleVars(left) ; Set<Var> optRight = VarFinder.optDefined(right) ; return SetUtils.intersection(leftVars, optRight) ; }
private static ResultSet exec(String pattern, Graph graph) { Op op = SSE.parseOp(pattern, pmap) ; List<Var> vars = new ArrayList<>() ; vars.addAll(OpVars.visibleVars(op)) ; QueryIterator qIter = Algebra.exec(op, graph) ; return ResultSetFactory.create(qIter, Var.varNames(vars)) ; }
private static ResultSet exec(String pattern) { Op op = SSE.parseOp(pattern, pmap) ; List<Var> vars = new ArrayList<>() ; vars.addAll(OpVars.visibleVars(op)) ; //op = Algebra.toQuadForm(op); QueryIterator qIter = Algebra.exec(op, dataset.asDatasetGraph()); // Will go via the StageGeneratorDirectTDB for TDB2 // QueryIterator qIter = Algebra.exec(op, dataset.asDatasetGraph().getDefaultGraph()); return ResultSetFactory.create(qIter, Var.varNames(vars)) ; }
private static ResultSet exec(String pattern) { Op op = SSE.parseOp(pattern, pmap) ; List<Var> vars = new ArrayList<>() ; vars.addAll(OpVars.visibleVars(op)) ; //op = Algebra.toQuadForm(op); QueryIterator qIter = Algebra.exec(op, dataset.asDatasetGraph()); // Will go via the StageGeneratorDirectTDB for TDB2 // QueryIterator qIter = Algebra.exec(op, dataset.asDatasetGraph().getDefaultGraph()); return ResultSetFactory.create(qIter, Var.varNames(vars)) ; }