如何按属性查找Wikidata实体?

Inf*_*Inf 6 sparql wikidata linked-data wikidata-api

我想知道,有没有办法通过指定的属性使用他们的API查找维基数据实体.例如,有很多实体具有Freebase ID属性(属性:P646).它是唯一标识符,我希望通过此标识符获取实体.

谁知道如何实现这一目标?

max*_*ath 10

[ 更新答案:使用SPARQL端点]

wdq正在被官方SPARQL端点取代,其中此查询如下所示:

PREFIX wdt: <http://www.wikidata.org/prop/direct/>
SELECT ?item ?itemLabel WHERE {
  ?item wdt:P646 "/m/0gnfq" .
}
Run Code Online (Sandbox Code Playgroud)

你可以在query.wikidata.org上试试

要在JSON中获取此查询的结果,您可以在" https://query.wikidata.org/sparql?format=json&query=YOURQUERY "中发出请求,其中YOURQUERY是URI编码的SPARQL查询:

https://query.wikidata.org/sparql?format=json&query=PREFIX%20wikibase%3A%20%3Chttp%3A%2F%2Fwikiba.se%2Fontology%23%3E%20PREFIX%20wdt%3A%20%3Chttp% 3A%2F%2Fwww.wikidata.org%2Fprop%2Fdirect%2F%3E%20SELECT%20%3Fitem%20%3FitemLabel%20WHERE%20%7B%20%3Fitem%20wdt%3AP646%20%22%2FM%2F0gnfq% 22%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%20%20%7D%20%7D

[ 旧答案:使用WDQ]

你可以像这样获取wmflabs API(文档):

http://wdq.wmflabs.org/api?q=string[646:/m/0gnfq]
Run Code Online (Sandbox Code Playgroud)

在这里,我查询具有646值属性的wikidata实体/m/0gnfq.

答案如下:

{
  "status": {
    "error": "OK",
    "items": 1,
    "querytime": "161ms",
    "parsed_query": "STRING[646:'/m/0gnfq']"
  },
  "items": [
    180736
  ]
}
Run Code Online (Sandbox Code Playgroud)

因此,我正在寻找的实体Q180736.

这里,查询使用string参数作为freebase ID是wikidata中的字符串,但对于暗示wikidata实体作为值类型的属性,您将需要使用该claim参数.文档中的一个示例:

索赔[138:676555]返回所有以(P138)Francis of Assisi(Q676555)命名的物品.