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,该实体可以是项目,属性甚至是词位?
答案 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会猜测您的语言并相应地调整结果。如果您不住在英语国家,那么上面的示例可能会失败。