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 Set<String> getBindingNames() { return getAssuredBindingNames(); }
@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; }
/** * Creates a arbitrary-length path that matches a subject-, predicate-, object- and context variable * against statements from the specified context scope. */ public ArbitraryLengthPath(Scope scope, Var subjVar, TupleExpr pathExpression, Var objVar, Var conVar, long minLength) { setScope(scope); setSubjectVar(subjVar); setPathExpression(pathExpression); setObjectVar(objVar); setContextVar(conVar); setMinLength(minLength); }
@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 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())); }
final List<Var> sameTermArgs = Arrays.asList((Var)leftArg, (Var)rightArg); if (sameTermArgs.contains(alp.getSubjectVar()) && sameTermArgs.contains(alp.getObjectVar()))
@Override public void replaceChildNode(QueryModelNode current, QueryModelNode replacement) { if (subjectVar == current) { setSubjectVar((Var)replacement); } else if (pathExpression == current) { setPathExpression((TupleExpr)replacement); } else if (objectVar == current) { setObjectVar((Var)replacement); } else if (contextVar == current) { setContextVar((Var)replacement); } else { super.replaceChildNode(current, replacement); } }
tupleNode = new ArbitraryLengthPath(subjVar, new StatementPattern(subjVar, getVar(subPath), objVar), objVar, minPath.longValue());
@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 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())); }
/** * Creates a arbitrary-length path that matches a subject-, predicate-, object- and context variable * against statements from the specified context scope. */ public ArbitraryLengthPath(Scope scope, Var subjVar, TupleExpr pathExpression, Var objVar, Var conVar, long minLength) { setScope(scope); setSubjectVar(subjVar); setPathExpression(pathExpression); setObjectVar(objVar); setContextVar(conVar); setMinLength(minLength); }
final List<Var> sameTermArgs = Arrays.asList((Var)leftArg, (Var)rightArg); if (sameTermArgs.contains(alp.getSubjectVar()) && sameTermArgs.contains(alp.getObjectVar()))
@Override public void replaceChildNode(QueryModelNode current, QueryModelNode replacement) { if (subjectVar == current) { setSubjectVar((Var)replacement); } else if (pathExpression == current) { setPathExpression((TupleExpr)replacement); } else if (objectVar == current) { setObjectVar((Var)replacement); } else if (contextVar == current) { setContextVar((Var)replacement); } else { super.replaceChildNode(current, replacement); } }
result = new ArbitraryLengthPath(scope, subjVar, te, endVar, contextVar, lowerBound);
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 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; }
result = new ArbitraryLengthPath(scope, subjVar, te, endVar, contextVar, lowerBound);
public Set<String> getBindingNames() { return getAssuredBindingNames(); }
@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); }