private ResIterator listSubjectsFor( RDFNode p, RDFNode o ) { ClosableIterator<Node> xit = GraphUtil.listSubjects( graph, asNode( p ), asNode( o ) ); return IteratorFactory.asResIterator( xit, this ); }
private static void output(Sink<Pair<Node, Map<Node, Set<Node>>>> sink, Graph graph) { ExtendedIterator<Node> subjects = GraphUtil.listSubjects(graph, Node.ANY, Node.ANY) ; try { Map<Node, Set<Node>> predicates = new HashMap<Node, Set<Node>>() ; while ( subjects.hasNext() ) { Node subject = subjects.next() ; ExtendedIterator<Triple> triples = graph.find(subject, Node.ANY, Node.ANY) ; try { while ( triples.hasNext() ) { Triple triple = triples.next() ; Node p = triple.getPredicate() ; if ( predicates.containsKey(p) ) { predicates.get(p).add(triple.getObject()) ; } else { Set<Node> objects = new HashSet<Node>() ; objects.add(triple.getObject()) ; predicates.put(p, objects) ; } } } finally { if ( triples != null ) triples.close() ; } sink.send(new Pair<Node, Map<Node, Set<Node>>>(subject, predicates)) ; predicates.clear() ; } } finally { if ( subjects != null ) subjects.close() ; sink.close() ; } }