Вопрос или проблема
Иногда код SPARQL появляется в URL, как длинные строки запросов, и тогда это по сути очень длинная однострочная команда, часто закодированная для URL. Или SPARQL содержит множество UNION, которые имеют переносы строк, расположенные в неправильных местах.
Я ищу форматировщик запросов SPARQL.
В идеале, это должен быть расширение VSCode. Однако в настоящее время (декабрь 2020 года) такого расширения в маркетплейсе VSCode не существует.
Я также готов работать с инструментом командной строки (для Linux) или с онлайн-инструментом, где пользователи могут вставить неправильно отформатированный запрос и получить отформатированный запрос.
Отвечая на свой собственный вопрос:
Wikidata имеет форматировщик в Wikidata Query service.
Я могу скопировать текст своего неправильно отформатированного запроса, вставить его в окно Wikidata, и запрос будет отформатирован.
Однако “символ / значок алмаза” активируется и работает только если запрос синтаксически корректен и если в нем нет неопределенных префиксов.
Это не обязательно должен быть запрос, который служба Wikidata фактически понимает. (Мне не нужно выполнять его с помощью сервиса запросов Wikidata).
форматирование командной строки с помощью wdq
Тот же сервис форматирования Wikidata можно вызвать с помощью инструмента командной строки wdq
, который доступен из репозиториев debian/ubuntu (apt info wdq
).
С опцией --no-execute
этот компактный запрос будет отформатирован и красиво напечатан:
# ввод / shell команда
wdq -tplanet '?planet wdt:P31 wd:Q44559; wdt:P397 ?sun' --no-execute
Вывод
# флаг --no-execute:
# вывод / отформатированный запрос, с префиксами
PREFIX bd: <http://www.bigdata.com/rdf#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX schema: <http://schema.org/>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
SELECT * WHERE {
?planet wdt:P31 wd:Q44559 .
?planet wdt:P397 ?sun .
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
?planet rdfs:label ?planetLabel .
?planet schema:description ?planetDescription .
}
}
Недавний онлайн-инструмент — это форматированный SPARQL 1.1, который довольно прост в использовании.
Ответ или решение
Форматирование запросов SPARQL: Полное руководство
Запросы SPARQL часто встречаются в виде длинных строк, особенно в URL, где они могут быть закодированы и нечитабельны. Такая ситуация затрудняет работу с кодом, особенно когда запросы содержат множество операторов UNION
или неуместные переносы строк. В этой статье мы рассмотрим доступные инструменты для форматирования запросов SPARQL, которые помогут вам улучшить читаемость и структуру вашего кода.
1. Использование сервиса форматирования запросов Викиданных
Викиданные предлагают встроенный инструмент форматирования в Викиданном сервисе запросов. Вы можете просто скопировать свой неструктурированный текст запроса, вставить его в окно сервиса, и если запрос синтаксически корректен, он будет автоматически отформатирован.
Важно отметить, что для успешного форматирования запрос должен не только быть валидным, но и не должен содержать неопределённых префиксов. Это позволяет не только структурыировать запрос, но и предлагает возможность визуального представления данных. Вы не обязаны выполнять запрос через Викиданный сервис — достаточно синтаксической корректности.
Пример:
Когда вы вводите запрос, подобный следующему:
?planet wdt:P31 wd:Q44559; wdt:P397 ?sun
Сервис преобразует его в следующий формат:
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
SELECT * WHERE {
?planet wdt:P31 wd:Q44559 .
?planet wdt:P397 ?sun .
}
2. Командная строка с использованием wdq
Для пользователей Linux доступен инструмент командной строки wdq
, который можно найти в репозиториях для Debian/Ubuntu. С помощью флага --no-execute
вы можете форматировать ваши запросы прямо через командную строку.
Пример использования:
wdq -tplanet '?planet wdt:P31 wd:Q44559; wdt:P397 ?sun' --no-execute
Выходная строка будет выглядеть так:
PREFIX bd: <http://www.bigdata.com/rdf#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX schema: <http://schema.org/>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
SELECT * WHERE {
?planet wdt:P31 wd:Q44559 .
?planet wdt:P397 ?sun .
}
3. Онлайн-инструменты для форматирования
Недавно был создан онлайн-инструмент для форматирования SPARQL, который также заслуживает внимания. Он позволяет пользователям вставить неструктурированный запрос и получить его в форматированном виде. Это просто и удобно, особенно если у вас нет возможности установить сторонние инструменты.
Заключение
Форматирование запросов SPARQL — важный шаг для повышения читаемости и структурированности вашего кода. Инструменты, такие как сервис форматирования Викиданных, командный инструмент wdq
и онлайн-форматтер, предлагают эффективные решения для этой задачи. Используя эти инструменты, вы сможете значительно упростить вашу работу с SPARQL и позволить своим запросам быть более понятными и структурированными.
Эти подходы не только экономят время, но и позволяют улучшить качество работы с данными, будучи полезными как новичкам, так и опытным разработчикам.