在SPARQL中找到常见的超级类

时间:2019-11-07 21:33:29

标签: sparql wikidata

我们需要一个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引擎设计中的缺陷,那么如何调整查询以使其运行更快?

0 个答案:

没有答案