/* GoogleAds */

Главная

ПРОЕКТ "ЧЕЛОВЕК. ЗЕМЛЯ. ВСЕЛЕННАЯ"

Инструменты пользователя

Инструменты сайта


project:comp:sparql1



Язык запросов SPARQL для "чайников", начинающих, Dummies на примерах. query.wikidata.org. Простые примеры

В Интернете существует большое количество общедоступных Баз Знаний (knowledge base, KB) и не никакой необходимости обращаться к, например, Википедии, чтобы из неё выдирать какие-то знания. Из Википедии и других подобных энциклопедий программными средствами уже давно всё «выдрано» и помещено в Базы Знаний. Можно просто обратить к эти Базам Знаний и получить структурированную информацию, согласно вашим запросам.

Что должен знать современный человек?

Как это делается?

Во-первых, есть специальны язык для подобных запросов. Он называется SPARQL или SPARQL Protocol and RDF Query Language) — язык запросов к данным, представленным по модели RDF, а также протокол для передачи этих запросов и ответов на них.

Во-вторых, в Интернете есть специальные площадки (сайты), на которых можно использовать эти запросы и получать нужную информацию из нужных Баз Знаний.

Давайте разбираться на примерах, как это сделать. Тем более, что на просторах русскоязычного Интернета, нет так уж и много информации об этом и приходилось её собирать по крупинкам.

Рассмотрим всё на примере площадки https://query.wikidata.org

Съешьте что-то цитрусовое и сладкое для активизации мозговой активности, устраивайтесь поудобнее и запаситесь достаточным количество времени. Поехали! :-)

query.wikidata.org

Запросы к Wikidata можно составлять с помощью различных SPARQL-клиентов, а также с помощью общедоступной и публичной точки доступа SPARQL, имеющей простой веб-интерфейс.

Результаты запросов можно скачать в формате CSV и импортировать в Excel. И дальше уже там их анализировать. Или в других программах.

В таблице результатов можно отфильтровать результаты, используя поиск по всем полям сразу.

Документация ресурса

Простые SPARQL-запросы. Пример с кошками

Перейдите на площадку запросов https://query.wikidata.org. Вы увидите окно для ввода запросов. Слева от окна ввода запроса есть меню:

  1. Помощник по запросам, который поможет вам грамотно составить запрос, выбирая нужные признаки. Документация по помощнику - https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/Query_Helper
  2. Переключиться в полноэкранный режим редактора
  3. Префиксы
  4. Форматировать запрос
  5. Примеры
  6. ???
  7. Очистить запрос
  8. Короткий URL-адрес к этой странице

Для начала перейдите в левом меню в пункт «Примеры». Вы увидите список различных примеров. Выберите пример Cats (щёлкните по нему мышкой). Вы вернётесь в интерфейс для ввода запросов, и увидите что в поле запросов появился какой-то текст. Это и есть запрос к системе:

#Cats
SELECT ?item ?itemLabel 
WHERE 
{
  ?item wdt:P31 wd:Q146.
  SERVICE wikibase:label { bd:serviceParam wikibase:LANGUAGE "[AUTO_LANGUAGE],en". }
}

Пока непонятно, о чём этот запрос… 8-O

Щелкните на кнопку выполнения запроса слева (белый треугольник на синем фоне) «Выполнить запрос». Система начнёт выполнять этот запрос и через некоторое время на экране появится таблица.

Разберём теперь сам запрос. Как вы уже догадались, с помощью этого запроса можно получить список имён кошек, для которых есть странички в Википедии. Да-да! У некоторых известных кошек в Википедии есть собственные страницы. Например, у кошки Джорджа Буша - Индии: https://ru.wikipedia.org/wiki/Индия_(кошка)

Если кто не знал, то для знаменитых кошек есть вообще отдельная категория: https://ru.wikipedia.org/wiki/Категория:Знаменитые_кошки =)

Тем, кто знаком языком запросов SQL многие нюансы SPARQL-запросов покажутся знакомыми. Для остальных объясним всё немного подробнее.

