use of org.apache.jena.graph.Node in project jena by apache.
the class RdfTypesTest method node_writable_literal_07.
/**
* Basic node writable round tripping test
*
* @throws IOException
* @throws InstantiationException
* @throws IllegalAccessException
* @throws ClassNotFoundException
*/
@Test
public void node_writable_literal_07() throws IOException, InstantiationException, IllegalAccessException, ClassNotFoundException {
Node n = NodeFactory.createLiteral("true", XSDDatatype.XSDboolean);
NodeWritable nw = new NodeWritable(n);
testWriteRead(nw, nw);
}
use of org.apache.jena.graph.Node in project jena by apache.
the class RdfTypesTest method node_writable_literal_04.
/**
* Basic node writable round tripping test
*
* @throws IOException
* @throws InstantiationException
* @throws IllegalAccessException
* @throws ClassNotFoundException
*/
@Test
public void node_writable_literal_04() throws IOException, InstantiationException, IllegalAccessException, ClassNotFoundException {
Node n = NodeFactory.createLiteral("1234", XSDDatatype.XSDinteger);
NodeWritable nw = new NodeWritable(n);
testWriteRead(nw, nw);
}
use of org.apache.jena.graph.Node in project jena by apache.
the class SolverLib method execute.
// The worker. Callers choose the NodeTupleTable.
// graphNode may be Node.ANY, meaning we should make triples unique.
// graphNode may be null, meaning default graph
private static QueryIterator execute(NodeTupleTable nodeTupleTable, Node graphNode, BasicPattern pattern, QueryIterator input, Predicate<Tuple<NodeId>> filter, ExecutionContext execCxt) {
if (Quad.isUnionGraph(graphNode))
graphNode = Node.ANY;
if (Quad.isDefaultGraph(graphNode))
graphNode = null;
List<Triple> triples = pattern.getList();
boolean anyGraph = (graphNode == null ? false : (Node.ANY.equals(graphNode)));
int tupleLen = nodeTupleTable.getTupleTable().getTupleLen();
if (graphNode == null) {
if (3 != tupleLen)
throw new TDBException("SolverLib: Null graph node but tuples are of length " + tupleLen);
} else {
if (4 != tupleLen)
throw new TDBException("SolverLib: Graph node specified but tuples are of length " + tupleLen);
}
// Convert from a QueryIterator (Bindings of Var/Node) to BindingNodeId
NodeTable nodeTable = nodeTupleTable.getNodeTable();
Iterator<BindingNodeId> chain = Iter.map(input, SolverLib.convFromBinding(nodeTable));
List<Abortable> killList = new ArrayList<>();
for (Triple triple : triples) {
Tuple<Node> tuple = null;
if (graphNode == null)
// 3-tuples
tuple = tuple(triple.getSubject(), triple.getPredicate(), triple.getObject());
else
// 4-tuples.
tuple = tuple(graphNode, triple.getSubject(), triple.getPredicate(), triple.getObject());
chain = solve(nodeTupleTable, tuple, anyGraph, chain, filter, execCxt);
chain = makeAbortable(chain, killList);
}
// DEBUG POINT
if (false) {
if (chain.hasNext())
chain = Iter.debug(chain);
else
System.out.println("No results");
}
// Timeout wrapper ****
// QueryIterTDB gets called async.
// Iter.abortable?
// Or each iterator has a place to test.
// or pass in a thing to test?
// Need to make sure the bindings here point to parent.
Iterator<Binding> iterBinding = convertToNodes(chain, nodeTable);
// "killList" will be aborted on timeout.
return new QueryIterTDB(iterBinding, killList, input, execCxt);
}
use of org.apache.jena.graph.Node in project jena by apache.
the class SolverLib method graphNames.
/** Find all the graph names in the quads table. */
public static QueryIterator graphNames(DatasetGraphTDB ds, Node graphNode, QueryIterator input, Predicate<Tuple<NodeId>> filter, ExecutionContext execCxt) {
List<Abortable> killList = new ArrayList<>();
Iterator<Tuple<NodeId>> iter1 = ds.getQuadTable().getNodeTupleTable().find(NodeId.NodeIdAny, NodeId.NodeIdAny, NodeId.NodeIdAny, NodeId.NodeIdAny);
if (filter != null)
iter1 = Iter.filter(iter1, filter);
Iterator<NodeId> iter2 = Iter.map(iter1, (t) -> t.get(0));
iter2 = makeAbortable(iter2, killList);
Iterator<NodeId> iter3 = Iter.distinct(iter2);
iter3 = makeAbortable(iter3, killList);
Iterator<Node> iter4 = NodeLib.nodes(ds.getQuadTable().getNodeTupleTable().getNodeTable(), iter3);
final Var var = Var.alloc(graphNode);
Iterator<Binding> iterBinding = Iter.map(iter4, node -> BindingFactory.binding(var, node));
// Not abortable.
return new QueryIterTDB(iterBinding, killList, input, execCxt);
}
use of org.apache.jena.graph.Node in project jena by apache.
the class SolverLib method convertToNodeIds.
public static Set<NodeId> convertToNodeIds(Collection<Node> nodes, DatasetGraphTDB dataset) {
Set<NodeId> graphIds = new HashSet<>();
NodeTable nt = dataset.getQuadTable().getNodeTupleTable().getNodeTable();
for (Node n : nodes) graphIds.add(nt.getNodeIdForNode(n));
return graphIds;
}
Aggregations