use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.
the class DatasetGraphTDB method deleteAny.
@Override
public void deleteAny(Node g, Node s, Node p, Node o) {
// Delete in batches.
// That way, there is no active iterator when a delete
// from the indexes happens.
boolean isDftGraph = (g == null) || Quad.isDefaultGraph(g);
NodeTupleTable t = chooseNodeTupleTable(g);
@SuppressWarnings("unchecked") Tuple<NodeId>[] array = (Tuple<NodeId>[]) new Tuple<?>[sliceSize];
while (true) {
// Convert/cache s,p,o?
// The Node Cache will cache these so don't worry unduly.
Iterator<Tuple<NodeId>> iter = null;
if (isDftGraph)
iter = t.findAsNodeIds(s, p, o);
else
iter = t.findAsNodeIds(g, s, p, o);
if (iter == null)
// Finished?
return;
// Get a slice
int len = 0;
for (; len < sliceSize; len++) {
if (!iter.hasNext())
break;
array[len] = iter.next();
}
// Delete them.
for (int i = 0; i < len; i++) {
t.getTupleTable().delete(array[i]);
array[i] = null;
}
// Finished?
if (len < sliceSize)
break;
}
}
use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.
the class DatasetPrefixesTDB method readPrefix.
@Override
public synchronized String readPrefix(String graphName, String prefix) {
Node g = NodeFactory.createURI(graphName);
Node p = NodeFactory.createLiteral(prefix);
Iterator<Tuple<Node>> iter = nodeTupleTable.find(g, p, null);
try {
if (!iter.hasNext())
return null;
Tuple<Node> t = iter.next();
Node uri = t.get(2);
return uri.getURI();
} finally {
Iter.close(iter);
}
}
use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.
the class DatasetPrefixesTDB method readPrefixMap.
@Override
public synchronized Map<String, String> readPrefixMap(String graphName) {
Map<String, String> map = new HashMap<>();
// One class of problem from mangled databases
// (non-transactional, not shutdown cleanly)
// ends up with NPE access to the node table from
// the prefix index. As prefixes are "nice extras", we
// keep calm and carry on in the face of exceptions.
Node g = NodeFactory.createURI(graphName);
Iterator<Tuple<Node>> iter = nodeTupleTable.find(g, null, null);
for (; iter.hasNext(); ) {
try {
Tuple<Node> t = iter.next();
String prefix = t.get(1).getLiteralLexicalForm();
String uri = t.get(2).getURI();
map.put(prefix, uri);
} catch (Exception ex) {
Log.warn(this, "Mangled prefix map: graph name='" + graphName + "'", ex);
}
}
Iter.close(iter);
return map;
}
use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.
the class TestQuadFilter method createFilter.
/**
* Create a filter to exclude the graph http://example/g2
*/
private static Predicate<Tuple<NodeId>> createFilter(Dataset dataset) {
return Txn.calculateRead(dataset, () -> {
DatasetGraphTDB dsg = TDBInternal.getDatasetGraphTDB(dataset);
final NodeTable nodeTable = dsg.getQuadTable().getNodeTupleTable().getNodeTable();
final NodeId target = nodeTable.getNodeIdForNode(NodeFactory.createURI(graphToHide));
// Check g slot. Exclude graphToHide
return item -> !(item.len() == 4 && item.get(0).equals(target));
});
}
use of org.apache.jena.atlas.lib.tuple.Tuple in project jena by apache.
the class TestStats method statsForGraph.
private StatsResults statsForGraph(NodeId gid) {
Iterator<Tuple<NodeId>> iter = quads.find(gid, null, null, null);
StatsCollectorNodeId stats = new StatsCollectorNodeId(nt);
for (; iter.hasNext(); ) {
Tuple<NodeId> t = iter.next();
stats.record(t.get(0), t.get(1), t.get(2), t.get(3));
}
return stats.results();
}
Aggregations