@Override public void meet(Slice node) throws RDFHandlerException { if (!isSubQuery) { // ignore root slice node.getArg().visit(this); } else { super.meet(node); } } }
@Override public void meet(Slice node) throws RuntimeException { super.meet(node); if (node.getArg() instanceof SelectQuery) { SelectQuery query = (SelectQuery)node.getArg(); if (node.getOffset() > 0) { query.setOffset(node.getOffset()); } if (node.getLimit() >= 0) { query.setLimit(node.getLimit()); } node.replaceWith(query); } }
public CloseableIteration evaluate(Slice slice, BindingSet bindings) throws QueryEvaluationException { CloseableIteration result = evaluate(slice.getArg(), bindings); if (slice.hasOffset()) { result = new OffsetIteration(result, slice.getOffset()); } if (slice.hasLimit()) { result = new LimitIteration(result, slice.getLimit()); } return result; }
public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(Slice slice, BindingSet bindings) throws QueryEvaluationException { CloseableIteration<BindingSet, QueryEvaluationException> result = evaluate(slice.getArg(), bindings); if (slice.hasOffset()) { result = new OffsetIteration<BindingSet, QueryEvaluationException>(result, slice.getOffset()); } if (slice.hasLimit()) { result = new LimitIteration<BindingSet, QueryEvaluationException>(result, slice.getLimit()); } return result; }
@Override public void meet(Slice node) throws RDFHandlerException { node.getArg().visit(this); if (node.hasLimit()) { handler.handleStatement(valueFactory.createStatement(subject, SP.LIMIT_PROPERTY, valueFactory.createLiteral(Long.toString(node.getLimit()), XMLSchema.INTEGER))); } if (node.hasOffset()) { handler.handleStatement(valueFactory.createStatement(subject, SP.OFFSET_PROPERTY, valueFactory.createLiteral(Long.toString(node.getOffset()), XMLSchema.INTEGER))); } }
@Override public void meet(Slice node) throws RuntimeException { TupleExpr child = node.getArg(); if(!isSupported(child) && child instanceof UnaryTupleOperator) { UnaryTupleOperator replacement = (UnaryTupleOperator)child.clone(); // switch positions of child and node node.replaceWith(replacement); node.setArg(((UnaryTupleOperator) child).getArg().clone()); replacement.setArg(node.clone()); // visit the newly inserted replacement node (i.e. the clone of child now containing the old "node" as // child, so "node" can be bubbled down further if needed) replacement.visit(this); } }