Sparql Wikidata:计算共享两个属性的项目的有效方法

Sparql Wikidata:计算共享两个属性的项目的有效方法,sparql,wikidata,Sparql,Wikidata,我想计算同时具有两个属性的Wikidata项目的数量。例如,一个Viaf ID和一个BNF ID,或者一个LoC ID和一个SUDOC ID。我想到的第一个方法是这样的查询: SELECT (COUNT(DISTINCT ?item) AS ?count) WHERE { ?item wdt:P214 ?viaf. ?item wdt:P268 ?bnf. } 但该查询效率低下(23秒),要将其应用于10个属性,需要进行90次逐2的比较。有没有更有效的方法来执行这些计算?我觉得更好的

我想计算同时具有两个属性的Wikidata项目的数量。例如,一个Viaf ID和一个BNF ID,或者一个LoC ID和一个SUDOC ID。我想到的第一个方法是这样的查询:

SELECT (COUNT(DISTINCT ?item) AS ?count) WHERE {
  ?item wdt:P214 ?viaf.
  ?item wdt:P268 ?bnf.
}


但该查询效率低下(23秒),要将其应用于10个属性,需要进行90次逐2的比较。有没有更有效的方法来执行这些计算?

我觉得更好的问题是,为什么要计算所有这些,尤其是在重复的基础上。我的感觉是你成了…@塔勒德的牺牲品如果我的问题看起来很模糊,很抱歉。我只是想知道根据Wikidata,有多少BNF ID具有等效的过孔。但我想知道的是,对于这两个属性以外的许多其他属性,这就是为什么我要寻找一种比大量逐二比较更有效的方法。您可以很好地查看所有统计信息以及查询计划,至少您可以使用@StanislavKralin的优化器提示。但是两百,然后配对?那就是
n
选择了
k
,也就是
200
选择了
2
(二项式系数),对吗?用例是什么?你在数据集中寻找某种关联?@ASKW谢谢你的建议。我将尝试现有的解决方案,比如,如果它不起作用,则修补一个定制的解决方案。