Получить все элементы 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
и отфильтровать пространство имен следующим образом:
Тем не менее, есть внешний инструмент запросов, запрос 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 года (<<< Предупреждение : эта ссылка ведет к подробностям о насильственном преступлении.)