@Override protected Iteration<BindingSet, QueryEvaluationException> createIteration() throws QueryEvaluationException { return evaluate(union.getRightArg(), bindings); } };
/** * @inheritDoc */ @Override public void meet(Union theOp) throws Exception { String aLeft = renderTupleExpr(theOp.getLeftArg()); String aRight = renderTupleExpr(theOp.getRightArg()); mBuffer.append(aLeft).append("\nunion\n").append(aRight); }
public Set<String> getAssuredBindingNames() { Set<String> bindingNames = new LinkedHashSet<String>(16); bindingNames.addAll(getLeftArg().getAssuredBindingNames()); bindingNames.retainAll(getRightArg().getAssuredBindingNames()); return bindingNames; }
public Set<String> getBindingNames() { Set<String> bindingNames = new LinkedHashSet<String>(16); bindingNames.addAll(getLeftArg().getBindingNames()); bindingNames.addAll(getRightArg().getBindingNames()); return bindingNames; }
/** * @inheritDoc */ @Override public void meet(Union theOp) throws Exception { binaryOpMeet(theOp, theOp.getLeftArg(), theOp.getRightArg()); }
/** * @inheritDoc */ @Override public void meet(Union theOp) throws Exception { ctxOpen(theOp); String aLeft = renderTupleExpr(theOp.getLeftArg()); if (aLeft.endsWith("\n")) { aLeft = aLeft.substring(0, aLeft.length() - 1); } String aRight = renderTupleExpr(theOp.getRightArg()); if (aRight.endsWith("\n")) { aRight = aRight.substring(0, aRight.length() - 1); } mJoinBuffer.append(indent()).append("{\n").append(aLeft).append("\n").append(indent()).append("}\n").append( indent()).append("union\n").append(indent()).append("{\n").append(aRight).append("\n").append( indent()).append("}.\n"); ctxClose(theOp); }
@Override @SuppressWarnings("unchecked") public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(Union union, BindingSet bindings) throws QueryEvaluationException { CloseableIteration<BindingSet, QueryEvaluationException>[] iters = new CloseableIteration[2]; iters[0] = evaluate(union.getLeftArg(), bindings); iters[1] = evaluate(union.getRightArg(), bindings); return new UnionIteration<BindingSet, QueryEvaluationException>(iters); }
@Override @SuppressWarnings("unchecked") public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(Union union, BindingSet bindings) throws QueryEvaluationException { CloseableIteration<BindingSet, QueryEvaluationException>[] iters = new CloseableIteration[2]; iters[0] = evaluate(union.getLeftArg(), bindings); iters[1] = evaluate(union.getRightArg(), bindings); return new UnionIteration<BindingSet, QueryEvaluationException>(iters); }
@Override public void meet(Union node) throws RepositoryException { super.meet(node); List<Owned<TupleExpr>> ows = new ArrayList<Owned<TupleExpr>>(); for (TupleExpr arg : new TupleExpr[] { node.getLeftArg(), node.getRightArg() }) { RepositoryConnection member = getSingleOwner(arg); int idx = ows.size() - 1; if (ows.size() > 0 && ows.get(idx).getOwner() == member) { TupleExpr union = ows.get(idx).getOperation(); union = new Union(union, arg.clone()); ows.get(idx).setOperation(union); } else { ows.add(new Owned<TupleExpr>(member, arg.clone())); } } addOwners(node, ows); }
@Override public void meet(Union union) { super.meet(union); TupleExpr leftArg = union.getLeftArg(); TupleExpr rightArg = union.getRightArg(); if (leftArg instanceof EmptySet) { union.replaceWith(rightArg); } else if (rightArg instanceof EmptySet) { union.replaceWith(leftArg); } else if (leftArg instanceof SingletonSet && rightArg instanceof SingletonSet) { union.replaceWith(leftArg); } }
@Override public void meet(Union union) { super.meet(union); TupleExpr leftArg = union.getLeftArg(); TupleExpr rightArg = union.getRightArg(); if (leftArg instanceof EmptySet) { union.replaceWith(rightArg); } else if (rightArg instanceof EmptySet) { union.replaceWith(leftArg); } else if (leftArg instanceof SingletonSet && rightArg instanceof SingletonSet) { union.replaceWith(leftArg); } }
@Override public void meet(Union union) { super.meet(union); TupleExpr leftArg = union.getLeftArg(); TupleExpr rightArg = union.getRightArg(); if (leftArg instanceof EmptySet) { union.replaceWith(rightArg); } else if (rightArg instanceof EmptySet) { union.replaceWith(leftArg); } else if (leftArg instanceof SingletonSet && rightArg instanceof SingletonSet) { union.replaceWith(leftArg); } }
@Override public void meet(Union union) { super.meet(union); TupleExpr leftArg = union.getLeftArg(); TupleExpr rightArg = union.getRightArg(); if (leftArg instanceof EmptySet) { union.replaceWith(rightArg); } else if (rightArg instanceof EmptySet) { union.replaceWith(leftArg); } else if (leftArg instanceof SingletonSet && rightArg instanceof SingletonSet) { union.replaceWith(leftArg); } }
@Override public void meet(final Union union) { boolean filterMoved = false; if (Sets.intersection(union.getRightArg().getBindingNames(), filterVars).size() > 0) { relocate(filter, union.getRightArg()); filterMoved = true; } if (Sets.intersection(union.getLeftArg().getBindingNames(), filterVars).size() > 0) { if (filterMoved) { final Filter clone = new Filter(filter.getArg(), filter.getCondition().clone()); relocate(clone, union.getLeftArg()); } else { relocate(filter, union.getLeftArg()); } } }
@Override public void meet(Union union) { Filter clone = new Filter(); clone.setCondition(filter.getCondition().clone()); relocate(filter, union.getLeftArg()); relocate(clone, union.getRightArg()); FilterRelocator.relocate(filter); FilterRelocator.relocate(clone); }
@Override public void meet(Union union) { Filter clone = new Filter(); clone.setCondition(filter.getCondition().clone()); relocate(filter, union.getLeftArg()); relocate(clone, union.getRightArg()); FilterRelocator.relocate(filter); FilterRelocator.relocate(clone); }
@Override public void meet(Union union) { super.meet(union); TupleExpr leftArg = union.getLeftArg(); TupleExpr rightArg = union.getRightArg(); if (leftArg instanceof Join && rightArg instanceof Join) { Join leftJoinArg = (Join)leftArg; Join rightJoin = (Join)rightArg; if (leftJoinArg.getLeftArg().equals(rightJoin.getLeftArg())) { // factor out the left-most join argument Join newJoin = new Join(); union.replaceWith(newJoin); newJoin.setLeftArg(leftJoinArg.getLeftArg()); newJoin.setRightArg(union); union.setLeftArg(leftJoinArg.getRightArg()); union.setRightArg(rightJoin.getRightArg()); union.visit(this); } } } }
@Override public void meet(Union node) throws RDFHandlerException { listEntry(); handler.handleStatement(valueFactory.createStatement(subject, RDF.TYPE, SP.UNION_CLASS)); Resource elementsList = valueFactory.createBNode(); handler.handleStatement( valueFactory.createStatement(subject, SP.ELEMENTS_PROPERTY, elementsList)); ListContext elementsCtx = newList(elementsList); listEntry(); ListContext leftCtx = newList(subject); node.getLeftArg().visit(this); endList(leftCtx); listEntry(); ListContext rightCtx = newList(subject); node.getRightArg().visit(this); endList(rightCtx); endList(elementsCtx); }
@Override public void meet(final Union n) { final TupleExpr l = n.getLeftArg(); final TupleExpr r = n.getRightArg(); final ZeroLengthPath p = l instanceof ZeroLengthPath ? (ZeroLengthPath) l : r instanceof ZeroLengthPath ? (ZeroLengthPath) r : null; if (p == null) { emit(l, !(l instanceof Union)).emit(" UNION ").emit(r, !(r instanceof Union)); } else { final Var s = p.getSubjectVar(); final Var o = p.getObjectVar(); final Var c = p.getContextVar(); if (c != null) { emit("GRAPH ").emit(c).emit(" ").openBrace(); } emit(s).emit(" ").emitPropertyPath(n, s, o).emit(" ").emit(o); if (c != null) { closeBrace(); } } }
@Override public void meet(final Union n) { final TupleExpr l = n.getLeftArg(); final TupleExpr r = n.getRightArg(); final ZeroLengthPath p = l instanceof ZeroLengthPath ? (ZeroLengthPath) l : r instanceof ZeroLengthPath ? (ZeroLengthPath) r : null; if (p == null) { emit(l, !(l instanceof Union)).emit(" UNION ").emit(r, !(r instanceof Union)); } else { final Var s = p.getSubjectVar(); final Var o = p.getObjectVar(); final Var c = p.getContextVar(); if (c != null) { emit("GRAPH ").emit(c).emit(" ").openBrace(); } emit(s).emit(" ").emitPropertyPath(n, s, o).emit(" ").emit(o); if (c != null) { closeBrace(); } } }