This repository contains a script to generate a Debian package of Apache Jena Fuseki RDF Triple store with SPARQL API and user interface. This Debian package is not affiliated with the Apache project. See https://github.com/apache/jena for Fuseki sources.
Fuseki is run as dedicated system user fuseki
. Directory layout is same as in Skosmos installation instructions:
- Fuseki code is in
/opt/fuseki
- Configuration is in
/etc/fuseki
- Logging goes to journalctl by default.
The service can be configured in
/etc/systemd/system/fuseki.service
to log to/var/log/fuseki
. - Databases are in
/var/lib/fuseki
Download package from https://github.com/gbv/fuseki.deb/releases and install:
sudo dpkg --install ./fuseki_5.1.0-1_all.deb && sudo apt install -f
After installation, the service must be enabled to start on boot:
sudo systemctl enable fuseki
The service must be restarted once to create missing configuration files in /etc/fuseki
sudo systemctl restart fuseki
To deinstall the application (excluding configuration and databases):
sudo dpkg --remove fuseki
To further remove configuration files (excluding databases):
sudo dpkg --purge fuseki
You may further want to add /opt/fuseki/bin
to your $PATH
to facilitate use of client scripts.
The default log level is very verbose, so it should be configured in /opt/fuseki/log4j2.properties
.
Startup options can be configured in /etc/systemd/system/fuseki.service
. In particular this includes:
- the amount of memory allocated to Fuseki (4 GB by default)
- whether logs should be written to the logging directory (journalctl is used by default, run
journalctl -u fuseki
to inspect) - when to restart the service (
on-failure
by default)
See Fuseki documentation for additional configuration.
Access control can be configured in both /etc/fuseki/config.ttl
and in /etc/fuseki/shiro.ini
.
Individual databases can be configured in /etc/fuseki/configuration/
with one file per database.
The user interface, installed at /opt/fuseki/webapp
can best be modified by cloning, modifying and compiling it's source code and then overwrite the existing web application:
npm run build
sudo rm -rf /opt/fuseki/webapp
sudo cp -r target/webapp /opt/fuseki/webapp
sudo chown -R fuseki:fuseki /opt/fuseki/webapp
Fuseki runs on port 3030 by default. The server can be monitored and controlled via Fuseki HTTP Administration Protocol, in particular creation of databases. Data can be loaded into and retrieved from existing databases via SPARQL endpoints (Query, Update, and Graph Store Protocol) and by direct access to the underlying TBD databases.
Fuseki includes two clients:
- user interface, made available at http://localhost:3030/
- client scripts in
/opt/fuseki/bin
(require ruby to be installed)
Direct access to existing TDB databases is further possible via TBD command line tools and recommended to import very large datasets. These commands can be executed like this:
java -cp /opt/fuseki/fuseki-server.jar tdb2.tdbloader --help
Access to parts of Fuseki HTTP Administration Protocol is restricted to localhost by default, so new databases can only be created locally, via user interface or from command line like this:
curl --data "dbName=test&dbType=tdb2" http://localhost:3030/$/datasets
Uploading or editing data via SPARQL from/to existing databases is not restricted by default!
You may want to try Fuseki Docker instead of this Debian package (which lacks a user interface).
The Apache Jena binary release includes several useful command line tools for processing RDF.
The Debian package libapache-jena-java
installs Apache Jena libraries, not including Fuseki nor the command line tools.
Script build.sh
executed with a version number downloads Fuseki release and builds a corresponding Debian package.
Fuseki and this Debian package is made available under Apache License.