如何在Wikidata API中按实例搜索实体

时间:2018-03-10 00:06:10

标签: api mediawiki-api wikidata

我试过没有成功获得此查询:

https://www.wikidata.org/w/api.php?action=wbsearchentities&search=arturo&format=json&language=en&uselang=en&type=item

但仅限于来自实例的元素"人类的#34;,这意味着来自P31 : Q5

任何帮助都会得到预防,因为我无法找到设置这些道具的方法。 这种查询在SPARQL中爆炸,但是如果某人有相对答案来获得相同的结果(搜索所有名字以....开头的人)也会被预先确定。

1 个答案:

答案 0 :(得分:3)

我真的不确定Mediawiki API是否可行。这是不可能a few years ago我不认为这个功能从那时起就已经实施了。

但Open Refine基于可以按类型(“instance of”)或属性过滤的API a reconciliation service with Wikidata。它的开发人员还没有明确地宣传它作为一个独立的API,但这是在项目中。以下是一个使用示例:在维基数据中找到称为“arturo”人类(Q5)并且其职业(P106)为演员(Q33999)的人。

https://tools.wmflabs.org/openrefine-wikidata/en/api?query={
                      "query":"arturo",
                      "limit":6,
                      "type" : "Q5",
                      "properties" : [
                         { "pid" : "P106" , "v" : "Q33999"}
                         ]
                         }

Result.

此查询的主要问题是它只会返回显式为Q5实例的Arturos。这将是this one的情况,但不是那些例如仅仅是“电影制片人”的例子(电影制作者本身就是“人类”的子类并不重要)。 Sparql可以使用属性路径处理类传递性(例如:wdt:P279 * / wdt:P31 *),但是这个API尚未(尚未)实现它们。