use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.
the class OpExecutorTDB2 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 SolverRX method accessData.
static Iterator<Quad> accessData(Tuple<Node> patternTuple, NodeTupleTable nodeTupleTable, boolean anyGraph, Predicate<Tuple<NodeId>> filter, ExecutionContext execCxt) {
NodeTable nodeTable = nodeTupleTable.getNodeTable();
Function<Tuple<NodeId>, Quad> asQuad = asQuad(nodeTable, nodeTupleTable.getTupleLen(), anyGraph);
Tuple<NodeId> patternTupleId = TupleLib.tupleNodeIds(nodeTable, patternTuple);
if (patternTupleId.contains(NodeId.NodeDoesNotExist))
// Can not match.
return Iter.nullIterator();
// -- DRY/StageMatchTuple ??
Iterator<Tuple<NodeId>> iterMatches = nodeTupleTable.find(patternTupleId);
// Add filter
if (filter != null)
iterMatches = Iter.filter(iterMatches, filter);
// Add anyGraph
if (anyGraph) {
// See StageMatchTuple for discussion.
iterMatches = Iter.map(iterMatches, quadsToAnyTriples);
iterMatches = Iter.distinctAdjacent(iterMatches);
}
// -- DRY/StageMatchTuple
Iterator<Quad> qIter = Iter.map(iterMatches, asQuad);
return qIter;
}
use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.
the class DatasetGraphTDB method listGraphNodes.
@Override
public Iterator<Node> listGraphNodes() {
checkNotClosed();
NodeTupleTable quads = getQuadTable().getNodeTupleTable();
Iterator<Tuple<NodeId>> x = quads.findAll();
// XXX Future: Ensure we scan a G??? index and use distinctAdjacent.
// See TupleTable.chooseScanAllIndex
Iterator<NodeId> z = Iter.iter(x).map(t -> t.get(0)).distinct();
Iterator<Node> r = NodeLib.nodes(quads.getNodeTable(), z);
return r;
}
use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.
the class GraphTDB method graphBaseSize.
// Better ways to execute.
@Override
protected final int graphBaseSize() {
if (isDefaultGraph())
return (int) getNodeTupleTable().size();
Node gn = getGraphName();
boolean unionGraph = isUnionGraph(gn);
gn = unionGraph ? Node.ANY : gn;
Iterator<Tuple<NodeId>> iter = getDSG().getQuadTable().getNodeTupleTable().findAsNodeIds(gn, null, null, null);
if (unionGraph) {
iter = Iter.map(iter, project4TupleTo3Tuple);
iter = Iter.distinctAdjacent(iter);
}
return (int) Iter.count(iter);
}
use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.
the class LoaderMain method indexPhase.
private static void indexPhase(List<BulkStartFinish> processes, TupleIndex srcIdx, TupleIndex[] indexes, MonitorOutput output) {
String indexSetLabel = PhasedOps.indexMappings(indexes);
output.print("Index set: %s => %s", srcIdx.getName(), indexSetLabel);
Indexer indexer = new Indexer(output, indexes);
Destination<Tuple<NodeId>> dest = indexer.index();
indexer.startBulk();
TransactionCoordinator coordinator = CoLib.newCoordinator();
CoLib.add(coordinator, srcIdx);
CoLib.start(coordinator);
// READ transaction.
Transaction transaction = coordinator.begin(TxnType.READ);
// Add to processes - we can wait later if we do not touched indexes being built.
processes.add(indexer);
PhasedOps.ReplayResult result = PhasedOps.replay(srcIdx, dest, output);
// End read transaction on srcIdx
transaction.end();
String timeStr = "---";
if (result.elapsed != 0) {
double time = result.elapsed / 1000.0;
// long AvgRate = (result.items * 1000L) / result.elapsed;
timeStr = String.format("%,.1f", time);
}
output.print("Index set: %s => %s [%,d items, %s seconds]", srcIdx.getName(), indexSetLabel, result.items, timeStr);
}
Aggregations