@Override public void visit(OpBGP opBGP) { BasicPattern triples = opBGP.getPattern(); addVars(defines, triples); }
@Override public void visit(OpQuadBlock quadBlock) { VarUtils.addVars(acc, quadBlock.getPattern()) ; }
@Override public void visit(OpQuadBlock quadBlock) { addVars(defines, quadBlock.getPattern()) ; }
public static void addVars(Collection<Var> acc, Node graphNode, BasicPattern triples) { addVar(acc, graphNode) ; addVars(acc, triples) ; }
@Override public void visit(OpBGP opBGP) { VarUtils.addVars(acc, opBGP.getPattern()) ; }
@Override public void visit(OpPropFunc opPropFunc) { VarUtils.addVars(defines, opPropFunc.getSubjectArgs()) ; VarUtils.addVars(defines, opPropFunc.getObjectArgs()) ; mergeVars(opPropFunc.getSubOp()); // If definite (from the property function), remove from optDefines. optDefines.removeAll(this.defines); }
@Override public void visit(OpQuadPattern quadPattern) { addVars(defines, quadPattern.getGraphNode(), quadPattern.getBasicPattern()); }
@Override public void visit(OpQuadPattern quadPattern) { addVar(acc, quadPattern.getGraphNode()) ; VarUtils.addVars(acc, quadPattern.getBasicPattern()) ; }
/** Wrap the Basic Pattern with any applicable expressions from the ExprList * but do not break up the BasicPattern in any way. */ private Placement wrapBGP(ExprList exprsIn, BasicPattern pattern) { Set<Var> vs = new HashSet<>(); VarUtils.addVars(vs, pattern); ExprList pushed = new ExprList(); ExprList unpushed = new ExprList(); for (Expr e : exprsIn) { Set<Var> eVars = e.getVarsMentioned(); if (vs.containsAll(eVars)) pushed.add(e); else unpushed.add(e); } // Can't push anything into a filter around this BGP if (pushed.size() == 0) return noChangePlacement ; // Safe to place some conditions around the BGP Op opx = OpFilter.filterBy(pushed, new OpBGP(pattern)) ; return result(opx, unpushed); }
/** Wrap the Graph node, Basic Pattern with any applicable expressions from the ExprList * but do not break up the BasicPattern in any way. */ private static Placement wrapQuadPattern(ExprList exprsIn, Node graphNode, BasicPattern pattern) { Set<Var> vs = new HashSet<>(); VarUtils.addVars(vs, pattern); if (Var.isVar(graphNode)) vs.add(Var.alloc(graphNode)); ExprList pushed = new ExprList(); ExprList unpushed = new ExprList(); for (Expr e : exprsIn) { Set<Var> eVars = e.getVarsMentioned(); if (vs.containsAll(eVars)) { pushed.add(e); } else { unpushed.add(e); } } // Can't push anything into a filter around this quadpattern if (pushed.size() == 0) return null; // Safe to place some conditions around the quadpattern return new Placement(OpFilter.filterBy(pushed, new OpQuadPattern(graphNode, pattern)), unpushed); }