我正在从DBpedia转储生成Apache Jena Graph,现在我想遍历所有" DBpedia -owl:abstract"。所以我这样做:
ExtendedIterator<Triple> iterator = Graph.find(Node.ANY, NodeFactory.createURI("dbpedia-owl:abstract"), Node.ANY);
但是当我尝试迭代时,内存消耗增加了,所以看起来像ExtendedIterator存储找到的节点。我使用VisualVM分析器,发现当我迭代时,com.hp.hpl.jena.graph.Node_URI
的计数正在增加。我试着做iterator.reset()
,但这不起作用。
我可以遍历所有DBpedia摘要而不存储节点吗?
对不起,我的英语不好。
你一定要把它们都放在一个图里吗?您可以在使用RIOT使用StreamRDF
(或方便的子类)解析节点时处理它们。例如:
class MyHandler implements StreamRDF {
...
public void triple(Triple triple) {
if (triple.predicateMatches(DBpediaOWL.abstract)) {
... process ...
}
}
...
}
StreamRDF myHandler = new MyHandler();
RDFDataMgr.parse(myHandler, "dbpedia-file.nt");