Есть ли дамп для отображения идентификатора страницы википедии на отображение идентификатора викиданных?

На этой странице: http://wikidata.dbpedia.org/downloads/20160111/ есть дамп называется wikidatawiki-20160111-page-ids.ttl.bz2, который содержит идентификатор Wikidata для того, что они называли идентификатором wikipage. Однако идентификатор страницы в Википедии отличается от идентификатора страницы в Википедии.

например для Германии:

  • Википедия pageid = 11867
  • Идентификатор Wikidata = Q183 и идентификатор wikipage = 322.

Итак, в основном этот дамп отображает Q183 на 322, а мне нужно сопоставить Q183 на 11867.

Для справки: https://en.wikipedia.org/w/index.php?title=Germany&curid=11867 curid в URL-адресе представляет идентификатор страницы Википедии.

Есть ли какой-нибудь эквивалентный файл дампа с идентификаторами Викиданных и страницей Википедии? (Я не хочу использовать API и один за другим зацикливать идентификатор моей страницы Википедии, как этот: https://en.wikipedia.org/w/api.php?action=query&prop=pageprops&format=xml&pageids=11867)

Изменить: я не уверен, что это именно идентификатор wikipage, но, возможно, есть файл сопоставления wikipageId с идентификатором страницы в Википедии поверх дампа, который я упомянул в вопросе.


person user3700389    schedule 15.07.2016    source источник


Ответы (4)


Если вы хотите рассмотреть решение для вызова API вместо использования дамп плюс корректировка формата, вы можете использовать свойство pageprops действия query.

Например, если мы хотим найти элемент Викиданных для Альберта Эйнштейна, учитывая заголовок страницы википедии, вы должны:

 https://en.wikipedia.org/w/api.php?action=query&format=json&prop=pageprops&titles=Albert Einstein

Который дает:

 {
   "batchcomplete": "",
   "query": {
     "pages": {
       "736": {
         "pageid": 736,
         "ns": 0,
         "title": "Albert Einstein",
         "pageprops": {
           "defaultsort": "Einstein, Albert",
           "page_image": "Einstein_1921_by_F_Schmutzer_-_restoration.jpg",
           "wikibase-badge-Q17437798": "1",
           "wikibase_item": "Q937"
         }
       }
     }
   }
 }

Таким образом мы можем получить идентификатор элемента викиданных в wikibase_item.

(На это первоначально ответил Дмитрий Брант в список рассылки Mediawiki-api)

Потенциально это лучшее решение, потому что:

  1. Вы ищите только те элементы, которые вам нужны, вместо того, чтобы перебирать всю свалку.
  2. Вы можете получить ответ напрямую в формате JSON или XML.
person atineoSE    schedule 11.08.2016
comment
Спасибо за ответ, но я заинтересован в полном объеме, хочу держаться подальше от API. Самый быстрый способ, который я нашел до сих пор, - это следующий: файл дампа enwiki-latest-page_props.sql.gz, затем очень короткий код PHP для извлечения каждого блока скобок. Использование API занимает примерно неделю, чтобы получить все, использование файла дампа + регулярное выражение PHP сокращает время до 15 минут. - person user3700389; 11.08.2016
comment
Если вы хотите все это, то вам, вероятно, лучше использовать дамп + извлечение, я просто подумал, что вас может заинтересовать фактическое (возможно, небольшое) подмножество всего дампа. - person atineoSE; 13.08.2016

Я создал пакет Python и инструмент командной строки для решения проблемы под названием wikimapper. Его можно установить через pip install wikimapper. Он использует дампы SQL из Википедии для создания индекса, который затем может использоваться для многократного очень быстрого сопоставления (намного быстрее, чем конечная точка Wikidata SPARQL). Вы можете использовать один из моих предварительно вычисленных индексов и использовать эту базу данных sqlite3 или используйте пакет для сопоставления заголовков страниц Википедии / URL-адресов Википедии с идентификаторами Викиданных и наоборот. Использование имен страниц или URL-адресов вместо внутренних идентификаторов Википедии должно быть более удобным.

person jcklie    schedule 26.04.2019

Наконец-то я нашел дамп для вышеуказанного запроса:
https://dumps.wikimedia.org/enwiki/20160720/

там есть файл:
enwiki-20160720-page_props.sql.gz

проблема в том, что файл является сценарием MySql, в то время как я был ищу файл JSON или XML. Я написал очень короткий скрипт PHP для извлечения блоков скобок и имел формат, соответствующий моим потребностям.

person user3700389    schedule 03.08.2016

Я нашел эту ссылку, возможно, полезной для вас.

Прогресс создания дампа enwiki на 20190401

ссылка: enwiki-20190401-wbc_entity_usage.sql.gz 212,5 МБ

формат такой:

(43094421,'P1070','C.P1630',78195)

какая структура:

`eu_row_id` bigint(20) NOT NULL AUTO_INCREMENT,
`eu_entity_id` varbinary(255) NOT NULL,
`eu_aspect` varbinary(37) NOT NULL,
`eu_page_id` int(11) NOT NULL,
person Betty    schedule 15.04.2019
comment
Привет, я обнаружил, что этот файл не так полезен, как предыдущие: enwiki-20160720-page_props.sql.gz. Я попробовал оба. Формат верхних очень четкий и цельный. - person Betty; 16.04.2019