private TupleExpr join(TupleExpr node, TupleExpr toMove) { toMove.replaceWith(new SingletonSet()); if (node != null) { node = new Join(node, toMove); } else { node = toMove; } return node; }
private void meetNodeLocalParentNotOwned(StringBuilder builder, boolean mapping, Map<String, String> bindings, ProjectionElemList list) throws RepositoryException, MalformedQueryException { OwnedTupleExpr owned = new OwnedTupleExpr(owner.getOwner(), patternNode.clone()); owned.prepare(QueryLanguage.SPARQL, builder.toString(), bindings); if (mapping) { Projection proj = new Projection(owned, list); patternNode.replaceWith(proj); } else { patternNode.replaceWith(owned); } }
currentNode.replaceWith(tupleNode); tupleNode = nextNode; currentNode.replaceWith(tupleNode); tupleNode = nextNode;
node.replaceWith(replacement);
protected void relocate(final Filter filter, final TupleExpr newFilterArg) { if (!filter.getArg().equals(newFilterArg)) { if (filter.getParentNode() != null) { // Remove filter from its original location filter.replaceWith(filter.getArg()); } // Insert filter at the new location newFilterArg.replaceWith(filter); filter.setArg(newFilterArg); } } }
node.replaceWith(replacement);
private void addDistinctOwnersNonLocal(LeftJoin node, RepositoryConnection leftOwner, RepositoryConnection rightOwner) { if (leftOwner != null) { node.getLeftArg().replaceWith(new OwnedTupleExpr(leftOwner, node.getLeftArg().clone())); } if (rightOwner != null) { node.getRightArg().replaceWith(new OwnedTupleExpr(rightOwner, node.getRightArg().clone())); } }
protected void relocate(Filter filter, TupleExpr newFilterArg) { if (filter.getArg() != newFilterArg) { if (filter.getParentNode() != null) { // Remove filter from its original location filter.replaceWith(filter.getArg()); } // Insert filter at the new location newFilterArg.replaceWith(filter); filter.setArg(newFilterArg); } } }
if (mapping) { Projection proj = new Projection(owned, list); patternNode.replaceWith(proj); } else { patternNode.replaceWith(owned);
protected void relocate(Filter filter, TupleExpr newFilterArg) { if (filter.getArg() != newFilterArg) { if (filter.getParentNode() != null) { // Remove filter from its original location filter.replaceWith(filter.getArg()); } // Insert filter at the new location newFilterArg.replaceWith(filter); filter.setArg(newFilterArg); } } }
@Override public void meet(StatementPattern sp) throws RuntimeException { super.meet(sp); ExternalModel externalR = new ExternalModel(sp, dataset, additional); ExternalModel externalA = new ExternalModel(sp, dataset, additional); Model minus = open(externalR.filter(removed, bindings)); Model union = open(externalA.filter(added, bindings)); TupleExpr node = sp; if (!minus.isEmpty()) { modified = true; externalR.setModel(minus); if (sp.getContextVar() == null) { // difference must compare context, but only works if non-null sp.setContextVar(newVar()); } Difference rpl = new Difference(node.clone(), externalR); node.replaceWith(rpl); node = rpl; } if (!union.isEmpty()) { modified = true; externalA.setModel(union); Union rpl = new Union(externalA, node.clone()); node.replaceWith(rpl); node = rpl; } }
visitGroupGraphPattern((Resource)elements); LeftJoin leftJoin = new LeftJoin(); currentNode.replaceWith(leftJoin); leftJoin.setLeftArg(currentNode); leftJoin.setRightArg(groupRoot.getArg()); visitGroupGraphPattern((Resource)elements); Difference difference = new Difference(); currentNode.replaceWith(difference); difference.setLeftArg(currentNode); difference.setRightArg(groupRoot.getArg()); currentNode.replaceWith(tupleNode); currentNode.replaceWith(join); join.setLeftArg(currentNode); join.setRightArg(tupleNode);
@Override public void meet(Filter filter) { if (filter.getCondition() instanceof Or && containsSameTerm(filter.getCondition())) { Or orNode = (Or)filter.getCondition(); TupleExpr filterArg = filter.getArg(); ValueExpr leftConstraint = orNode.getLeftArg(); ValueExpr rightConstraint = orNode.getRightArg(); // remove filter filter.replaceWith(filterArg); // Push UNION down below other filters to avoid cloning them TupleExpr node = findNotFilter(filterArg); Filter leftFilter = new Filter(node.clone(), leftConstraint); Filter rightFilter = new Filter(node.clone(), rightConstraint); Union union = new Union(leftFilter, rightFilter); node.replaceWith(union); filter.getParentNode().visit(this); } else { super.meet(filter); } }
node.getLeftArg().replaceWith(new OwnedTupleExpr(leftOwner, node.getLeftArg().clone())); node.getRightArg().replaceWith(new OwnedTupleExpr(rightOwner, node.getRightArg().clone()));