【问题标题】:How can I increase performance of sparql query while using inferencing?如何在使用推理时提高 sparql 查询的性能?
【发布时间】:2012-10-10 13:46:14
【问题描述】:

我想提高我的 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 查询中使用推理。

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

谢谢

【问题讨论】:

  • 您可以尝试正确格式化数字的大小,并清楚地区分 TBox 的大小与 ABox 的大小。此外,您在查询中定义规则时似乎正在使用自定义推理,因此您可能会解释该规则中的内容。
  • 感谢您的回复,但我不知道什么是 tbox 和 abox。如果你有一些教程或任何信息,请分享给我。
  • 我正在使用 virtuoso 提供的函数 "rdfs_rule_set("rule_name","graph_name")"。这样我们就可以在 sparql 查询中使用 rule_name 了。
  • TBox 是你的本体,ABox 是你的数据。您的数据库大小仍然格式错误。我不知道您的数据库中是否有 1.75M 或 1.75B 三元组。如果您正在使用语义技术,您应该花时间阅读 RDF 和 OWL 入门。如果您要做的不仅仅是 RDFS 推理,您可能还需要阅读描述逻辑手册。
  • 是的,在本体中,三元组总数为 5M,而在数据中,三元组总数为 17.5M。这不是数据库大小,这是三元组的总数。再次感谢您的回复。

标签: sparql semantic-web virtuoso


【解决方案1】:

5M 三元组的本体相当大,但严格来说,这没有问题。与推理有关的性能与本体的表达能力比它的大小更紧密地联系在一起。您可以创建一个具有几个数量级的三元组的本体,这将难以推理。

话虽如此,我没有什么特别建议的。 Virtuoso 特定的调优最好留给他们的开发人员,因此您可能会在他们的邮件列表中获得一些牵引力。

您似乎正在使用一些自定义推理“my_rule”——尽管在 cmets 中您还声明了 RDFS 和 sameAs。您可能需要弄清楚您实际使用的是什么推理,您的本体属于什么配置文件(RDFS 或 OWL2 QL、RL、EL、DL),并了解一些关于实际推理的知识作品。此外,等式推理很困难,您声称除了 RDFS 之外还使用了它。 Virtuoso 可能可以急切地计算等价关系,这可以减少查询的开销,但同样,您应该在他们的邮件列表中处理这些问题。

推理无论如何都不容易,没有灵丹妙药可以神奇地加快推理速度,而不是使用更简单的方法,即较少表达的本体或较少的数据,或两者兼而有之。

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

【讨论】:

    【解决方案2】:

    许多因素可能导致您描述的性能问题。最常见的是在 INI 文件中的 NumberOfBuffers 设置中出错——我们看不到,因此无法在此处诊断。

    有关 Virtuoso 的问题通常最好通过public OpenLink Discussion ForumsVirtuso Users mailing listconfidential Support Case 提出。如果您将其带到那里,我们应该能够为您提供更详细的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      相关资源
      最近更新 更多