Получить все элементы Wikidata, которые являются экземпляром данного элемента

В Wikidata есть пункт под названием модель смартфона.
Я хочу получить все экземпляры этого.

ВОПРОС: Как программно получить идентификаторы экземпляров, используя живой сервер?

Желательно не включать ложные срабатывания, которые отображаются в WhatLinksHere, но находятся в пространстве имен "Wikidata:", а не в основном пространстве имен.

3 ответа

Ваш вопрос указывает на "Mediawiki API", но это невозможно.

Wikidata имеет службу запросов SPARQL по адресу https://query.wikidata.org/

Запрос, который вы хотите:

PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>

SELECT DISTINCT ?item
WHERE {
    ?item wdt:P31/wdt:P279* wd:Q19723451
}

В этом списке будут перечислены элементы, которые являются "экземпляром" ( P31) "модели смартфона" ( Q19723451) или "экземпляром" "подкласса" ( P279) "модели смартфона" ( Q19723451).

Это пока невозможно. (Вот задача, если вы хотите следить за развитием.)

Лучшее, что вы можете сделать сегодня в Mediawiki API - это использовать action=query а также props=linkshere и отфильтровать пространство имен следующим образом:

http://www.wikidata.org/w/api.php?action=query&prop=linkshere&format=json&lhprop=title&lhnamespace=0&lhlimit=500&titles=Q19723451

Тем не менее, есть внешний инструмент запросов, запрос Wikidata, который будет делать именно то, что вы запрашиваете с этим запросом:

http://wdq.wmflabs.org/api?q=CLAIM[31:19723451]

Просто добавьте Q перед цифрами, и у вас есть идентификатор элемента.

Многие ответы здесь будут связаны с использованием службы SparQL Wikimedia. Мой не будет. Ответ будет: "это зависит от темы". Если вы говорите по-английски, то лучше всего найти категорию, связанную с темой, которую вы хотите запросить.

Возьмем пример «модель смартфона». Это (на момент написания этой статьи в феврале 2021 года) связано с Q19723451 . Похоже, что в разделе «Основная категория темы» есть что-то вроде « Q20195396 ». Кажется, это связано с «Kategorie:Smartphone (Produkt)» в немецкой Википедии, так что мы, похоже, на правильном пути. Как ни странно, на момент написания этой статьи это, кажется, помечено как «Отличается от (P1889)» категории Викимедиа «Категория: Смартфоны (Q6483807)». Независимо от того; посмотрим, что нам даст ссылка на английскую Википедию.

Похоже на прекрасно составленный список моделей смартфонов: https://en.wikipedia.org/wiki/Category:Smartphones . Каждая страница в категории: Смартфоны обычно имеет связанный с ней элемент Викиданных (например, «Fairphone 1» связан с Q21041244). Вы получите несколько дополнительных результатов (например , Fairphone — это компания, а не модель смартфона), но обычно это лучше, чем пытаться сделать общий запрос в Викиданных.

Некоторые категории элементов являются зрелыми в Викиданных, а некоторые нет. Вот почему я сказал: «Это зависит от темы». По многим причинам по состоянию на февраль 2021 года все еще может быть проще использовать API MediaWiki для очистки категорий в английской Википедии, чем использовать Викиданные. Это может измениться в 2022, 2023 или позже (или даже к концу года ).

Обратите внимание, что Фонд Викимедиа предоставляет регулярные дампы данных в форматах JSON и RDF. Вместо выполнения запросов в реальном времени в некоторых случаях лучше загрузить дамп данных и выполнить обработку текста в текстовом файле. Текстовые файлы очень большие , поэтому варианты использования могут быть ограничены, но все же стоит подумать.

Надеюсь, этот ответ скоро устареет. С Днем Святого Валентина ! Щелкая по Викиданным, будьте внимательны, чтобы случайно не наткнуться на события в Чикаго в День святого Валентина 1929 года (<<< Предупреждение : эта ссылка ведет к подробностям о насильственном преступлении.)

Другие вопросы по тегам