SPARQL — это «SQL для семантического веба». Если SQL запрашивает данные из таблиц реляционной базы, то SPARQL запрашивает триплеты из RDF-графа. Произносится «спаркл», расшифровка рекурсивная: SPARQL Protocol and RDF Query Language. Это ключевой инструмент работы с Wikidata, Google Knowledge Graph (внутренне) и корпоративными knowledge graphs.
Как это работает
Запрос в SPARQL описывает шаблон, которому должны соответствовать триплеты в графе. Простой пример: найти все статьи на сайте с автором «Валентина Меланина».
PREFIX schema: <https://schema.org/>
SELECT ?article ?headline ?datePublished
WHERE {
?article schema:author ?author .
?author schema:name "Валентина Меланина" .
?article schema:headline ?headline .
?article schema:datePublished ?datePublished .
}
ORDER BY DESC(?datePublished)
LIMIT 10
Что говорит этот запрос: «Возьми сущность ?article, у которой есть schema:author, ведущий к сущности с именем „Валентина Меланина“, и верни заголовок и дату публикации, отсортируй по дате убывая, ограничь 10 результатами». Знак ? обозначает переменную — то, что нужно найти. PREFIX — короткое имя для словаря (чтобы не писать полный URI каждый раз).
SPARQL поддерживает четыре основных типа запросов:
| Тип | Что делает | Аналог в SQL |
|---|---|---|
| SELECT | Возвращает значения переменных в табличной форме | SELECT |
| CONSTRUCT | Возвращает новый RDF-граф на основе шаблона | — |
| ASK | Возвращает true/false — есть ли совпадение с шаблоном | EXISTS |
| DESCRIBE | Возвращает все известные триплеты о сущности | SELECT * WHERE pk = X |
История стандарта
SPARQL 1.0 утверждён W3C как Recommendation 15 января 2008 года. Авторы — Eric Prud'hommeaux (W3C) и Andy Seaborne (Hewlett-Packard Laboratories). Версия SPARQL 1.1 — это набор из 11 связанных спецификаций, опубликованных одновременно 21 марта 2013 года. Главные нововведения 1.1 — агрегатные функции (COUNT, SUM, AVG), подзапросы, отрицание, property paths и SPARQL Update для модификации данных.
Сейчас в W3C идёт работа над SPARQL 1.2 — драфт публикуется группой RDF and SPARQL Working Group. Главное нововведение — поддержка RDF-star (триплеты как термы внутри других триплетов).
Зачем это нужно
SPARQL — нишевый инструмент для трёх категорий пользователей.
1. Аналитики и data scientists, работающие с открытыми knowledge graphs. Самый частый сценарий — запросы к Wikidata через её публичный SPARQL endpoint (query.wikidata.org). Можно за 2 минуты получить, например, список всех мэров Москвы за всю историю с датами правления, или все компании в нише с указанием выручки и страны регистрации.
2. Корпоративные команды с собственными knowledge graphs. Банки, фарма, ритейл строят внутренние графы знаний на RDF и SPARQL для работы с разнородными данными. Поверх такого графа запускается AI-ассистент, продуктовый поиск или система рекомендаций.
3. SEO и контент-аналитики, работающие с Google Knowledge Graph. Прямого доступа к Knowledge Graph через SPARQL нет, но через Google Knowledge Graph Search API можно получать данные о сущностях. SPARQL пригодится для проверки связности своих сущностей через Wikidata.
Пример
В одном из проектов клиент в нише образовательных курсов хотел понять, какие конкуренты упоминаются в Wikidata вместе с его темой. Через SPARQL endpoint Wikidata за 30 секунд получили список из 47 организаций, у которых в свойствах указана связь с обучением data science, плюс их размер, страна и год основания. Этот список лёг в основу стратегии — кого упоминать в обзорах, с кем сравнивать в pillar-гайдах, на чьи работы ссылаться. Без SPARQL аналогичный сбор данных вручную из Википедии занял бы 3–4 дня.
Вывод: SPARQL — узкоспециальный, но очень дешёвый инструмент конкурентного и контент-анализа, если задача связана с публичными графами знаний.