use of org.apache.jena.graph.Node in project jena by apache.
the class ListBase method execEvaluated.
/** If the subject is a list (well, at least not an unbound variable), dispatch to execOneList
* else dispatch to one of object a var, a list or a node.
*/
@Override
public final QueryIterator execEvaluated(Binding binding, PropFuncArg argSubject, Node predicate, PropFuncArg argObject, ExecutionContext execCxt) {
Node listNode = argSubject.getArg();
if (!Var.isVar(listNode))
// Subject bound or constant
return execOneList(binding, listNode, predicate, argObject, execCxt);
// Subject unbound.
Var listVar = Var.alloc(listNode);
return listUnboundSubject(binding, listVar, predicate, argObject, execCxt);
}
use of org.apache.jena.graph.Node in project jena by apache.
the class concat method execEvaluated.
@Override
public QueryIterator execEvaluated(Binding binding, Node subject, Node predicate, PropFuncArg object, ExecutionContext execCxt) {
if (!Var.isVar(subject))
throw new ExprEvalException("Subject is not a variable (" + subject + ")");
String x = "";
for (Node node : object.getArgList()) {
if (Var.isVar(node))
return IterLib.noResults(execCxt);
String str = NodeFunctions.str(node);
x = x + str;
}
return IterLib.oneResult(binding, Var.alloc(subject), NodeFactory.createLiteral(x), execCxt);
}
use of org.apache.jena.graph.Node in project jena by apache.
the class container method findContainers.
private static void findContainers(Collection<Node> acc, Graph graph, Node typeNode) {
ExtendedIterator<Triple> iter = graph.find(Node.ANY, RDF.type.asNode(), typeNode);
while (iter.hasNext()) {
Triple t = iter.next();
Node containerNode = t.getSubject();
acc.add(containerNode);
}
}
use of org.apache.jena.graph.Node in project jena by apache.
the class container method execEvaluatedCalc.
// Ask by finding all the rdf:_N + rdf:type
private QueryIterator execEvaluatedCalc(Binding binding, Node containerNode, Node predicate, Node member, ExecutionContext execCxt) {
Graph graph = execCxt.getActiveGraph();
if (!containerNode.isVariable()) {
// Container a ground term.
if (!GraphContainerUtils.isContainer(execCxt.getActiveGraph(), containerNode, typeNode))
return IterLib.noResults(execCxt);
return oneContainer(binding, containerNode, member, execCxt);
}
// Container a variable.
Collection<Node> c = null;
if (member.isVariable())
c = findContainers(graph, typeNode);
else
c = findContainingContainers(graph, typeNode, member);
QueryIterConcat cIter = new QueryIterConcat(execCxt);
Var cVar = Var.alloc(containerNode);
for (Node cn : c) {
//Binding the container node.
Binding b = BindingFactory.binding(binding, cVar, cn);
Node m = member;
// Special case of ?x rdfs:member ?x
if (Var.isVar(member) && member.equals(cVar)) {
m = cn;
}
cIter.add(oneContainer(b, cn, m, execCxt));
}
return cIter;
//throw new QueryFatalException(Utils.className(this)+": Arg 1 is too hard : "+containerNode) ;
}
use of org.apache.jena.graph.Node in project jena by apache.
the class listIndex method getByIndex.
private static QueryIterator getByIndex(Graph graph, Binding binding, Node listNode, Node indexNode, Var varMember, ExecutionContext execCxt) {
int i = NodeFactoryExtra.nodeToInt(indexNode);
if (i < 0)
return IterLib.noResults(execCxt);
Node n = GraphList.get(new GNode(graph, listNode), i);
if (n == null)
return IterLib.noResults(execCxt);
return IterLib.oneResult(binding, varMember, n, execCxt);
}
Aggregations