SPARQL

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
SPARQL
Орган стандартизации Консорциум Всемирной паутины
Создатель Carlos Buil Aranda[вд][1]иEric G. Prud'hommeaux[вд][1]
Последняя версия
  • 1.1
Логотип ВикискладаМедиафайлы на Викискладе

SPARQL(рекурсивный акронимотангл.SPARQL Protocol and RDF Query Language) —язык запросов к данным,представленным по моделиRDF,а такжепротоколдля передачи этих запросов и ответов на них. SPARQL является рекомендациейконсорциума W3C[2]и одной из технологийсемантической паутины[3][4].Предоставление SPARQL-точек доступа (англ.SPARQL-endpoint) является рекомендованной практикой при публикации данных во всемирной паутине[5].

Стандарты W3C

[править|править код]

Обзор:http://www.w3.org/standards/techs/sparql(англ.)

Общая схема запроса

[править|править код]

Как и вSQL,SPARQL декларирует не только чтение, но и манипуляцию данными. Стандарт SPARQL Update описывает команды INSERT и DELETE для добавления и удаления триплетов в хранилище. Однако, обе эти команды оперируют той или иной выборкой, так что основа SPARQL — это команда SELECT.

Общая схема SPARQL-запроса SELECT выглядит так[6]:

PREFIX
# префиксные объявления - служат для указания сокращений URI,
# используемых в запросе.
FROM...
# источники запроса - определяют какие RDF-графы запрашиваются.
SELECT...
# состав результата - определяет возвращаемые элементы данных.
WHERE{...}
# шаблон запроса - определяет, что запрашивать из набора данных.
ORDER BY...
# модификаторы запроса - ограничивают, упорядочивают, преобразуют результаты запроса.

Преимущества

[править|править код]

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

PREFIXfoaf:<http://xmlns.com/foaf/0.1/>
SELECT?name?email
WHERE{
?personafoaf:Person.
?personfoaf:name?name.
?personfoaf:mbox?email.
}

Приведённые параметры используются для описания человека, включённого вFOAF.Это иллюстрирует видение Семантической паутины как единой огромной базы данных[7].Каждый идентификатор в SPARQL, URI, глобально однозначен, в отличие от «email» или «e-mail», обычно используемых в SQL.

Этот запрос может быть распределён на несколько конечных точек SPARQL, разных компьютеров, и сбор результатов осуществляется процедурой, известной какфедеративный поиск[англ.].

Формы запросов

[править|править код]

Язык SPARQL определяет четыре различных варианта запросов для различных целей:

SELECT запрос

Извлекает необработанные значения из точки доступа SPARQL и возвращает результаты в формате таблицы.

CONSTRUCT запрос

Извлекает информацию из точки доступа SPARQL в форматеRDFи преобразовывает результаты к определённой форме.

ASK запрос

Формирует запрос типа Истина/Ложь.

DESCRIBE запрос

Получает описание RDF-ресурса. Реализация поведения DESCRIBE-запросов определяется разработчиком точки доступа SPARQL.

Каждая из этих форм запроса содержит блок WHERE для указания ограничений, хотя в случае запроса DESCRIBE этот блок не является обязательным.

Ключевые слова

[править|править код]

Ниже приведена часть используемых ключевых слов в SPARQL запросах, полный перечень доступен вофициальной документации.

PREFIX— служит для сокращения URI.

OPTIONAL— обозначает необязательный шаблон.

GRAPH— применяет шаблон к именованным графам.

DISTINCT— обеспечивает уникальность решений в ответе на запрос.

LIMIT— задаёт максимальное количество выводимых результатов.

OFFSET— опускает в результате первые n решений.

ORDER BY— позволяет отсортировать результат по возрастанию (ASC()) или по убыванию (DESC())[8].

Сравнение языков запросов к RDF

[править|править код]
  • DQL— основан наXML,запросы и результаты выражаются вDAML+OIL;
  • N3QL— основан наНотации 3;
  • R-DEVICE;
  • RDFQ— основан на XML;
  • RDQ— похож наSQL;
  • RDQL— похож на SQL;
  • SeRQL— похож на SQL, близок к RDQL;
  • Versa— компактный синтаксис (не SQL), исключительно для4Suite(языкPython).

SPARQL 1.0стал стандартом в январе 2008 и включал:

