【发布时间】:2021-11-07 18:09:07
【问题描述】:
我只需要在 DBPedia 中找到给定文章的邻居数量(最多 4 个节点)(当它们之间有 wikilink 时,2 篇文章是邻居)。目前我正在做这个查询,但计算需要很长时间:
SELECT COUNT(?n4)
WHERE {
SELECT DISTINCT ?n4
WHERE {
<http://dbpedia.org/resource/Albert_Einstein> dbo:wikiPageWikiLink/dbo:wikiPageWikiLink/dbo:wikiPageWikiLink/dbo:wikiPageWikiLink ?n4 .
}
}
有人知道什么是更好的方法吗?我只需要邻居的数量。该查询只能快速运行到 2 级,从 3 级开始需要将近 30 秒才能完成,而 4 级几乎总是超时。
我正在使用 RDFLib 和 Python 进行查询,所以任何使用 Python 的技巧也会有所帮助!
编辑:我已经下载了数据集并为查询设置了本地端点,但性能仍然很低。
【问题讨论】:
-
这不是 Python 性能问题。这是三重存储和查询的问题。最好的选择是将 Wikilinks 数据集加载到本地三重存储中,然后运行查询。公共端点是共享资源,具有确保公平使用的限制
-
忘了提到我已经下载了 wikilink 数据集并设置了本地端点。但与公共端点相比,性能并没有提升。
-
您使用哪个三联商店?大师?如果是这样,您应该可以通过
virtuoso.ini设置查询超时 -
是的,我正在使用 virtuoso。但我想知道是否有更有效的方法来进行查询,因为现在它需要很长时间才能被接受。