如何为查询找到正确的属性?
说我想在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次点击。
因此您可以看到我使用了不同的属性:P106
与P39
。他们返回了不同的结果集。而且那只是两个属性,也许还有另外10-12个属性,我还没有发现,这对我的查询会更好。
edit:最重要的是,使用给定属性似乎并非必然。对于P39
(保留位置)的属性,某些Wiki页面的值为Q12097
(国王),其他维基页面的值为Q6412254
(匈牙利国王)。
因此,您可以看到,用一个查询来获取Wikidata中的所有国王是不可能的。还是我应该获取一堆属性并解析它们的值作为国王一词?这将是一场噩梦,但现在找不到更好的方法。
不幸的是,现在对我来说,属性的使用似乎是临时的,因此,我正在使用一种反复试验的方法来发现属性。
所以我的问题是(并且仅与“国王”问题无关):
如果要制定查询条件,如何确定最佳属性?