Викиданные:Сервис запросов SPARQL/Краткое введение в сервис запросов Викиданных

This page is a translated version of the page Wikidata:SPARQL query service/A gentle introduction to the Wikidata Query Service and the translation is 100% complete.

Other languages:
Afrikaans • ‎Bahasa Indonesia • ‎Deutsch • ‎English • ‎Türkçe • ‎català • ‎español • ‎français • ‎italiano • ‎polski • ‎português do Brasil • ‎svenska • ‎русский • ‎српски / srpski • ‎українська • ‎العربية • ‎বাংলা • ‎中文 • ‎日本語

Краткое введение в сервис запросов Викиданных

Задумывались ли вы о подобных вопросах?

  • В каких крупнейших городах мира мэром работает женщина?
  • Какие аэропорты расположены в 100 км от Берлина?
  • Кем были все известные потомки Чингисхана?

В Викиданных есть эти ответы.

Что такое Викиданные?

Викиданные - это хранилище знаний. Вы можете прочитать введение в идею и концепцию Викиданных на вводной странице.

Как мне задать вопрос?

Для задания подобных вопросов в Викиданных используется язык запросов, называемый SPARQL. Если это звучит слишком технически и слишком сложно для вас, не волнуйтесь. Для этого краткого введения вам не придётся изучать SPARQL. Вместо этого мы рассмотрим существующие примеры запросов и способы их редактирования.

Что такое запрос?

Запрос - это особая форма вопроса, которую компьютерные системы могут понять и ответить. Если вы не взаимодействуете с искусственным интеллектом, вам нужно будет научиться формулировать свои вопросы определённым образом.

Могу ли я свободно использовать эти данные?

Да. Викиданные могут использоваться кем угодно и с любой целью, потому что все данные находятся в свободном доступе (CC0).

Что теперь?

Мы начнем с простого примера, чтобы показать, как использовать этот сервис, и, когда уже перейдём к более сложным примерам, вы получите ответ на этот глубокий вопрос. Обещаем.

Как использовать Викиданные для простого запроса

Давайте рассмотрим простой пример, демонстрирующий, как получить список всех известных кошек в мире.

Получение списка всех кошек в мире

Используйте этот URL для доступа к службе запросов: https://query.wikidata.org

  1. Нажмите «Примеры»
  2. Выберите «Кошки» из списка, который появится в новом окне
  3. Нажмите «Выполнить» под полем с кодом

 

Мы получили список всех известных кошек в Интернете — или по крайней мере о тех, которые известны Викиданным. Это замечательно, если вы — любитель кошек, а не собак.

А как насчёт собак?

Если вы хотите, например, получить список собак (или что-то другое), есть два способа изменить ваш запрос:

  1. Используйте Помощник Запросов, чтобы изменить элемент с cat на zoo:  
  2. Редактировать запрос вручную Каждый элемент в Викиданных имеет уникальный кодовый идентификатор. Код Q146 для понятия «кошка». Чтобы найти соответствующий код для «собаки», вы можете найти его в Викиданных:
  1. Использовать автозаполнение (будет рассмотрено в конце)
  2. Начните с примера "Кошка", удалите "Q146"
  3. Поместить курсор после "wd:"
  4. Введите «Собака» после «wd:»
  5. Нажмите Ctrl + Пробел
  6. Используйте стрелки вверх/вниз; когда вы нажмете Enter - он будет заменен на Q144
    Примечание: результаты поиска зависят от языка интерфейса.
  1. Перейдите на https://www.wikidata.org
  2. Введите «собака» в поле поиска
  3. Нажмите на первый результат из выпадающего меню
  4. Запомните номер для «собаки» с открывшейся страницы Викиданных (Q144)

 

Чтобы изменить свой запрос с «кошка» на «собака», просто замените Q146 на Q144 в редакторе запросов SPARQL.

Запустите процесс, и вам будет представлен список всех известных и неизвестных собак в Интернете.

 

Разбираем запрос

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

