}
public static StatsResults stats(DatasetGraphTDB dsg, Node gn)
{
NodeTable nt = dsg.getTripleTable().getNodeTupleTable().getNodeTable() ;
StatsCollectorNodeId stats = new StatsCollectorNodeId(nt) ;
if ( gn == null )
{
Iterator<Tuple<NodeId>> iter = dsg.getTripleTable().getNodeTupleTable().findAll() ;
for ( ; iter.hasNext(); )
{
Tuple<NodeId> t = iter.next() ;
stats.record(null, t.get(0), t.get(1), t.get(2)) ;
}
} else {
// If the union graph, then we need to scan all quads but with uniqueness.
boolean unionGraph = Quad.isUnionGraph(gn) ;
NodeId gnid = null ;
if ( ! unionGraph )
{
gnid = nt.getNodeIdForNode(gn) ;
if ( NodeId.isDoesNotExist(gnid) )
Log.warn(tdbstats.class, "No such graph: "+gn) ;
}
NodeTupleTable ntt = dsg.getQuadTable().getNodeTupleTable() ;
Iterator<Tuple<NodeId>> iter = unionGraph
? SolverLib.unionGraph(ntt)
: ntt.find(gnid, null, null, null) ;
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() ;
}