SPARQL (рекурсивный акроним от ) — язык запросов к данным, представленным по модели RDF, а также протокол для передачи этих запросов и ответов на них. SPARQL является рекомендацией консорциума W3C и одной из технологий семантической паутины. Предоставление SPARQL-точек доступа () является рекомендованной практикой при публикации данных во всемирной паутине.
Стандарты W3C Обзор: http://www.w3.org/standards/techs/sparql — Обзор языка запросов SPARQL — Команда языка SPARQL для запроса данных — Команда языка SPARQL для изменения данных — Описание сервиса для выполнения запросов на языке SPARQL — Запросы на языке SPARQL к нескольким источникам данных
Общая схема запроса Как и в SQL, SPARQL декларирует не только чтение, но и манипуляцию данными. Стандарт SPARQL Update описывает команды INSERT и DELETE для добавления и удаления триплетов в хранилище. Однако, обе эти команды оперируют той или иной выборкой, так что основа SPARQL — это команда SELECT.
Общая схема SPARQL-запроса SELECT выглядит так: PREFIX # префиксные объявления - служат для указания сокращений URI, # используемых в запросе. FROM ... # источники запроса - определяют какие RDF-графы запрашиваются. SELECT ... # состав результата - определяет возвращаемые элементы данных. WHERE {...} # шаблон запроса - определяет, что запрашивать из набора данных. ORDER BY ... # модификаторы запроса - ограничивают, упорядочивают, преобразуют результаты запроса.
Преимущества SPARQL позволяет пользователям писать глобально однозначные запросы. Например, следующий запрос возвращает имена и адреса электронной почты каждого человека в мире: PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?email WHERE { ?person a foaf:Person. ?person foaf:name ?name. ?person foaf:mbox ?email. } Приведённые параметры используются для описания человека, включённого в FOAF. Это иллюстрирует видение Семантической паутины как единой огромной базы данных. Каждый идентификатор в 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()).
Сравнение языков запросов к 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 Основные Федеративные запросы.
Пример Другой пример запросов SPARQL: «Найти даты выхода серий всех сезонов сериала „Клан Сопрано“»: PREFIX dbpo: <http://dbpedia.org/ontology/> SELECT * WHERE { ?e dbpo:series <http://dbpedia.org/resource/The_Sopranos>. ?e dbpo:releaseDate ?date. ?e dbpo:episodeNumber ?number. ?e dbpo:seasonNumber ?season. } ORDER BY DESC(?date) Переменные обозначаются префиксом «?» или «$».
Чтобы сделать запросы краткими, SPARQL позволяет определять префиксы и основные URI способом, подобным Turtle. В этом запросе префикс «dbpo» обозначает «http://dbpedia.org/ontology/».
Точка доступа SPARQL Точка доступа SPARQL — это служба, поддерживающая протокол запросов SPARQL. Точка доступа позволяет пользователю делать запросы к базе знаний. Сервер обрабатывает запрос и возвращает ответ в некотором, обычно машиночитаемом, формате. Таким образом, точки доступа SPARQL в первую очередь являются API к базам знаний, а представление результатов должно быть реализовано программным обеспечением вызывающей стороны.
Различают два вида точек доступа: общего назначения и локальные.
Точки доступа общего назначения могут производить запросы по любым указанным RDF-документам, находящимся в Сети. А локальные точки доступа способны получать данные только от одного ресурса.
Примеры Пример точки доступа SPARQL. Список точек доступа SPARQL
Автоматическое исполнение запросов На данный момент для ряда языков программирования существует возможность вызывать SPARQL-запросы, существуют инструменты, позволяющие подключать и в полуавтоматическом режиме строить SPARQL-запросы для точки доступа SPARQL, например ViziQuer.
Примечания
Ссылки
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
Категория:Семантическая паутина Категория:Языки запросов Категория:RDF Категория:Стандарты W3C Категория:Языки моделирования данных