use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.
the class OpExecutorTDB1 method optimizeExecuteTriples.
/**
* Execute, with optimization, a basic graph pattern on the default graph storage
*/
private static QueryIterator optimizeExecuteTriples(DatasetGraphTDB dsgtdb, QueryIterator input, BasicPattern pattern, ExprList exprs, ExecutionContext execCxt) {
if (!input.hasNext())
return input;
// Must pass this iterator into the next stage.
if (pattern.size() >= 2) {
// Must be 2 or triples to reorder.
ReorderTransformation transform = dsgtdb.getReorderTransform();
if (transform != null) {
QueryIterPeek peek = QueryIterPeek.create(input, execCxt);
// Must pass on
input = peek;
pattern = reorder(pattern, peek, transform);
}
}
if (exprs == null) {
Explain.explain("Execute", pattern, execCxt.getContext());
Predicate<Tuple<NodeId>> filter = QC2.getFilter(execCxt.getContext());
return PatternMatchTDB1.execute(dsgtdb, Quad.defaultGraphNodeGenerated, pattern, input, filter, execCxt);
}
// -- Filter placement
Op op = TransformFilterPlacement.transform(exprs, pattern);
return plainExecute(op, input, execCxt);
}
use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.
the class OpExecutorTDB1 method execute.
@Override
protected QueryIterator execute(OpDatasetNames dsNames, QueryIterator input) {
DatasetGraphTDB ds = (DatasetGraphTDB) execCxt.getDataset();
Predicate<Tuple<NodeId>> filter = QC2.getFilter(execCxt.getContext());
Node gn = dsNames.getGraphNode();
if (Var.isVar(gn))
return SolverLibTDB.graphNames(ds, dsNames.getGraphNode(), input, filter, execCxt);
else
return SolverLibTDB.testForGraphName(ds, dsNames.getGraphNode(), input, filter, execCxt);
}
use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.
the class DatasetPrefixesTDB method readByURI.
@Override
public synchronized String readByURI(String graphName, String uriStr) {
Node g = NodeFactory.createURI(graphName);
Node u = NodeFactory.createURI(uriStr);
Iterator<Tuple<Node>> iter = nodeTupleTable.find(g, null, u);
if (!iter.hasNext())
return null;
Node prefix = iter.next().get(1);
Iter.close(iter);
return prefix.getLiteralLexicalForm();
}
use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.
the class OpExecutorTDB2 method optimizeExecuteQuads.
/**
* Execute, with optimization, a quad pattern
*/
private static QueryIterator optimizeExecuteQuads(DatasetGraphTDB dsgtdb, QueryIterator input, Node gn, BasicPattern bgp, ExprList exprs, ExecutionContext execCxt) {
if (!input.hasNext())
return input;
// ---- Graph names with special meaning.
gn = decideGraphNode(gn, execCxt);
if (gn == null)
return optimizeExecuteTriples(dsgtdb, input, bgp, exprs, execCxt);
// ---- Execute quads+filters
if (bgp.size() >= 2) {
ReorderTransformation transform = dsgtdb.getReorderTransform();
if (transform != null) {
QueryIterPeek peek = QueryIterPeek.create(input, execCxt);
// Original input now invalid.
input = peek;
bgp = reorder(bgp, peek, transform);
}
}
if (exprs == null) {
// Triple-backed (but may be named as explicit default graph).
Explain.explain("Execute", bgp, execCxt.getContext());
Predicate<Tuple<NodeId>> filter = QC2.getFilter(execCxt.getContext());
return PatternMatchTDB2.execute(dsgtdb, gn, bgp, input, filter, execCxt);
}
// -- Filter placement
Op op = TransformFilterPlacement.transform(exprs, gn, bgp);
return plainExecute(op, input, execCxt);
}
use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.
the class OpExecutorTDB2 method optimizeExecuteTriples.
/**
* Execute, with optimization, a basic graph pattern on the default graph storage
*/
private static QueryIterator optimizeExecuteTriples(DatasetGraphTDB dsgtdb, QueryIterator input, BasicPattern pattern, ExprList exprs, ExecutionContext execCxt) {
if (!input.hasNext())
return input;
// Must pass this iterator into the next stage.
if (pattern.size() >= 2) {
// Must be 2 or triples to reorder.
ReorderTransformation transform = dsgtdb.getReorderTransform();
if (transform != null) {
QueryIterPeek peek = QueryIterPeek.create(input, execCxt);
// Must pass on
input = peek;
pattern = reorder(pattern, peek, transform);
}
}
if (exprs == null) {
Explain.explain("Execute", pattern, execCxt.getContext());
Predicate<Tuple<NodeId>> filter = QC2.getFilter(execCxt.getContext());
return PatternMatchTDB2.execute(dsgtdb, Quad.defaultGraphNodeGenerated, pattern, input, filter, execCxt);
}
// -- Filter placement
Op op = TransformFilterPlacement.transform(exprs, pattern);
return plainExecute(op, input, execCxt);
}
Aggregations