Apache Jena Fuseki, или просто Fuseki, - это "SPARQL server", т.е. СУБД, хранящая на сервере датсеты, состоящие из (именованных) графов RDF. Граф RDF -- это множество триплетов (атомарных утверждений) вида: <Subject, Property, Object>.
Для клиентов сервер RDF выглядит как SPARQL endpoint, для взаимодействия с которым требуются специальные программные библиотеки (например, Jena RDF Connection, RDFLib и многие другие).
Fuseki выдаёт несколько точек доступа SPARQL для каждого датасета (это можно настроить), которые дают различные права на запись в соответствующее хранилище.
Для доступа к данным по HTTP применяюся SPARQL-запросы.
Язык SPARQL напоминает SQL по форме записи, но сильно отличается от него.
К примеру, для поиска RDF-узлов и связей между ними в запросах можно применять переменные, которые записываются со знаком ?
имеют вид ?var
, ?s
, ?object
и т.п.
Изначально, SPARQL предназначался только для выборки данных. Для этого применяются:
SELECT
- мощная команда, позволяет делать всевозможные выборки и фильтрации; возвращает "таблицу", аналогично SELECT-запросу в SQL. Можно получить все переменные (*
) или явно указать возвращаемые переменные.CONSTRUCT
- также выборка, но возвращает результат в виде допустимого (под-)графа RDF.ASK
- позволяет проверить, найдётся ли хоть одно совпадение при выполнения аналогичного SELECT-запроса.
Для выполнения изменяющих команд существует отдельный под-стандарт под названием SPARQL Update. Среди них:
INSERT DATA
- вставка явно заданных триплетовDELETE DATA
- удаление явно заданных триплетовDELETE/INSERT
- удаление и вставка одновременноDELETE WHERE
- удаление триплетов, найденных здесь же по критериям SELECT-запроса, указанным в секции WHERE.CLEAR
- очистка целого именованного графа от триплетов.
Чтобы иметь возможность выполнять изменяющие запросы, нужно обращаться к точке доступа SPARQL, которая это поддерживает.
-
Поддерживаются, как минимум, Windows и Linux. Требуется, как минимум, установленная JRE/JDK.
Заходим на https://jena.apache.org/download/ и скачиваем архивapache-jena-fuseki-*VER*.zip
. На момент написания последней версией (от 05.12.2021) была версия 4.3.0:
apache-jena-fuseki-4.3.0.zip
скачать -
Выбирам папку на диске, куда распаковать архив, а также папку, где будут храниться файлы баз данных. Например, распаковали архив в
~/dev/db/apache-jena-fuseki-4.2.0/
, а данные будем хранить в~/dev/db/tdb
. -
Проверяем работоспособность сервера Fuseki. Заходим в папку с распакованными файлами и запускаем:
$ fuseki-server --help
Мы должны увидеть список флагов и пример типового вида запроса к серверу (что-то вродеfuseki-server --tdb2 [--loc=DIR] [[--update] /NAME]
). -
Создаём конфигурацию хралилищ - файл
config.ttl
. Создаём подпапкуconfiguration
папке для данных. Полное имя файла с конфигурацией может выглядеть так:
~/dev/db/tdb/configuration/config.ttl
.
Файл конфигурации с настройками для двух хранилищ:control_flow
иexpression
есть в этом репозитории:
config.ttl (основано на документации) Обратите внимание, что в конфигурации указывается лишь то, какие хранилища будут доступны на работающем сервере, и под какими URL-ами будут доступны точки доступа к каждому хранилищу. Фактические точки доступа можно просмотреть в Web-UI запущенного сервера. -
Запускаем fuseki-server.
С использованием команд ниже сервер запустится и создаст базы данных в текущей папке (cd
консоли):- на порту 6515
- с уменьшенным объёмом отладочной печати в консоль (-q)
- c современным TDB2 хранилищем по умолчанию
- со включенной возможностью делать запросы SPARQL Update:
Вариант 1, с использованием временной переменной окружения (Вариант для Linux).
export FUSEKI_BASE=~/dev/db/tdb cd $FUSEKI_BASE/databases ~/dev/db/apache-jena-fuseki-4.2.0/fuseki-server --port=6515 -q --tdb2 --update
Вариант 2 - запуск под Windows (внимание: создаcт БД прямо в
apache-jena-fuseki-4.2.0/
).cd c:\Work\fuseki-dir\apache-jena-fuseki-4.2.0 set FUSEKI_BASE=c:\Work\fuseki-dir\tdb fuseki-server --port=6515 -q --tdb2 --update
После этого сервер работает в текущей консоли, пока не буде нажато сочетание Ctrl+С, или консоль будет закрыта.
-
Проверяем, что всё работает. Заходим на
http://localhost:6515/
- должны увидеть веб-интерфейс локального сервера Fuseki, где есть возможность:- просмотреть доступные хранилища и точки доступа к ним,
- просмотреть данные и отредактировать их,
- выполнить и отладить SPARQL-запросы в редакторе с автопроверкой синтаксиса (внимание! перед запуском запросов SPARQL Update выберите нужный endpoint из списка вверху).
Пример запущенного сервера Fuseki (если он ещё действует): vds84.server-1.biz:6515.