Как получить все метки значений свойств элемента Викиданных?

Как бы вы запросили набор всех свойств, которыми обладает элемент?

В частности, я ищу английские ярлыки для каждого элемента, который является значением свойства элемента.

Например. "Земля":

{
    "Challenger Deep",
    "Solar System",
    "oblate spheroid",
    "geoid",
    "World Ocean",
    "Afro-Eurasia",
    ...
}

Сейчас я использую библиотеку Wikidata Toolkit, но приму рекомендации.


person Ware    schedule 15.01.2016    source источник


Ответы (1)


Сначала вам нужно использовать MediaWiki API с действием wbgetclaims, чтобы получить все свойства для каждого утверждения. Например, для элемента Викиданных Земля (Q2) запрос будет таким:

https://www.wikidata.org/w/api.php?action=wbgetclaims&format=xml&props=value&entity=Q2

Затем вам нужно разобрать ответ и взять id из value для каждого property. В этом примере для свойства P1589 идентификатор элемента равен Q459173.

Последний шаг — получить все надписи на английском языке по другому запросу. У вас есть два варианта, в обоих из них мы используем все идентификаторы элементов из предыдущего шага, разделенные вертикальной чертой |:

Обновление: я нашел, как получить метки всех значений свойств элемента, используя только один запрос. Идея состоит в том, чтобы найти все ссылки элемента, а затем чтобы отфильтровать из них только те из пространства имен 0, которые начинаются с Q.

https://www.wikidata.org/w/api.php?action=query&titles=Q2&generator=links&gplnamespace=0&gpllimit=100&prop=pageterms&wbptterms=label
person Termininja    schedule 15.01.2016
comment
но могу ли я использовать для этого службу запросов Викиданных SPARQL? - person Alexan; 24.10.2016
comment
теперь кажется, что вы можете напрямую использовать идентификатор вместо числового идентификатора: ‹value entity-type=item numeric-id=459173 id=Q459173/› - person maxlath; 25.10.2016