gpt4 book ai didi

sparql - 如何在使用推理时提高 sparql 查询的性能?

转载 作者:行者123 更新时间:2023-12-02 05:27:52 25 4
gpt4 key购买 nike

我想提高我的 sparql 查询的性能。我必须运行所有类型的 sparql 查询。我在图中总共有 17,500,000 个三元组,我还有其他只包含知识的图。此图包含 same as 和 subclassOf 属性。该图的总三元组约为 50,000,000,我在 sparql 查询中使用动态推理。

我正在使用 virtuoso 作为数据库。它具有推理功能。

当我使用推理运行查询时,简单查询需要 80 秒。在不使用推理的情况下,它需要 10 秒。

Sparql 查询:

 DEFINE input:inference 'myrule' 
select DISTINCT ?uri1 ?uri2
from <GRAPH_NAME>
where {?uri1 rdf:type ezdi:Aspirin.
?patient ezdi:is_treated_with ?uri1.
?patient rdf:type ezdi:Patient.
?uri2 rdf:type ezdi:Hypertension .
?patient ezdi:is_suffering_with ?uri2.
?patient rdf:type ezdi:Patient } ORDER BY ?patient

我已经完成了专家提供的所有索引。系统有 32 GB RAM。我已经完成了 NumberOfBuffer 设置 virtuoso.ini 文件。

我不知道推理有什么问题。但我必须在 sparql 查询中使用推理。

如果你知道什么,请分享你的想法。

谢谢

最佳答案

一个5M的三元组的本体已经相当大了,不过严格来说没有问题。与推理相关的性能与本体的表现力比与本体的大小密切相关。您可以创建一个本体,其三元组少几个数量级,这将更难推理。

话虽如此,我没有什么可以具体建议的。 Virtuoso 特定的调整最好留给他们的开发人员,因此您可能会在他们的邮件列表中获得一些关注。

看来您正在使用一些自定义推理“my_rule”——尽管在评论中您还声明了 RDFS 和 sameAs。您可能需要弄清楚您实际使用的是什么推理,您的本体属于什么配置文件(RDFS 或 OWL2 QL、RL、EL、DL),并稍微了解一下推理实际上是如何进行的作品。此外,相等推理很困难,您声称除了 RDFS 之外还使用它。 Virtuoso 可能会急切地计算等价关系,这可以减少查询的开销,但同样,您应该在他们的邮件列表中与他们讨论这一点。

推理无论如何都不容易,除了使用更简单的(即表达能力较差的)本体或较少的数据,或两者兼而有之之外,没有任何 Elixir 可以神奇地加快推理速度。

最后,您可以尝试其他为推理而设计的数据库,例如OWLIMStardog .并非所有数据库都是平等创建的,您完全有可能在 TBox 中编码了一些 Virtuoso 可能无法很好处理的内容,但其他系统可以轻松处理。

关于sparql - 如何在使用推理时提高 sparql 查询的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12820873/

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