SPARQL 1.0 Язык запросов;
SPARQL 1.0 Протокол;
SPARQL Формат результатов XML.

SPARQL 1.1является актуальной версией и включает:

SPARQL язык запросов и протокол обновлены до 1.1;
SPARQL 1.1 Обновления;
SPARQL 1.1 HTTP-протокол для управления RDF графами;
SPARQL 1.1 Описания служб;
SPARQL 1.1 Логические следствия(Entailments);
SPARQL 1.1 Основные Федеративные запросы[9].

Другой пример запросов SPARQL: «Найти даты выхода серий всех сезонов сериала „Клан Сопрано“»:

PREFIXdbpo:<http://dbpedia.org/ontology/>
SELECT*
WHERE
{
?edbpo:series<http://dbpedia.org/resource/The_Sopranos>.
?edbpo:releaseDate?date.
?edbpo:episodeNumber?number.
?edbpo:seasonNumber?season.
}
ORDER BYDESC(?date)

Переменные обозначаются префиксом «?» или «$».

Чтобы сделать запросы краткими, SPARQL позволяет определять префиксы и основныеURIспособом, подобнымTurtle.В этом запросе префикс «dbpo» обозначает «http://dbpedia.org/ontology/».

Точка доступа SPARQL

[править|править код]

Точка доступа SPARQL — это служба, поддерживающая протокол запросов SPARQL. Точка доступа позволяет пользователю делать запросы к базе знаний. Сервер обрабатывает запрос и возвращает ответ в некотором, обычно машиночитаемом, формате. Таким образом, точки доступа SPARQL в первую очередь являютсяAPIк базам знаний, а представление результатов должно быть реализовано программным обеспечением вызывающей стороны[10].

Различают два вида точек доступа:общего назначенияилокальные.

Точки доступа общего назначения могут производить запросы по любым указанным RDF-документам, находящимся в Сети. А локальные точки доступа способны получать данные только от одного ресурса.

Автоматическое исполнение запросов

[править|править код]

На данный момент для ряда языков программирования существует возможность вызывать SPARQL-запросы[11],существуют инструменты, позволяющие подключать и в полуавтоматическом режиме строить SPARQL-запросы для точки доступа SPARQL, например ViziQuer[12].

  1. 12https://www.w3.org/TR/2013/REC-sparql11-overview-20130321/#Acknowledgements
  2. Semantic Web Activity News(англ.).— Новости семантической паутины. Дата обращения: 10 июня 2011. Архивировано изоригинала2 июня 2012 года.
  3. W3C Semantic Web Activity Publications(англ.).W3C.— Перечень публикаций W3C по проекту семантической паутины. Дата обращения: 23 ноября 2009. Архивировано изоригинала2 июня 2012 года.
  4. Berners-Lee looks for Web's big leap(англ.).— Интервью Тима Бернерса-Ли. Дата обращения: 10 июня 2011. Архивировано изоригинала30 сентября 2007 года.
  5. Tim Berners-Lee.Linked Data. Design Issues.(англ.).— Заметки по публикации данных в семантической паутине. Дата обращения: 14 июня 2011. Архивировано изоригинала2 июня 2012 года.
  6. Structure of a SPARQL Query(англ.).— Структура SPARQL запроса. Дата обращения: 10 июня 2011. Архивировано изоригинала11 февраля 2012 года.
  7. Tim Berners-Lee.Semantic Web Roadmap.— 1998.Архивировано12 августа 2011 года.
  8. SPARQL Query Language for RDF(англ.).— SPARQL Query Language for RDF. Дата обращения: 28 июня 2011. Архивировано изоригинала2 июня 2012 года.
  9. SPARQL by example(англ.).— SPARQL by example. Дата обращения: 28 июня 2011. Архивировано изоригинала11 февраля 2012 года.
  10. SPARQL-endpoint.Дата обращения: 24 июня 2011. Архивировано изоригинала7 июля 2011 года.
  11. SPARQL Implementation Coverage Report(англ.).— Обзор полноты реализаций SPARQL. Дата обращения: 23 ноября 2009. Архивировано изоригинала2 июня 2012 года.
  12. ViziQuer(англ.).— Утилита для структурированного семантического поиска данных. Дата обращения: 10 июня 2011. Архивировано изоригинала2 июня 2012 года.