gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:20:09 24 4
gpt4 key购买 nike

我正在从 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com