0

我正在从 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 摘要吗?

对不起,我的英语不好。

4

1 回答 1

1

您必须将它们全部保存在图表中吗?您可以在使用 RIOT using 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");
于 2015-07-10T15:37:56.143 回答