protected void flattenUnion(List<Op> acc, OpUnion opUnion) { if (opUnion.getLeft() instanceof OpUnion) flattenUnion(acc, (OpUnion)opUnion.getLeft()) ; else acc.add(opUnion.getLeft()) ; if (opUnion.getRight() instanceof OpUnion) flattenUnion(acc, (OpUnion)opUnion.getRight()) ; else acc.add(opUnion.getRight()) ; }
/** Create a union, dropping any nulls. */ public static Op create(Op left, Op right) { if ( left == null ) return right ; if ( right == null ) return left ; return new OpUnion(left, right) ; }
protected Op union(Op current, Op newOp) { return OpUnion.create(current, newOp) ; }
protected Op compileElementUnion(Op current, ElementUnion elt2) { // Special SPARQL 1.1 case. Op op = compile(elt2.getElements().get(0)) ; Op opUnion = OpUnion.create(current, op) ; return opUnion ; }
private static Op union(Op left, Op right) { return new OpUnion(left, right) ; }
/** * Rewrite left and right */ @Override public void visit(final OpUnion opUnion) { if (LOG.isDebugEnabled()) { LOG.debug("Starting visiting OpUnion"); } final OpRewriter rewriter = new OpRewriter(securityEvaluator, graphIRI); addOp(OpUnion.create(rewriteOp2(opUnion, rewriter), rewriter.getResult())); }
@Override public Op2 copy(Op newLeft, Op newRight) { return new OpUnion(newLeft, newRight) ; }
public static List<Op> getUnionMembers(Op op) { List<Op> result; if (op instanceof OpUnion) { OpUnion o = (OpUnion) op; result = Arrays.asList(o.getLeft(), o.getRight()); } else if (op instanceof OpDisjunction) { OpDisjunction o = (OpDisjunction) op; result = o.getElements(); } else { result = Collections.singletonList(op); } return result; }
@Override public Op make(ItemList list) { BuilderLib.checkLength(3, list, "union") ; Op left = build(list, 1) ; Op right = build(list, 2) ; Op op = new OpUnion(left, right) ; return op ; } } ;
public static List<Op> getUnionMembers(Op op) { List<Op> result; if (op instanceof OpUnion) { OpUnion o = (OpUnion) op; result = Arrays.asList(o.getLeft(), o.getRight()); } else if (op instanceof OpDisjunction) { OpDisjunction o = (OpDisjunction) op; result = o.getElements(); } else { result = Collections.singletonList(op); } return result; }
@Override public void visit(OpDisjunction opDisjunction) { if(opDisjunction.getElements().isEmpty()) { return; } Op a = null; for(Op b : opDisjunction.getElements()) { if(a == null) { a = b; continue; } a = new OpUnion(a, b); } a.visit(this); //throw new ARQNotImplemented("OpDisjunction") ; }
/** * Create a service node with a union where the first member is to be interpreted as the * pattern that should be used for caching, and the second argument is the pattern to be * executed. * * @param patternOp * @param serviceNode * @param executionOp * @return */ public static OpService wrapWithServiceOld(Op patternOp, Node serviceNode, Op executionOp) { boolean silent = false; OpUnion union = new OpUnion(patternOp, executionOp); Query subQuery = OpAsQuery.asQuery(union); Element subElement = new ElementSubQuery(subQuery); ElementService elt = new ElementService(serviceNode, subElement, silent); OpService result = new OpService(serviceNode, union, elt, silent); return result; }
@Override public void visit(OpUnion opUnion) { VarUsageVisitor usage1 = VarUsageVisitor.apply(opUnion.getLeft()); VarUsageVisitor usage2 = VarUsageVisitor.apply(opUnion.getRight()); // Fixed both sides. Set<Var> fixed = SetUtils.intersection(usage1.defines, usage2.defines) ; defines.addAll(fixed) ; // Fixed one side or the other, not both. Set<Var> notFixed = SetUtils.symmetricDifference(usage1.defines, usage2.defines) ; optDefines.addAll(notFixed) ; optDefines.addAll(usage1.optDefines); optDefines.addAll(usage2.optDefines); filterMentions.addAll(usage1.filterMentions); filterMentions.addAll(usage2.filterMentions); filterMentionsOnly.addAll(usage1.filterMentionsOnly); filterMentionsOnly.addAll(usage2.filterMentionsOnly); assignMentions.addAll(usage1.assignMentions); assignMentions.addAll(usage2.assignMentions); }