如何为Wikidata Sparql查询找到正确的属性?

时间:2019-11-02 10:09:30

标签: sparql wikidata

如何为查询找到正确的属性?

说我想在Wikidata中找到所有国王。

我的第一次尝试是这样:

SELECT ?king ?kingLabel
WHERE
{
   #all result where occupation is king
  ?king wdt:P106 wd:Q12097.

  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }

}

它总共返回515次命中。 我认为对于所有国王来说,这都是一个很小的数目。

第二次尝试

SELECT ?king ?kingLabel
WHERE
{
   # all result where position held is king
  ?king wdt:P39 wd:Q12097.

  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }

}

哪个返回了817次点击。

因此您可以看到我使用了不同的属性:P106P39。他们返回了不同的结果集。而且那只是两个属性,也许还有另外10-12个属性,我还没有发现,这对我的查询会更好。

edit:最重要的是,使用给定属性似乎并非必然。对于P39(保留位置)的属性,某些Wiki页面的值为Q12097(国王),其他维基页面的值为Q6412254(匈牙利国王)。 因此,您可以看到,用一个查询来获取Wikidata中的所有国王是不可能的。还是我应该获取一堆属性并解析它们的值作为国王一词?这将是一场噩梦,但现在找不到更好的方法。

不幸的是,现在对我来说,属性的使用似乎是临时的,因此,我正在使用一种反复试验的方法来发现属性。

所以我的问题是(并且仅与“国王”问题无关):

如果要制定查询条件,如何确定最佳属性?

0 个答案:

没有答案