如何获取属性实体的Wikidata ID?是否有适用于python的API?

时间:2019-12-19 11:41:48

标签: python wikidata wikidata-api

MediaWiki API能够找到具有请求URL的项目的ID: /w/api.php?action=query&format=json&prop=pageprops&titles=skype&formatversion=2&ppprop=wikibase_item

结果是:

{
    "batchcomplete": true,
    "query": {
        "normalized": [
            {
                "fromencoded": false,
                "from": "skype",
                "to": "Skype"
            }
        ],
        "pages": [
            {
                "pageid": 424589,
                "ns": 0,
                "title": "Skype",
                "pageprops": {
                    "wikibase_item": "Q40984"
                }
            }
        ]
    }
}

但是,在查询某个属性(例如开发者P178)时,它不能很好地工作。结果是Q409857,而不是所需的P178:

{
    "batchcomplete": true,
    "query": {
        "normalized": [
            {
                "fromencoded": false,
                "from": "developer",
                "to": "Developer"
            }
        ],
        "pages": [
            {
                "pageid": 179684,
                "ns": 0,
                "title": "Developer",
                "pageprops": {
                    "wikibase_item": "Q409857"
                }
            }
        ]
    }
}

有什么方法可以获取实体的ID,该实体可以是项目,属性甚至是词位?

1 个答案:

答案 0 :(得分:1)

您可以在Wikidata上使用search API

例如,要查找内部名称为“ developer”的属性,请使用 https://www.wikidata.org/w/api.php?action=query&list=search&srsearch=developer&srnamespace=120

120是属性名称空间。要找到一个词素,请使用srnamespace = 146。

请注意,此API会猜测您的语言并相应地调整结果。如果您不住在英语国家,那么上面的示例可能会失败。