use of org.apache.jena.graph.Node in project jena by apache.
the class PathEngineSPARQL method doFixedLengthPath.
@Override
protected void doFixedLengthPath(Path pathStep, Node node, long fixedLength, Collection<Node> output) {
// Not SPARQL
if (fixedLength == 0) {
output.add(node);
return;
}
// P_Mod(path, count, count)
// One step.
Iterator<Node> iter = eval(pathStep, node);
// Build a path for all remaining steps.
long count2 = dec(fixedLength);
P_FixedLength nextPath = new P_FixedLength(pathStep, count2);
// Accumulate across everything from first step.
for (; iter.hasNext(); ) {
Node n2 = iter.next();
Iterator<Node> iter2 = eval(nextPath, n2);
fill(iter2, output);
}
}
use of org.apache.jena.graph.Node in project jena by apache.
the class PathEngineSPARQL method doOneOrMoreN.
@Override
protected void doOneOrMoreN(Path pathStep, Node node, Collection<Node> output) {
Set<Node> visited = new HashSet<>();
// Do one step without including.
Iterator<Node> iter1 = eval(pathStep, node);
for (; iter1.hasNext(); ) {
Node n1 = iter1.next();
ALP_N(n1, pathStep, visited, output);
}
}
use of org.apache.jena.graph.Node in project jena by apache.
the class PropFuncArg method asExprList.
public ExprList asExprList() {
ExprList exprList = new ExprList();
if (isNode()) {
Node n = getArg();
Expr expr = ExprUtils.nodeToExpr(n);
exprList.add(expr);
return exprList;
}
for (Node n : getArgList()) {
Expr expr = ExprUtils.nodeToExpr(n);
exprList.add(expr);
}
return exprList;
}
use of org.apache.jena.graph.Node in project jena by apache.
the class PathLib method evalGroundedPath.
// Subject and object are nodes.
private static QueryIterator evalGroundedPath(Binding binding, Graph graph, Node subject, Path path, Node object, ExecutionContext execCxt) {
Iterator<Node> iter = PathEval.eval(graph, subject, path, execCxt.getContext());
// Now count the number of matches.
int count = 0;
for (; iter.hasNext(); ) {
Node n = iter.next();
if (n.sameValueAs(object))
count++;
}
return new QueryIterYieldN(count, binding, execCxt);
}
use of org.apache.jena.graph.Node in project jena by apache.
the class listIndex method execOneList.
@Override
protected QueryIterator execOneList(Binding binding, Node listNode, Node predicate, List<Node> objectArgs, ExecutionContext execCxt) {
if (Var.isVar(listNode))
throw new ExprEvalException("ListIndex : subject not a list or variable bound to a list");
if (objectArgs.size() != 2)
throw new ExprEvalException("ListIndex : object not a list of length 2");
Node indexNode = objectArgs.get(0);
Node memberNode = objectArgs.get(1);
Graph graph = execCxt.getActiveGraph();
if (Var.isVar(indexNode) && !Var.isVar(memberNode))
return findIndex(graph, binding, listNode, Var.alloc(indexNode), memberNode, execCxt);
if (!Var.isVar(indexNode) && Var.isVar(memberNode))
return getByIndex(graph, binding, listNode, indexNode, Var.alloc(memberNode), execCxt);
if (!Var.isVar(indexNode) && !Var.isVar(memberNode))
return testSlotValue(graph, binding, listNode, indexNode, memberNode, execCxt);
return findIndexMember(graph, binding, listNode, Var.alloc(indexNode), Var.alloc(memberNode), execCxt);
}
Aggregations