我想提高我的 sparql 查询的性能。我必须运行所有类型的 sparql 查询。我在图中总共有 17,500,000 个三元组,并且我还有其他仅包含知识的图。该图包含相同的 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 查询中使用推理。
如果你知道一些事情,那么请分享你的想法。
谢谢你