首页 > 解决方案 > 如何为 Wikidata Sparql 查询找到正确的属性?

问题描述

我应该如何找到查询的正确属性?

假设我想在 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 次点击。

所以你可以看到我使用了不同的属性:P106vs P39。他们返回了不同的结果集。这些只是两个属性,也许它还存在另外 10-12 个我尚未发现的属性,并且对我的查询会更好。

编辑:最重要的是,给定属性的使用似乎并没有随之而来。对于P39(担任的职位)的财产,一些维基页面具有Q12097(国王)其他人Q6412254(匈牙利国王)的价值。因此,正如您所见,不可能通过一次查询来获取 wikidata 中的所有国王。或者我应该获取一堆属性并解析它们的值以获取单词 king?这将是一场噩梦,但现在找不到更好的方法。

不幸的是,现在属性的使用对我来说似乎是临时的,因此我正在使用试错法来发现属性。

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

如果我想制定一个查询,我该如何决定哪个是最好的属性?

标签: sparqlwikidata

解决方案


推荐阅读