SPARQL
| SPARQL | |
|---|---|
| Орган стандартизации | Консорциум Всемирной паутины |
| Создатель | Carlos Buil Aranda[вд][1] и Eric G. Prud'hommeaux[вд][1] |
| Создан | 15 января2008 |
| Последняя версия | |
| Официальный сайт | w3.org/TR/sparql1… (англ.) |
SPARQL (рекурсивный акроним отангл. SPARQL Protocol and RDF Query Language) —язык запросов к данным, представленным по моделиRDF, а такжепротокол для передачи этих запросов и ответов на них. SPARQL является рекомендациейконсорциума W3C[3] и одной из технологийсемантической паутины[4][5]. Предоставление SPARQL-точек доступа (англ. SPARQL-endpoint) является рекомендованной практикой при публикации данных во всемирной паутине[6].
Стандарты W3C
[править |править код]Обзор:http://www.w3.org/standards/techs/sparql (англ.)
- SPARQL 1.1 Overview (англ.) — Обзор языка запросов SPARQL
- SPARQL 1.1 Query Language (англ.) — Команда языка SPARQL для запроса данных
- SPARQL 1.1 Update (англ.) — Команда языка SPARQL для изменения данных
- SPARQL 1.1 Service Description (англ.) — Описание сервиса для выполнения запросов на языке SPARQL
- SPARQL 1.1 Federated Query (англ.) — Запросы на языке SPARQL к нескольким источникам данных
- SPARQL 1.1 Query Results JSON Format (англ.)
- SPARQL 1.1 Query Results CSV and TSV Formats (англ.)
- SPARQL Query Results XML Format (Second Edition) (англ.)
- SPARQL 1.1 Entailment RegimesRecommendation (англ.)
- SPARQL 1.1 Protocol (англ.)
- SPARQL 1.1 Graph Store HTTP Protocol (англ.)
Общая схема запроса
[править |править код]Как и вSQL, SPARQL декларирует не только чтение, но и манипуляцию данными. Стандарт SPARQL Update описывает команды INSERT и DELETE для добавления и удаления триплетов в хранилище. Однако, обе эти команды оперируют той или иной выборкой, так что основа SPARQL — это команда SELECT.
Общая схема SPARQL-запроса SELECT выглядит так[7]:
PREFIX# префиксные объявления - служат для указания сокращений URI,# используемых в запросе.FROM...# источники запроса - определяют какие RDF-графы запрашиваются.SELECT...# состав результата - определяет возвращаемые элементы данных.WHERE{...}# шаблон запроса - определяет, что запрашивать из набора данных.ORDER BY...# модификаторы запроса - ограничивают, упорядочивают, преобразуют результаты запроса.
Преимущества
[править |править код]SPARQL позволяет пользователям писать глобально однозначные запросы. Например, следующий запрос возвращает имена и адреса электронной почты каждого человека в мире:
PREFIXfoaf:<http://xmlns.com/foaf/0.1/>SELECT?name?emailWHERE{?personafoaf:Person.?personfoaf:name?name.?personfoaf:mbox?email.}
Приведённые параметры используются для описания человека, включённого вFOAF. Это иллюстрирует видение Семантической паутины как единой огромной базы данных[8]. Каждый идентификатор в 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())[9].
Сравнение языков запросов к 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 Основные Федеративные запросы[10].
Пример
[править |править код]Другой пример запросов 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 к базам знаний, а представление результатов должно быть реализовано программным обеспечением вызывающей стороны[11].
Различают два вида точек доступа:общего назначения илокальные.
Точки доступа общего назначения могут производить запросы по любым указанным RDF-документам, находящимся в Сети. А локальные точки доступа способны получать данные только от одного ресурса.
Примеры
[править |править код]Автоматическое исполнение запросов
[править |править код]На данный момент для ряда языков программирования существует возможность вызывать SPARQL-запросы[12], существуют инструменты, позволяющие подключать и в полуавтоматическом режиме строить SPARQL-запросы для точки доступа SPARQL, например ViziQuer[13].
Примечания
[править |править код]- ↑12https://www.w3.org/TR/2013/REC-sparql11-overview-20130321/#Acknowledgements
- ↑SPARQL 1.1 — 2013.
- ↑Semantic Web Activity News (англ.). — Новости семантической паутины. Дата обращения: 10 июня 2011. Архивировано изоригинала 2 июня 2012 года.
- ↑W3C Semantic Web Activity Publications (англ.). W3C. — Перечень публикаций W3C по проекту семантической паутины. Дата обращения: 23 ноября 2009. Архивировано изоригинала 2 июня 2012 года.
- ↑Berners-Lee looks for Web's big leap (англ.). — Интервью Тима Бернерса-Ли. Дата обращения: 10 июня 2011. Архивировано изоригинала 30 сентября 2007 года.
- ↑Tim Berners-Lee. Linked Data. Design Issues. (англ.). — Заметки по публикации данных в семантической паутине. Дата обращения: 14 июня 2011. Архивировано изоригинала 2 июня 2012 года.
- ↑Structure of a SPARQL Query (англ.). — Структура SPARQL запроса. Дата обращения: 10 июня 2011. Архивировано изоригинала 11 февраля 2012 года.
- ↑Tim Berners-Lee. Semantic Web Roadmap. — 1998. Архивировано 12 августа 2011 года.
- ↑SPARQL Query Language for RDF (англ.). — SPARQL Query Language for RDF. Дата обращения: 28 июня 2011. Архивировано изоригинала 2 июня 2012 года.
- ↑SPARQL by example (англ.). — SPARQL by example. Дата обращения: 28 июня 2011. Архивировано изоригинала 11 февраля 2012 года.
- ↑SPARQL-endpoint . Дата обращения: 24 июня 2011. Архивировано изоригинала 7 июля 2011 года.
- ↑SPARQL Implementation Coverage Report (англ.). — Обзор полноты реализаций SPARQL. Дата обращения: 23 ноября 2009. Архивировано изоригинала 2 июня 2012 года.
- ↑ViziQuer (англ.). — Утилита для структурированного семантического поиска данных. Дата обращения: 10 июня 2011. Архивировано изоригинала 2 июня 2012 года.
Ссылки
[править |править код]- SPARQL Query Language for RDF (англ.) — спецификация языка запросов SPARQL
- Semantic Web Activity News (англ.) — Новости семантической паутины
- Berners-Lee looks for Web’s big leap (англ.) — интервьюТима Бернерса-Ли
- Structure of a SPARQL Query — Структура SPARQL запроса
- SPARQL Protocol for RDF (англ.) — спецификация протокола SPARQL
- Язык запросов SPARQL для RDF — русский перевод спецификации языка SPARQL
- SPARQL Working Group Wiki (англ.)
- RDF Query Survey (англ.)
- XML.com: Introducing SPARQL: Querying the Semantic Web (англ.)
- RDF Query and Rule languages Use Cases and Examples survey (англ.)
- SPARQL — язык запросов к RDF
- SPARQL Query Language for RDF (англ.)