Apache Jena Fuseki

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).

Apache Jena Fuseki ist ein Server für RDF-Daten, also für Wissen in Form von Aussagen wie „Hamburg – hat Einwohner – 1.910.000“. Solche Aussagen heißen Tripel. Fuseki speichert sie dauerhaft und beantwortet Abfragen in der Abfragesprache SPARQL, über eine Weboberfläche oder per HTTP. Diese Anleitung lässt Fuseki als Dienst auf dem eigenen Rechner laufen.

Vorbemerkungen

  • Keine Installation über apt: Ubuntu hat kein Paket für Fuseki. Die Apache Software Foundation stellt ein fertiges Archiv bereit, das nur Java braucht. Java kommt aus den Paketquellen von Ubuntu.
  • Version: Getestet mit Fuseki 6.2.0 und Java 25 unter Ubuntu 26.04. Fuseki 6 braucht mindestens Java 21.
  • Ordner: Das Programm liegt in /opt/fuseki. Datenbanken, Einstellungen und Protokolle legt Fuseki in einem eigenen Arbeitsordner ab, hier /var/lib/fuseki. So bleiben die Daten bei einem Update unberührt.
  • Port: Fuseki läuft auf Port 3030 und ist nur vom eigenen Rechner aus erreichbar.
  • Kein Passwort: Die Verwaltung (Datenbanken anlegen und löschen) erlaubt Fuseki von Haus aus nur vom eigenen Rechner. Abfragen und Änderungen an den Daten sind ohne Anmeldung möglich. Solange Fuseki nur auf localhost hört, ist das in Ordnung.

Installation

1. Paketlisten aktualisieren

Damit apt die aktuellen Paketstände der Ubuntu-Paketquellen kennt.

sudo apt update

2. Java und curl installieren

openjdk-25-jre-headless ist die Java-Laufzeitumgebung ohne grafische Teile. Mit curl lädst du später das Archiv herunter und sprichst mit Fuseki.

sudo apt install openjdk-25-jre-headless curl

Prüfen: Der Ordner mit Java 25 ist vorhanden. Den Pfad braucht der Dienst in Schritt 8.

ls /usr/lib/jvm/java-25-openjdk-amd64/bin/java

3. Programmarchiv herunterladen

Lädt Fuseki 6.2.0 (etwa 50 MB) in den Ordner /tmp. Die aktuelle Version steht auf https://jena.apache.org/download/.

curl -L -o /tmp/fuseki.tar.gz https://dlcdn.apache.org/jena/binaries/apache-jena-fuseki-6.2.0.tar.gz

4. Prüfsumme kontrollieren

Stellt sicher, dass das Archiv vollständig und unverändert angekommen ist. Apache veröffentlicht die Prüfsumme neben dem Archiv, in einer Datei mit der Endung .sha512.

sha512sum /tmp/fuseki.tar.gz

Prüfen: Die Ausgabe beginnt mit ba65f5867d2d4741b2ed9e2af5a0d4fbb447909894ab2a0c6bc4dac8997f4fe339c87b13c48d45d054977769f0f8bf763ea346b1f7792d5cdc458041bd43a132.

5. Programmordner anlegen

Legt den Ordner für das Programm an.

sudo mkdir /opt/fuseki

6. Archiv entpacken

Im Archiv liegt alles in einem Unterordner apache-jena-fuseki-6.2.0. --strip-components=1 lässt diese Ebene weg, sodass die Dateien direkt in /opt/fuseki landen.

sudo tar xzf /tmp/fuseki.tar.gz -C /opt/fuseki --strip-components=1

Prüfen: Der Ordner enthält fuseki-server und fuseki-server.jar.

ls /opt/fuseki

7. Systembenutzer anlegen

Fuseki soll unter einem eigenen Benutzer laufen, mit dem man sich nicht anmelden kann. --create-home legt dabei den Arbeitsordner /var/lib/fuseki an. Das Programm in /opt/fuseki gehört weiter root, Fuseki kann es also nicht verändern.

sudo useradd --system --create-home --home-dir /var/lib/fuseki --shell /usr/sbin/nologin fuseki

Als Dienst einrichten

8. systemd-Dienst anlegen

Im Archiv liegt unter service/service/fuseki.service eine Vorlage. Die folgende Datei baut darauf auf, mit angepassten Pfaden.

