Как получить связанное с Wikidata использование API поддержки страницы в MediaWiki - PullRequest
4 голосов
/ 15 апреля 2019

Я видел пару решений, чтобы получить элемент Викиданных со страницы Википедии.Обычно они используют этот API запроса pageprop:

https://en.wikipedia.org/w/api.php?action=query&prop=pageprops&redirects=1&titles=LONDON

Но в моей маленькой версии медиа-вики, когда я выполняю тот же запрос, результат не содержит никакого идентификатора викиданных, даже если страница связана с сайтомна элемент викиданных.

Есть ли какие-либо данные / сценарии, которые мне нужно запустить?Какова может быть возможная причина этого?

Дополнительная информация:

Я также узнал, что, когда я делаю список названий реквизитов, wikibase_item там нет.Ниже приведен тот же пример из Википедии, который работает.

https://en.wikipedia.org/w/api.php?action=query&list=pagepropnames&ppnlimit=100

1 Ответ

0 голосов
/ 24 апреля 2019

Если я правильно понимаю ваш вопрос, вы хотите использовать webentityusage в своем запросе, чтобы получить идентификаторы wikidata.Таким образом, для вашего конкретного примера с Лондоном вы должны использовать:

https://en.wikipedia.org/w/api.php?action=query&prop=pageprops|wbentityusage&titles=London

Запись внизу содержит все данные, связанные с Лондоном: прокрутите вниз в JSON и выПосмотрим:

"wbentityusage": {
    ...
    "Q84": {
      ...
    }
}

Q84 также отображается как "wikibase_item" под pageprops.

Затем все данные, связанные с Лондоном, находятся по адресу: https://www.wikidata.org/wiki/Q84

(к которому также можно получить доступ через wikidata apis)


РЕДАКТИРОВАТЬ: Вот еще один пример.(для элементов, относящихся к викиданным, иногда это может помочь работать в обратном порядке, т. е. перечислить все страницы, которые ссылаются на данные Q [nnn])

На следующей странице википедии используются некоторые элементы викиданных:https://en.wikipedia.org/wiki/Template:Pageid_to_title

В частности, он использует Землю (Q2).Итак, если мы используем API Википедии: https://en.wikipedia.org/w/api.php?action=query&prop=pageprops|wbentityusage&titles=Template:Pageid_to_title

Это покажет Q2 под wbentityusage для pageId 49086285. Не в pageprops.Pageprops покажет только wikibase_item.

Важно отметить, что даже если запрос одинаков как для википедии, так и для викиданных, результаты будут отличаться в зависимости от того, в каком домене вы его выполняете.

Также полезно (работает в обратном порядке): чтобы увидеть, какие страницы википедии ссылаются на определенный элемент викиданных, вы должны использовать

https://en.wikipedia.org/w/api.php?action=query&list=wblistentityusage&wbeuentities=Q2&wbeuprop=url -> Показывает все википедии страниц, ссылающихся на Q2 (Земля)

https://wikidata.org/w/api.php?action=query&list=wblistentityusage&wbeuentities=Q2&wbeuprop=url -> Показывает все викиданные страницы, ссылающиеся на Q2 (Земля)

И, просто для забавы, я отредактировал эту страницу википедии Шаблон: Pageid_to_title для ссылки на Q3(Жизнь) и ... после небольшого терпения в ожидании синхронизации, API теперь отвечает Q3 как один из элементов викиданных, связанных с этой страницей.

...