#Cats
SELECT ?item ?itemLabel
WHERE
{
	?item wdt:P31 wd:Q146 . 
	SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
  • SELECT Запрос отбирает (англ. select) нечто. Что конкретно вы хотите выбрать и отобразить — объяснено далее, а пока вы просто объявляете заполнители (или переменные). Вот они, с названиями ?item и ?itemLabel. Нечто является переменной, если оно начинается с вопросительного знака.
  • ?item Это список элементов, которые мы ищем. В нашем случае это будут известные кошки. Элементы в Викиданных работают на многих (почти 300) различных языках. Поскольку мы не думаем, что всё на свете английское и все другие языки лишь особые варианты английского, элементы хранятся в виде, независимом от языка. Каждое понятие получает номер. Q146 — это понятие «кошка», Q64 — Берлин в Германии, Q42 — писатель Дуглас Адамс и так далее. Совет: ?item — это просто имя переменной, которое мы решили использовать в нашем запросе. Оно могло быть любым, например: ?animal.
  • ?itemLabel Люди могут обращаться с именами на человеческом языке гораздо лучше, чем с числами. Метка (англ. label) — это имя элемента на человеческом языке, например, на английском (или эсперанто, или японском, или зулу…). Мы хотим, чтобы в нашем запросе показывались метки, так чтобы Q1371145 стало Socks (кошка, принадлежащая Биллу Клинтону и его семье). Точные детали о сервисе меток см. в Руководстве пользователя.
  • WHERE {   Это условие WHERE запроса. Здесь мы определяем, что будет в заполнителях. Условие WHERE начинается с открывающей фигурной скобки { и заканчивается закрывающей фигурной скобкой }.
  • wdt:P31 Это предикат подлежащего. Если вы наведёте на него мышкой, то увидите, что он означает instance of («это частный случай понятия»).

 

  • wd:Q146 . Это объект предиката. Если вы наведёте на него мышкой, то увидите, что он означает cat (кошка).

 

Всё это довольно многословно. Для удобства можно выразить запрос естественным языком:

«Дай мне список элементов и их меток, где элементы — это частный случай понятия «кошка». Затем сгенерируй метки для элементов на английском языке.»

С помощью кода, который мы использовали в наших примерах, мы показали вам список всех известных кошек в интернете. Этот запрос можно легко изменить, чтобы получить схожий список, например, для собак.

Перевод текста в SPARQL

Анимации ниже показывают, как писать триплеты на естественном языке и конвертировать их в SPARQL-запросы.

Ключ в том, чтобы предварять переменные знаком ?, элементы — wd: и свойства — wdt:, и затем использовать комбинацию Ctrl+Space (или Ctrl+Alt+Space, или Alt+Enter), чтобы активировать функцию автодополнения, которая заменяет последние два на идентификаторы Викиданных.

 

 

Погружение в пользовательский интерфейс

Как изменить язык отображения результатов?

С помощью этого инструмента запросов можно не только адаптировать и искать по простым или агрегированным, вложенным, сложным запросам, но также можно искать на ЛЮБОМ языке и получать результаты также на ЛЮБОМ языке.

  • Измените код языка по умолчанию с "en" (английский) на любой другой код языка, например "ja" для японского.
#Cats  
SELECT ?item ?itemLabel WHERE
{
     ?item wdt:P31 wd:Q146 .
     SERVICE wikibase:label { bd:serviceParam wikibase:language "ja" }
}

Как изменить порядок сортировки отображаемых результатов?

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

 

Как изменить язык интерфейса?

Нажмите на слово «English» и выберите язык из списка:

 

Обратите внимание, что пользовательский интерфейс изменился на выбранный язык:

Но я хочу фотографии кошек! Как искать изображения?

До сих пор мы видели вывод запросов, отображаемых в виде таблицы. Давайте попробуем несколько изображений:

Нажмите кнопку «Примеры» и выберите «Ещё больше кошек, с изображениями». Запустите запрос, и картинки с кошками должны появиться в нижней половине экрана.

 

Вот то, что показывает результаты как изображения вместо таблицы. Вы можете вручную переключить, как показываются данные, с помощью меню "Display" в нижнем правом углу результата. Попробуйте переключить меню на "Table", чтобы показать те же результаты в виде таблицы.

Давайте посмотрим, что нового в этом запросе по сравнению с запросом из предыдущей главы. На естественном языке запрос читался бы так: "Дай мне все элементы, как-то относящиеся к кошкам. Дай мне также изображение каждого элемента. И кстати говоря, покажи результат как сетку изображений, а не как таблицу."

  • #defaultView:ImageGrid Это выглядит как комментарий, но на самом деле это инструкция показать результат запроса в виде изображений, а не таблицы.
  • ?x1 Это означает, что мы запрашиваем любой предикат, не только "это частный случай понятия". Подумайте о предикатах вроде "изображённый объект" (P180) или "названо в честь" (P138). Мы не используем ?x1 где-либо ещё в этом запросе, поэтому этот заполнитель означает "мне не важно, какой именно будет предикат, дай мне все результаты, имеющие кошку в качестве подлежащего".
  • OPTIONAL Внутри фигурных скобок вы видите другое утверждение, добавляющее необязательные (англ. optional) данные к результату. Заполнитель ?item используется вновь и соединяется с предикатом P18 (означающим "изображение") и новым заполнителем ?pic. Обёртывание этого утверждения с помощью OPTIONAL означает, что элементы необязательно должны иметь предикат P18, чтобы оказаться в списке, и что заполнитель ?pic может быть пустым.

Попробуйте изменить запрос:

  • Поищите собак вместо кошек. Подсказка: Измените объектную часть первого утверждения в WHERE.
  • Покажите только элементы, которые "изображают" кошек (вы получите картины). Подсказка: измените ?x1 на что-то другое.
  • Удалите OPTIONAL.

Существуют другие способы показать ваши данные, но не все из них всегда применимы, именно поэтому некоторые из них показаны в меню серым цветом. "Сетка изображений" доступна для выбора, только если результирующие данные на самом деле содержат ссылки на изображения. В одном из следующих разделов вы научитесь показывать элементы как точки на карте.

Как поделиться вашим запросом с другими?

Если вы хотите поделиться своим запросом с кем-либо ещё — например, в социальных сетях — вы можете создать короткую ссылку на ваш запрос.

  • Выполните ваш запрос
  • Нажмите на иконку ССЫЛКИ
  • Скопируйте указанный URL-адрес. Это URL-адрес запроса.

Поиск чего-либо на картах

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

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


Использование диалога Explorer

Когда результаты запроса загрузились, можно увидеть иконку увеличительного стекла у каждого результата. Нажатие на эту иконку открывает диалог Explorer.

 

Диалог Explorer'а по умолчанию показывает единственный узел, соответствующий данному конкретному результату. Ниже узла можно увидеть переключатель, установленный по умолчанию в "Outgoing". Это означает, что нажатие на любой узел раскроет все свойства этого узла из всей базы знаний Викиданных. Переключение его в "Incoming" позволит вам увидеть все входящие ссылки или свойства, указывающие на данный узел. Таким способом можно исследовать все отношения между различными элементами и их свойствами, используя Викиданные.

 

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

И более того

Есть и другие визуализации, ждущие вашего исследования:

Просмотрите примеры запросов и попробуйте их!

Автозаполнение

Чтобы увидеть предлагаемые варианты кода, которые могут быть применимы в определённом месте запроса, вы можете нажать комбинацию Ctrl+Space. Выберите подходящее предложение стрелками up/down и клавишей Enter.

Например, вместо того, чтобы писать каждый раз SERVICE wikibase:label { bd:serviceParam wikibase:language "ru". }, вы можете напечатать SERV и нажать Ctrl+Space, — первым предложением будет именно полная формула обращения к службе меток! Чтобы выбрать её, просто нажмите Enter (форматирование будет немного отличаться, но это неважно).

Автозаполнение может также и искать для вас. Если вы наберёте один из префиксов Викиданных, например wd: или wdt:, и затем просто напишете текст, комбинация Ctrl+Space будет искать этот текст в Викиданных и подсказывать результаты. wd: ищет по элементам, wdt: — по свойствам. Например, вместо того, чтобы искать элементы для Johann Sebastian Bach (Q1339) и father (P22), можно просто набрать wd:Bach и wdt:fath и затем просто выбрать нужную строку из автозаполнения. (Это работает даже с пробелами в тексте, например wd:Johann Sebastian Bach.)

NB: Для пользователей ChromeOS и MacOS: горячие клавиши Ctrl+Alt+Space и Alt+Enter также должны работать.

Куда перейти дальше

Теперь вы, вероятно, можете разобраться с Сервисом запросов Викиданных. Исследование интерфейса и изменение значений в запросах может быть хорошим способом научиться задавать свои собственные вопросы Викиданным.