sudo nano /etc/systemd/system/fuseki.service

Füge diesen Inhalt ein (Strg+Umschalt+V), speichere mit Strg+O und Enter und beende nano mit Strg+X:

[Unit]
Description=Apache Jena Fuseki
After=network.target

[Service]
Type=simple
User=fuseki
Group=fuseki
Environment=FUSEKI_HOME=/opt/fuseki
Environment=FUSEKI_BASE=/var/lib/fuseki
Environment=JAVA_HOME=/usr/lib/jvm/java-25-openjdk-amd64
Environment=JVM_ARGS=-Xmx2G
ExecStart=/opt/fuseki/fuseki-server --localhost --port 3030
Restart=on-abort
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

Was die Angaben bedeuten:

  • FUSEKI_HOME – der Programmordner aus Schritt 6.
  • FUSEKI_BASE – der Arbeitsordner für Datenbanken, Einstellungen und Protokolle.
  • JAVA_HOME – Fuseki nutzt ausdrücklich Java 25, auch wenn weitere Java-Versionen installiert sind.
  • JVM_ARGS=-Xmx2G – Fuseki darf bis zu 2 GB Arbeitsspeicher belegen. Für große Datenmengen erhöht man den Wert.
  • --localhost – Fuseki ist nur vom eigenen Rechner aus erreichbar.
  • --port 3030 – der Port für Weboberfläche und Abfragen.
  • SuccessExitStatus=143 – Java beendet sich beim Stoppen mit dem Code 143. systemd soll das nicht als Fehler werten.

9. systemd die neue Datei bekannt machen

systemd liest Dienstdateien nur beim Start oder auf Anweisung ein.

sudo systemctl daemon-reload

10. Dienst starten und Autostart einschalten

enable sorgt für den Start beim Hochfahren, --now startet Fuseki zusätzlich sofort. Beim ersten Start legt Fuseki im Arbeitsordner Unterordner wie databases und configuration an.

sudo systemctl enable --now fuseki

Prüfen: Im Protokoll stehen Fuseki Base = /var/lib/fuseki und Start Fuseki.

sudo journalctl -u fuseki -n 15

11. Erreichbarkeit prüfen

/$/ping ist eine Adresse, die nur meldet, ob Fuseki läuft. Die einfachen Anführungszeichen verhindern, dass die Shell $ als Variable liest.

curl -s 'http://localhost:3030/$/ping'

Prüfen: Die Ausgabe ist Datum und Uhrzeit, z. B. 2026-09-25T22:14:24.069+00:00. Im Browser zeigt http://localhost:3030 die Weboberfläche von Fuseki.

Erste Daten

12. Datenbank anlegen

Legt eine dauerhafte Datenbank namens wissen an. tdb2 ist das Speicherformat von Jena, das die Daten auf der Festplatte ablegt. Dasselbe geht auch in der Weboberfläche im Bereich zur Verwaltung der Datenbanken.

curl -s --data 'dbName=wissen&dbType=tdb2' 'http://localhost:3030/$/datasets'

Prüfen: Die Datenbank erscheint in der Liste der Datenbanken von Fuseki.

curl -s 'http://localhost:3030/$/datasets' | grep ds.name

13. Beispieldaten schreiben

Legt eine Datei im Format Turtle an, einer gut lesbaren Schreibweise für RDF.

nano ~/staedte.ttl

Füge diesen Inhalt ein, speichere mit Strg+O und Enter und beende nano mit Strg+X:

@prefix ex:   <http://example.org/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ex:Hamburg    rdfs:label "Hamburg" ;    ex:einwohner 1910000 ; ex:liegtIn ex:Hamburg_Land .
ex:Ahrensburg rdfs:label "Ahrensburg" ; ex:einwohner 34800 ;   ex:liegtIn ex:Schleswig-Holstein .
  • @prefix – Abkürzungen: ex:Hamburg steht für http://example.org/Hamburg. In RDF hat jedes Ding eine weltweit eindeutige Adresse.
  • Jede Zeile beschreibt eine Stadt. ; trennt mehrere Aussagen über dieselbe Stadt, . beendet sie. Zusammen sind es sechs Tripel.

14. Daten laden

Schickt die Datei an die Datenbank wissen. Content-Type: text/turtle sagt Fuseki, in welchem Format die Daten kommen.

