在SPARQL中找到常见的超级类

我们需要一个SParqL查询来找到两个Wikidata实体的公共超类。我这样尝试过:

select ?commonBase #?commonBaseLabel
where {
  wd:Q39798 wdt:P31/wdt:P279* ?commonBase.
  wd:Q26868 wdt:P31/wdt:P279* ?commonBase.
  #SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

Here's到查询的直接链接。

即使注释了SERVICE这行,也总是超时。

但是,当我仅使用WHERE子句之一运行同一查询时,它运行速度非常快,产生130或12个结果。

为什么两个WHERE子句都这么慢?从理论上讲,数据库可以只分别执行两个WHERE子句,然后执行INTERSECT,即传递在两个查询中都发生过的结果。

如果这是SParqL引擎设计中的缺陷,那么如何调整查询以使其运行更快?

dzx1015 回答:在SPARQL中找到常见的超级类

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3141508.html

大家都在问