SPARQL

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

SPARQL (рекурсивный акроним от англ. SPARQL Protocol and RDF Query Language) — язык запросов к данным, представленным по модели RDF, а также протокол для передачи этих запросов и ответов на них. SPARQL является рекомендацией консорциума Всемирной паутины (W3C) и одной из технологий семантической паутины[1]. SPARQL является одним из важнейших элементов видения семантической паутины - так вдохновитель и инициатор проекта, Тим Бернерс-Ли в мае 2006 заметил в интервью, что "SPARQL будет иметь огромное значение"[2]. 15 января 2008 года, SPARQL стал официальной рекомендацией W3C,[3] предоставление SPARQL-точек доступа(SPARQL-endpoint) является рекомендованной практикой при публикации данных во всемирной паутине.[4] На данный момент для ряда языков программирования существует возможность вызывать SPARQL-запросы[5], существуют инструменты, позволяющие подключать и в полуавтоматическом режиме строить SPARQL-запросы для точки доступа SPARQL, например ViziQuer[6].

Содержание

[править] Общая схема запроса

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

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

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

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

Пункт результата возвращает набор данных (выборку), удовлетворяющих заданному условию.

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

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

[править] Преимущества

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. Это иллюстрирует видение Семантической паутины как единой огромной базы данных. [8] Каждый идентификатор в SPARQL, URI, глобально однозначен, в отличие от «email» или «e-mail», обычно используемых в SQL.

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

[править] Формы запросов

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

SELECT запрос

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

CONSTRUCT запрос

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

ASK запрос

Используется для создания запросов типа Верно/Ложь.

DESCRIBE запрос

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

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

[править] Ключевые слова

Ниже приведена часть используемых ключевых слов в 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: «Найти даты выхода серий всех сезонов сериала „Клан Сопрано“»:

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-endpoint

SPARQL-endpoint или точка доступа - это служба совместимая с SPARQL. SPARQL-endpoint позволяет пользователю запросить базу знаний (вводить его запросы). Запрос обрабатывается и возвращает результат в различных форматах. Таким образом, SPARQL точки доступа в основном задуман как сервис, обеспечивающий нормальный интерфейс к базе знаний SPARQL_endpoint.

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

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

Пример, для понятия содержания точки доступа:пример.

Список существующих SPARQL-endpoint: список_SparqlEndpoints


[править] Примечания

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

[править] Ссылки

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Участие
Печать/экспорт
Инструменты
На других языках