我想知道,有没有办法通过指定的属性使用他们的API查找维基数据实体。例如,有很多实体具有Freebase ID属性(属性:P646)。它是唯一标识符,我希望通过此标识符获取实体。
任何人都知道如何实现这一目标?
答案 0 :(得分:10)
[更新回答:使用SPARQL端点]
wdq正在被官方SPARQL端点取代,此查询如下所示:
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
SELECT ?item ?itemLabel WHERE {
?item wdt:P646 "/m/0gnfq" .
}
你可以try it at query.wikidata.org
要在JSON中获取此查询的结果,您可以在&#34; https://query.wikidata.org/sparql?format=json&query=YOURQUERY&#34;其中YOURQUERY是URI编码的SPARQL查询:
[旧回答:使用WDQ]
你可以像这样获取wmflabs API(documentation):
http://wdq.wmflabs.org/api?q=string[646:/m/0gnfq]
在这里,我使用值646
的Property /m/0gnfq
查询wikidata实体。
答案如下:
{
"status": {
"error": "OK",
"items": 1,
"querytime": "161ms",
"parsed_query": "STRING[646:'/m/0gnfq']"
},
"items": [
180736
]
}
我正在寻找的实体是Q180736
。
此处,查询使用string
参数,因为freebase ID是wikidata中的字符串,但对于将wikidata实体视为值类型的属性,您需要使用claim
参数。文档中的一个例子:
claim [138:676555]返回所有以其命名的项目 (P138)阿西西的弗朗西斯(Q676555)。
答案 1 :(得分:1)
在那里,您可以输入维基数据的SPARQL查询。例如,对于Freebase属性,它可能如下所示:
<div class="tagBox" ng-repeat="item in inputs">
<input ng-model="itemValue[$index]">
</div>
答案 2 :(得分:1)
我也更喜欢issue 132,但如果您需要有关这些项目的更多信息,请使用Wikidata Query API。例如,在您的情况下,链接到Wikidata API属性的所有项目都是:
https://www.wikidata.org/w/api.php?action=query&format=xml&generator=backlinks&gblnamespace=0&gbllimit=5000&prop=info&gbltitle=Property:P646