首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用推理的同时提高sparql查询的性能?

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

Stack Overflow用户
提问于 2012-10-10 21:46:14
回答 2查看 792关注 0票数 2

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

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

当我运行带推理的查询时,简单查询需要80秒。如果不使用推理,则需要10秒。

Sparql查询:

代码语言:javascript
复制
 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。并且我已经完成了virtuoso.ini文件的NumberOfBuffer设置。

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

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

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-22 08:29:49

一个五百万个三元组的本体是相当大的,尽管严格地说,这不是问题。与推理相关的性能与本体的表达能力密切相关,而不是它的大小。您可以创建一个具有几个数量级、较少的三元组的本体,这将更难进行推理。

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

看起来您使用了一些自定义推理"my_rule“--尽管在注释中您还声明了RDFS & sameAs。您可能需要弄清楚您实际使用的推理,您的本体落入的概要(RDFS或OWL2 QL,RL,EL,DL),并了解推理的实际工作原理。此外,等式推理很困难,您声称除了RDFS之外还在使用它。Virtuoso可能会急于计算等价关系,这可能会减少查询的开销,但同样,这也是您应该在他们的邮件列表中处理的事情。

推理无论如何都不容易,除了使用更简单的本体或更少的数据,或者两者兼而有之之外,没有什么灵丹妙药可以让推理变得更快。

最后,您可以尝试其他专为推理而设计的数据库,例如OWLIMStardog。并不是所有的数据库都是平等的,你完全有可能在你的TBox中编码了一些Virtuoso可能不能很好处理的东西,但可以很容易地被另一个系统处理。

票数 3
EN

Stack Overflow用户

发布于 2012-11-06 05:26:28

有许多因素可能导致您所描述的性能问题。最常见的情况是在INI文件中的NumberOfBuffers设置中出现错误--我们在这里看不到这个错误,因此无法对其进行诊断。

特别是关于Virtuoso的问题通常最好在public OpenLink Discussion ForumsVirtuso Users mailing listconfidential Support Case上提出。如果你把这个带到那里,我们应该能够更详细地帮助你。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12820873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档