SPARQL

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
SPARQL
W3C® Icon.svg
Рекурсивний акронім і мова запитів
Парадигма: Мова запитів
Дата появи: 11 грудня 2008; 3287 днів тому
Творці: Carlos Buil Aranda[d][1] і Eric Prud'hommeaux[d][1]
Розробник: W3C
Останній реліз: 1.1 (21 березня 2013; 1726 днів тому)
Основні реалізації: Jena,[2] OpenLink Virtuoso[2] AllegroGraph[3]
Сайт: www.w3.org/TR/sparql11-query/
CMNS: SPARQL на Вікісховищі

SPARQL (рекурсивний акронім від англ. SPARQL Protocol and RDF Query Language) — мова запитів до даних, представлених по моделі RDF, а також протокол для передачі цих запитів і відповідей на них. SPARQL є рекомендацією консорціуму W3C і одною з технологій семантичної павутини. Представлення SPARQL-точок доступу (SPARQL endpoint) є рекомендованою практикою при публікації даних у всесвітній павутині.

Загальна схема запиту[ред.ред. код]

Загальна схема SPARQL-запиту має такий вигляд:

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

Де:

  • Префіксні оголошення служать для скорочення універсальних ідентифікаторів ресурсу.
  • Джерела запиту визначають, які RDF графи запитуються.
  • Пункт результату повертає набір даних (вибірку), які задовольняють умові.
  • Критерії запиту визначає, що запитувати в базовому наборі даних
  • Модифікатори запиту обмежують, упорядковують, і інакше перетворюють результати запиту.

Переваги[ред.ред. код]

SPAQRL дозволяє користувачам писати глобально однозначні запити. Наприклад, наступний запит повертає імена і адреси кожної людини у світі:

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, глобально однозначний, на відміну від «e-mail» або «email», які звичайно використовуються в SQL.

Цей запит може бути розподілений на декілька кінцевих точок SPARQL, різних комп'ютерів, і збір результатів здійснюється процедурою, відомою як федеративний пошук.

Форми запитів[ред.ред. код]

Мова SPARQL визначає чотири варіанта запитів для різних цілей:

SELECT запит

Використовується для того, щоб витягати необроблені значення із точки SPARQL, результати повертаються у вигляді таблиці.

CONSTRUCT запит

Використовується для того, щоб витягати інформацію з точки доступу SPARQL в форматі RDF і перетворювати результати до визначеної форми.

ASK запит

Використовується для створення запитів типу Істина/Брехня

DESCRIBE запит

Використовується для того, щоб отримати опис RDF-ресурсу. Реалізація поведінки DESCRIBE-запитів визначається розробником SPARQL-точки доступу.

Кожна з цих форм запиту включає в себе блок WHERE, щоб обмежити запит, хоча у випадку запиту DESCRIBE — WHERE не є обов'язковим.

Ключові слова[ред.ред. код]

Нижче наведена частина часто використовуваних ключових слів в 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-endpoint[ред.ред. код]

SPARQL-endpoint або SPARQL-точка доступу — це служба сумісна з SPARQL. SPARQL-endpoint дозволяє користувачу запросити базу знань (вводити його запити). Запит обробляється і повертає результат в різних форматах. Таким чином, SPARQL-точки доступу задумані як сервіс, який забезпечує нормальний інтерфейс до бази знань SPARQL-endpoint.

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

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

Приклад, щоб зрозуміти зміст точки доступу: приклад.

Список існуючих SPARQL-endpoint: список.

Автоматичне виконання запитів[ред.ред. код]

На даний момент для ряду мов програмування існує можливість викликати SPARQL-запити, існують інструменти, які дозволяють підключати і в напівавтоматичному режимі будувати SPARQL-запити для точки доступу SPARQL, наприклад ViziQuer.

Примітки[ред.ред. код]

  1. а б https://www.w3.org/TR/2013/REC-sparql11-overview-20130321/#Acknowledgements
  2. а б Hebeler, John; Fisher, Matthew; Blace, Ryan; Perez-Lopez, Andrew (2009). Semantic Web Programming. Indianapolis, Indiana: John Wiley & Sons. с. 406. ISBN 978-0-470-41801-7. 
  3. SPARQL Protocol Implementation Report

Посилання[ред.ред. код]