Lt304888.ru

Туристические услуги

SPARQL

03-06-2023

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

Содержание

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

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

PREFIX foo: <http://example.com/resources/>
# префиксные объявления
FROM ...
# источники запроса
SELECT ...
# состав результата 
WHERE {...}
# шаблон запроса
ORDER BY ...
# модификаторы запроса

Префиксные объявления служат для указания сокращений универсальных идентификаторов ресурса (URI).

Источники запроса определяют, какие RDF-графы запрашиваются.

Состав результата определяет возвращаемые элементы данных.

Шаблон запроса определяет, что запрашивать из набора данных.

Модификаторы запроса ограничивают, упорядочивают, преобразуют результаты запроса[5].

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

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. Это иллюстрирует видение Семантической паутины как единой огромной базы данных[6]. Каждый идентификатор в 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())[7].

Сравнение языков запросов к 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 Основные Федеративные запросы[8].

Пример

Другой пример запросов 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 к базам знаний, а представление результатов должно быть реализовано программным обеспечением вызывающей стороны[9].

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

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

Примеры

  • Пример точки доступа SPARQL.
  • Список точек доступа SPARQL

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

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

Примечания

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

Ссылки

  • SPARQL Query Language for RDF  (англ.) — спецификация языка запросов SPARQL
  • Semantic Web Activity News  (англ.) — Новости семантической паутины
  • Berners-Lee looks for Web’s big leap  (англ.) — интервью Тима Бернерса-Ли
  • ViziQuer  (англ.) — Утилита для структурированного семантического поиска
  • 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 на ESW Wiki  (англ.) — неофициальное обсуждение языка SPARQL разработчиками стандартов W3C и всеми желающими
  • SPARQL Query Language for RDF  (англ.)
  • MQL — API для создания программируемых запросов к Freebase


SPARQL.

© 2020–2023 lt304888.ru, Россия, Волжский, ул. Больничная 49, +7 (8443) 85-29-01