2015-07-07 2 views
8

Ok, так что я пытаюсь получить информацию от викиданного о фильмах, возьмите этот фильм, например: 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" 
          ] 
         } 
        ] 
       } 
      ], 

проблема заключается в том, что я не знаю, как преобразовать разделы как и в читаемый текст. Я получаю, что API вызывает связь между классом и его свойствами с использованием уникальных идентификаторов, но я все еще застрял.

Возможно ли это в настоящее время или я лаю неправильное дерево?

ответ

14

Что вы должны искать являются numeric-id s в каждом из утверждений и добавить ведущий Q, чтобы восстановить ваши викиданные идентификаторы, которые должны привести к ['Q775450', 'Q3041294', 'Q646968', 'Q434841', 'Q11920']

[обновление: теперь вы можете получить прямой доступ к Q ID на mainsnak.datavalue.value.id, вместо того, чтобы построить его из numeric-id]

Это может быть сделано с помощью wikidata-sdk (A LIB JS я разработал) simplifyClaims function

После того, как вы получили эти идентификаторы, вам просто нужно запросить Entities этикетки с использованием 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

0

ИТАК I гавань» t нашел решение для использования этой системы «wbgetentities». Я обнаружил, что вы можете использовать команду «parse» для получения структуры html.

https://www.wikidata.org/w/api.php?action=parse&page=Q24871

Хотя он по-прежнему будет нуждаться некоторую обработку его гораздо проще, чем предыдущее решение.

Смежные вопросы