Oli*_*oit 12 json sparql wikidata wikidata-api
好的,我正试图从维基数据中获取有关电影的信息,以此电影为例:https://www.wikidata.org/wiki/Q24871
在页面上,数据以可读格式清晰显示,但是当您尝试通过API提取数据时,您会得到以下信息:https://www.wikidata.org/w/api.php?action = wbgetentities &ids = Q24871
这是一个部分:
"P272": [
{
"id": "q24871$4721C959-0FCF-49D4-9265-E4FAC217CB6E",
"mainsnak": {
"snaktype": "value",
"property": "P272",
"datatype": "wikibase-item",
"datavalue": {
"value": {
"entity-type": "item",
"numeric-id": 775450
},
"type": "wikibase-entityid"
}
},
"type": "statement",
"rank": "normal"
},
{
"id": "q24871$31777445-1068-4C38-9B4B-96362577C442",
"mainsnak": {
"snaktype": "value",
"property": "P272",
"datatype": "wikibase-item",
"datavalue": {
"value": {
"entity-type": "item",
"numeric-id": 3041294
},
"type": "wikibase-entityid"
}
},
"type": "statement",
"rank": "normal"
},
{
"id": "q24871$08009F7A-8E54-48C3-92D9-75DEF4CF3E8D",
"mainsnak": {
"snaktype": "value",
"property": "P272",
"datatype": "wikibase-item",
"datavalue": {
"value": {
"entity-type": "item",
"numeric-id": 646968
},
"type": "wikibase-entityid"
}
},
"type": "statement",
"rank": "normal"
},
{
"id": "q24871$CA53B5EB-1041-4701-A36E-7C348FAC984E",
"mainsnak": {
"snaktype": "value",
"property": "P272",
"datatype": "wikibase-item",
"datavalue": {
"value": {
"entity-type": "item",
"numeric-id": 434841
},
"type": "wikibase-entityid"
}
},
"type": "statement",
"rank": "normal",
"references": [
{
"hash": "50f57a3dbac4708ce4ae4a827c0afac7fcdb4a5c",
"snaks": {
"P143": [
{
"snaktype": "value",
"property": "P143",
"datatype": "wikibase-item",
"datavalue": {
"value": {
"entity-type": "item",
"numeric-id": 11920
},
"type": "wikibase-entityid"
}
}
]
},
"snaks-order": [
"P143"
]
}
]
}
],
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何将这样的部分转换成可读的文本.我得到API使用唯一ID调用类及其属性之间的链接但我仍然卡住了.
目前这实际上是可能的还是我在错误的树上吠叫?
max*_*ath 18
你应该寻找的是numeric-id
每个陈述中的s并添加一个领先Q
的恢复你的wikidata id,这应该导致['Q775450', 'Q3041294', 'Q646968', 'Q434841', 'Q11920']
[ 更新:你现在可以直接访问Q id mainsnak.datavalue.value.id
,而不必从中构建它numeric-id
]
这可以使用wikidata-sdk(我开发的JS lib)simplifyClaims
函数来完成
获得这些ID后,您只需要使用wbgetentities
API 请求实体标签:
https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q775450|Q3041294|Q646968|Q434841|Q11920&format=json&props=labels
您甚至可以使用以下languages
参数获得某些语言的结果:https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q775450|Q3041294|Q646968|Q434841|Q11920&format=json&props=labels&languages=en|de|fr