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. В цьому запиті префікс «dbo» означає «http://dbpedia.org/ontology/».

SPARQL-endpoint[ред.ред. код]

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

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

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

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

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

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

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

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


Шаблон:Мови запитів

Шаблон:Стандарти W3C