Посмотрите ещё раз на запрос. В общем смысле он означает, что нужно из Базы Знаний выбрать (SELECT) ИМЕНА конкретных кошек, у которых есть странички в Википедии, как в русскоязычной, так и в других. Для выборки используются определённые признаки:

  • wdt:P31 - означает, что это конкретный объект
  • wd:Q146 - означает, что поиск идёт в категории «Кошки».

Когда вы наводите курсор на эти параметры в запросе, то система даёт подсказки, что это за параметры. Также значения их можно посмотреть в первом пункте левого меню «Помощник по запросам».

Разберём запрос построчно:

  • #Cats - это комментарии к запросу. Интерпретатор запросов эту строку не обрабатывает. Комментарии нужны, чтобы пояснять те или иные нюансы в программах, запросах. В данном случае комментарий обозначает название запроса - о кошках.
  • SELECT ?item ?itemLabel - эта строка выбирает из Базы Знаний определённые поля, Например, ?itemLabel - это имена объектов, то есть кошек.
  • ?item wdt:P31 wd:Q146 - выбор данных по указанным параметрам: это конкретные объекты (wdt:P31) и это кошки (wd:Q146).

Запустив запрос на выполнение, вы получите список кошек. Можно щёлкнуть в правом столбике на идентификатор (item) конкретной кошки, например, https://www.wikidata.org/wiki/Q79407468, и перейти на страницу описания этой кошки в системе Wikidata. На этой странице вы сможете увидеть разные свойства описания этой кошки (Property).

Сама ссылка на страницу Википедии этой кошки находится в самом низу в разделе Википедия.

Следующий пример выводит список кошек с изображениями:

# ?pic - поле изображений
SELECT ?item ?itemLabel ?pic
WHERE
{
?item wdt:P31 wd:Q146.
# P18 - свойство изображение
?item wdt:P18 ?pic
SERVICE wikibase:label { bd:serviceParam wikibase:LANGUAGE "[AUTO_LANGUAGE],en" }
}

Что должен знать современный человек?

Карта лечебных учреждений

SELECT * WHERE {
  ?item wdt:P31/wdt:P279* wd:Q16917;
        wdt:P625 ?geo .
}

В данном примере мы определяем следующие параметры:

  • P31 - конкретный объект
  • wdt:P279 - это подкласс
  • wd:Q16917 - больницы
  • wdt:P625 - географические кординаты
  • ?geo - вывести карту с объектами «больница»

Также мы можем подсчитать количество лечебных учреждений в Википедии:

SELECT (COUNT(?item) AS ?COUNT) 
WHERE {
  ?item wdt:P31 wd:Q16917.
}

В данном запросе мы:

  • делаем выборку больниц (параметр wd:Q16917)
  • подсчитываем и выводим их количество с помощью оператора: (COUNT(?item) AS ?count)

Результат: в Википедии есть 17749 страничек больниц.

Количество страниц людей в Википедии

SELECT (COUNT(?item) AS ?COUNT)
WHERE {
	?item wdt:P31 wd:Q5 .
}

В данном запросе мы:

  • делаем выборку людей (параметр wd:Q5)
  • подсчитываем и выводим их количество с помощью оператора: (COUNT(?item) AS ?count)

Люди без детей

#Demonstrates "no value" handling
SELECT ?human ?humanLabel
WHERE
{
	?human wdt:P31 wd:Q5 .
	?human rdf:TYPE wdno:P40 .
	SERVICE wikibase:label { bd:serviceParam wikibase:LANGUAGE "[AUTO_LANGUAGE],en" }
}

В данном запросе мы:

  • делаем выборку людей (параметр wd:Q5)
  • выбираем из них тех, у кого параметр «дети этого человека» P40 (child) не имеет значения («no value») или wdno:P40

Результат: На 9 апреля 2020 года в Википедии есть страницы у 6814728 человек.

Что должен знать современный человек?

!!Рекомендуем: Что должен знать современный человек?Самоанализ. Работа над собойБазы знаний. ОглавлениеГлавная сайта

project/comp/sparql1.txt · Последние изменения: 2023/09/03 22:22 (внешнее изменение)

Вы можете оставить свои комментарии в разделе "Обсуждение".
Рекомендуем оформить подписку на новости данного раздела. Для этого нажмите на кнопку "Подписаться", расположенную справа снизу каждой страницы (знак конверта).




Индекс цитирования