@Override public void meet(ArbitraryLengthPath node) { final Var pathVar = new Var("_anon_" + UUID.randomUUID().toString().replaceAll("-", "_")); pathVar.setAnonymous(true); // cardinality of ALP is determined based on the cost of a // single ?s ?p ?o ?c pattern where ?p is unbound, compensating for the fact that // the length of the path is unknown but expected to be _at least_ twice that of a normal // statement pattern. cardinality = 2.0 * getCardinality(new StatementPattern(node.getSubjectVar(), pathVar, node.getObjectVar(), node.getContextVar())); }
@Override public void meet(ArbitraryLengthPath node) { final Var pathVar = new Var("_anon_" + UUID.randomUUID().toString().replaceAll("-", "_")); pathVar.setAnonymous(true); // cardinality of ALP is determined based on the cost of a // single ?s ?p ?o ?c pattern where ?p is unbound, compensating for the fact that // the length of the path is unknown but expected to be _at least_ twice that of a normal // statement pattern. cardinality = 2.0 * getCardinality(new StatementPattern(node.getSubjectVar(), pathVar, node.getObjectVar(), node.getContextVar())); }
@Override public boolean equals(Object other) { if (other instanceof ArbitraryLengthPath) { ArbitraryLengthPath o = (ArbitraryLengthPath)other; return subjectVar.equals(o.getSubjectVar()) && pathExpression.equals(o.getPathExpression()) && objectVar.equals(o.getObjectVar()) && nullEquals(contextVar, o.getContextVar()) && scope.equals(o.getScope()); } return false; }
@Override public boolean equals(Object other) { if (other instanceof ArbitraryLengthPath) { ArbitraryLengthPath o = (ArbitraryLengthPath)other; return subjectVar.equals(o.getSubjectVar()) && pathExpression.equals(o.getPathExpression()) && objectVar.equals(o.getObjectVar()) && nullEquals(contextVar, o.getContextVar()) && scope.equals(o.getScope()); } return false; }
@Override public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(ArbitraryLengthPath alp, final BindingSet bindings) throws QueryEvaluationException { final Scope scope = alp.getScope(); final Var subjectVar = alp.getSubjectVar(); final TupleExpr pathExpression = alp.getPathExpression(); final Var objVar = alp.getObjectVar(); final Var contextVar = alp.getContextVar(); final long minLength = alp.getMinLength(); return new LimitedSizePathIterator(this, scope, subjectVar, pathExpression, objVar, contextVar, minLength, bindings, used, maxSize); }
public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(ArbitraryLengthPath alp, final BindingSet bindings) throws QueryEvaluationException { final Scope scope = alp.getScope(); final Var subjectVar = alp.getSubjectVar(); final TupleExpr pathExpression = alp.getPathExpression(); final Var objVar = alp.getObjectVar(); final Var contextVar = alp.getContextVar(); final long minLength = alp.getMinLength(); return new PathIteration(this, scope, subjectVar, pathExpression, objVar, contextVar, minLength, bindings); }
public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(ArbitraryLengthPath alp, final BindingSet bindings) throws QueryEvaluationException { final Scope scope = alp.getScope(); final Var subjectVar = alp.getSubjectVar(); final TupleExpr pathExpression = alp.getPathExpression(); final Var objVar = alp.getObjectVar(); final Var contextVar = alp.getContextVar(); final long minLength = alp.getMinLength(); return new PathIteration(this, scope, subjectVar, pathExpression, objVar, contextVar, minLength, bindings); }
@Override public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(ArbitraryLengthPath alp, final BindingSet bindings) throws QueryEvaluationException { final Scope scope = alp.getScope(); final Var subjectVar = alp.getSubjectVar(); final TupleExpr pathExpression = alp.getPathExpression(); final Var objVar = alp.getObjectVar(); final Var contextVar = alp.getContextVar(); final long minLength = alp.getMinLength(); return new LimitedSizePathIterator(this, scope, subjectVar, pathExpression, objVar, contextVar, minLength, bindings, used, maxSize); }
/** * Evaluate {@link ArbitraryLengthPath} query model nodes * @param parent * @param alp * @param bindings */ private void evaluateArbitraryLengthPath(BindingSetPipe parent, ArbitraryLengthPath alp, BindingSet bindings) { final StatementPattern.Scope scope = alp.getScope(); final Var subjectVar = alp.getSubjectVar(); final TupleExpr pathExpression = alp.getPathExpression(); final Var objVar = alp.getObjectVar(); final Var contextVar = alp.getContextVar(); final long minLength = alp.getMinLength(); //temporary solution using copy of the original iterator //re-writing this to push model is a bit more complex task try { HalyardStatementPatternEvaluation.enqueue(parent, new PathIteration(new StrictEvaluationStrategy(null, null) { @Override public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(ZeroLengthPath zlp, BindingSet bindings) throws QueryEvaluationException { return parentStrategy.evaluate(zlp, bindings); } @Override public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(TupleExpr expr, BindingSet bindings) throws QueryEvaluationException { return parentStrategy.evaluate(expr, bindings); } }, scope, subjectVar, pathExpression, objVar, contextVar, minLength, bindings), alp); } catch (QueryEvaluationException e) { parent.handleException(e); } }
@Override public ArbitraryLengthPath clone() { ArbitraryLengthPath clone = (ArbitraryLengthPath)super.clone(); clone.setSubjectVar(getSubjectVar().clone()); clone.setPathExpression(getPathExpression().clone()); clone.setObjectVar(getObjectVar().clone()); if (getContextVar() != null) { clone.setContextVar(getContextVar().clone()); } return clone; } }
@Override public ArbitraryLengthPath clone() { ArbitraryLengthPath clone = (ArbitraryLengthPath)super.clone(); clone.setSubjectVar(getSubjectVar().clone()); clone.setPathExpression(getPathExpression().clone()); clone.setObjectVar(getObjectVar().clone()); if (getContextVar() != null) { clone.setContextVar(getContextVar().clone()); } return clone; } }
&& sameTermArgs.contains(alp.getObjectVar()))
&& sameTermArgs.contains(alp.getObjectVar()))