Получение читаемых результатов из Wikidata
Ok поэтому я пытаюсь получить информацию из Wikidata о фильмах, возьмите этот фильм, например:https://www.wikidata.org/wiki/Q24871
на странице данные четко отображаются в удобочитаемом формате, однако при попытке извлечь их через API вы получаете следующее:https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q24871
вот раздел из него:
"P272": [
{
"id": "q2487121C959-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": "q24871777445-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": "q24871009F7A-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"
]
}
]
}
],
проблема в том, что я не уверен, как разделы конвертировать в читаемый текст. Я получаю, что API вызывает ссылку между классом и его свойствами, используя уникальные идентификаторы, но я все еще застрял.
это действительно возможно в настоящее время или я лаю не на то дерево?
3 ответов
то, что вы должны искать, это numeric-id
s в каждом заявлении и добавьте ведущий Q
для восстановления идентификаторов wikidata, которые должны привести к ['Q775450', 'Q3041294', 'Q646968', 'Q434841', 'Q11920']
[обновление: теперь вы можете напрямую получить доступ к Q id в mainsnak.datavalue.value.id
, вместо того, чтобы строить его из numeric-id
]
это можно сделать с помощью wikidata-sdk (JS lib, который я разработал) simplifyClaims
функции
как только вы получили эти идентификаторы, вы просто необходимо запросить метки сущностей с помощью wbgetentities
API-интерфейс:
https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q775450|Q3041294|Q646968|Q434841|Q11920&format=json&props=labels
вы даже можете получить результаты только для некоторых языков, с помощью : https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q775450|Q3041294|Q646968|Q434841|Q11920&format=json&props=labels&languages=en|de|fr
Ok поэтому я не нашел решения для использования это система " wbgetentities "я обнаружил, что вы можете использовать команду" parse " для получения структуры html.
https://www.wikidata.org/w/api.php?action=parse&page=Q24871
в то время как он по-прежнему будет нуждаться в некоторой обработке его гораздо проще, чем предыдущее решение.
Я вижу принятый ответ, но изначально интерпретировал вопрос по-другому. В основном просят иметь тот же вывод в JSON, который вы видите на странице элемента Wikidata.
Я использую Интерфейс Запроса Wikidata чтобы получить мой запрос и проверить результаты. Тогда используйте ... объясняя, почему вы видите так много ненужных пробелов выше.
Читайте также: