java - 使用 Apache Jena ExtendedIterator 在具有大量三元组的图上进行迭代

标签 java performance jena apache-jena

我正在从 DBpedia 转储生成 Apache Jena Graph,现在我想迭代所有“dbpedia-owl:abstract”。 所以我做了这样的事情:

ExtendedIterator<Triple> iterator = Graph.find(Node.ANY, NodeFactory.createURI("dbpedia-owl:abstract"), Node.ANY);

但是当我尝试迭代时,内存消耗增加了,所以看起来像ExtendIterator存储找到的节点。 我使用 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");

关于java - 使用 Apache Jena ExtendedIterator 在具有大量三元组的图上进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31343350/

相关文章:

java - 有没有办法在不创建 File 对象的情况下转换 DataHandler (带有压缩内容)来获取 InputStream?

java - 将 LinkedHashMap<Object,String> 从一个 Activity 传递到另一个 Activity

javascript - CSS Sprite 性能

java - org.apache.jena.atlas.web.HttpException : 405 - HTTP method POST is not supported by this URL

rdf - 通过 Jena 库从 RDF/XML 文档中提取 URI

java - Eclipse Maven 项目无法解析依赖项

performance - 使用 CPU 与 GPU 训练模型 - 速度与内存

c - 使用没有内在函数的 gcc/clang 向量化残差平方和

SPARQL group by 和 order by : not ordered

java - 为 android native 应用程序检索 facebook 图形数据