curl -s -X POST -H 'Content-Type: text/turtle' --data-binary @$HOME/staedte.ttl http://localhost:3030/wissen/data

Prüfen: Die Antwort meldet "tripleCount" : 6.

15. SPARQL-Abfrage stellen

Fragt alle Städte mit ihrer Einwohnerzahl ab, die größte zuerst. Accept: text/csv bestellt das Ergebnis als einfache Tabelle.

curl -s -H 'Accept: text/csv' --data-urlencode 'query=PREFIX ex: <http://example.org/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?stadt ?einwohner WHERE { ?s rdfs:label ?stadt ; ex:einwohner ?einwohner } ORDER BY DESC(?einwohner)' http://localhost:3030/wissen/query

Prüfen: Die Ausgabe lautet:

stadt,einwohner
Hamburg,1910000
Ahrensburg,34800

Bequemer geht es im Browser: Auf http://localhost:3030 gibt es zu jeder Datenbank einen Abfrage-Editor.

Wo liegt was?

  • /var/lib/fuseki/databases – die Datenbanken, ein Ordner pro Datenbank.
  • /var/lib/fuseki/configuration – eine Beschreibung pro Datenbank, damit Fuseki sie nach einem Neustart wieder öffnet.
  • /var/lib/fuseki/shiro.ini – Zugriffsregeln. Hier legt man bei Bedarf Benutzer und Passwörter an.
  • /var/lib/fuseki/backups – Sicherungen, die man in der Weboberfläche anstoßen kann.

Aktualisieren

1. Neue Version herunterladen

Lädt die neue Version. Ersetze 6.2.0 durch die aktuelle Versionsnummer.

curl -L -o /tmp/fuseki.tar.gz https://dlcdn.apache.org/jena/binaries/apache-jena-fuseki-6.2.0.tar.gz

2. Dienst stoppen

Fuseki darf beim Austausch der Dateien nicht laufen.

sudo systemctl stop fuseki

3. Neue Version entpacken

Überschreibt die Programmdateien in /opt/fuseki. Die Daten in /var/lib/fuseki bleiben unberührt.

sudo tar xzf /tmp/fuseki.tar.gz -C /opt/fuseki --strip-components=1

4. Dienst starten

Startet die neue Version.

sudo systemctl start fuseki

Prüfen: Im Protokoll (sudo journalctl -u fuseki -n 15) steht die neue Versionsnummer.

Deinstallieren

1. Dienst stoppen und Autostart ausschalten

Beendet Fuseki und verhindert den Start beim Hochfahren.

sudo systemctl disable --now fuseki

2. Dienstdatei löschen

Entfernt die Dienstdatei aus Schritt 8.

sudo rm /etc/systemd/system/fuseki.service

3. systemd neu einlesen lassen

Damit systemd den gelöschten Dienst vergisst.

sudo systemctl daemon-reload

4. Programm und Archiv löschen

Entfernt den Programmordner und das heruntergeladene Archiv.

sudo rm -rf /opt/fuseki /tmp/fuseki.tar.gz

5. Benutzer und Daten löschen

-r löscht mit dem Benutzer auch seinen Ordner /var/lib/fuseki und damit alle Datenbanken. Achtung: Die Daten gehen dabei verloren. Die Warnung Mail-Warteschlange … nicht gefunden ist harmlos.

sudo userdel -r fuseki

6. Beispieldatei löschen

Entfernt die Datei aus Schritt 13.

rm -f ~/staedte.ttl

7. Java entfernen (optional)

Nur ausführen, wenn kein anderes Programm Java 25 braucht, z. B. Keycloak.

sudo apt purge openjdk-25-jre-headless
sudo apt autoremove

Prüfen: Unter Port 3030 antwortet nichts mehr, curl meldet einen Verbindungsfehler.

curl -sI http://localhost:3030/

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).

Open Knowledge (Freies Wissen): Alle Texte stehen unter der freien Lizenz Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International (CC BY-SA 4.0) und können frei gelesen, geteilt und weiterverarbeitet werden.

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).

Open Knowledge (Freies Wissen): Alle Texte stehen unter der freien Lizenz Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International (CC BY-SA 4.0) und können frei gelesen, geteilt und weiterverarbeitet werden.

Autor: Thorsten · Installationsanleitungen für Ubuntu

Alle Anleitungen ohne Gewähr. Befehle mit sudo verändern das System – vorher lesen, dann ausführen.