{"id":4217,"date":"2025-12-12T15:10:33","date_gmt":"2025-12-12T14:10:33","guid":{"rendered":"https:\/\/informatik.htwk-leipzig.de\/seminar\/?p=4217"},"modified":"2025-12-12T15:14:21","modified_gmt":"2025-12-12T14:14:21","slug":"apache-jena-fuseki","status":"publish","type":"post","link":"https:\/\/informatik.htwk-leipzig.de\/seminar\/lehrveranstaltungen\/betriebliche-informationssysteme\/2025\/apache-jena-fuseki\/","title":{"rendered":"Apache Jena Fuseki"},"content":{"rendered":"<p>&nbsp;<\/p>\n<h1>\u00dcbersicht<\/h1>\n<div>\n<p>Apache Jena Fuseki ist ein HTTP-basierter SPARQL-Server, der als zentrale Schnittstelle f\u00fcr das Speichern, Abfragen und Verarbeiten von RDF-Daten dient. Er geh\u00f6rt zum Apache-Jena-Framework und stellt standardisierte Endpunkte bereit, \u00fcber die Wissensgraphen und semantische Datenmodelle effizient verwaltet werden k\u00f6nnen.<br \/>\nDurch seine Unterst\u00fctzung offener Webstandards wie RDF und SPARQL erm\u00f6glicht Fuseki eine flexible, systemunabh\u00e4ngige Integration in moderne Anwendungen \u2013 von Forschung und Wissensmanagement bis hin zu Linked-Data-Projekten und intelligenten Informationssystemen.<\/p>\n<\/div>\n<h1>Was ist Apache Jena Fuseki?<\/h1>\n<div>\n<div>\n<p>Apache Jena Fuseki ist ein zentraler Bestandteil des Apache-Jena-\u00d6kosystems und dient als HTTP-basierter SPARQL-Server, der speziell f\u00fcr die Arbeit mit RDF-Daten entwickelt wurde. Er stellt standardisierte Webschnittstellen bereit, \u00fcber die sich Daten speichern, abfragen und aktualisieren lassen. Damit bildet Fuseki das R\u00fcckgrat moderner Wissensgraph-Architekturen, bei denen Informationen nicht nur gesammelt, sondern in ihren Beziehungen und Bedeutungen verstanden werden sollen.<\/p>\n<p>Eingesetzt wird Fuseki \u00fcberall dort, wo semantische Datenmodelle eine zentrale Rolle spielen \u2014 beispielsweise in unternehmensweiten Wissensgraphen, Forschungsdatenplattformen, Ontologie-basierten Anwendungen oder staatlichen Open-Data-Portalen. Die St\u00e4rke des Systems liegt darin, Daten nicht als isolierte Werte zu behandeln, sondern als verkn\u00fcpfte Einheiten, die sich \u00fcber standardisierte Abfragesprachen analysieren lassen.<\/p>\n<p>Fuseki unterst\u00fctzt eine gro\u00dfe Bandbreite etablierter Webstandards wie RDF 1.1, SPARQL 1.1 (f\u00fcr sowohl Abfragen als auch Updates), das Graph Store Protocol und verschiedene Austauschformate wie JSON-LD, Turtle, N-Triples oder RDF\/XML. Diese konsequente Orientierung an W3C-Standards stellt sicher, dass Fuseki problemlos in unterschiedliche Plattformen und Architekturen integriert werden kann \u2014 unabh\u00e4ngig von Programmiersprache oder Technologie.<\/p>\n<\/div>\n<div>\n<p><strong>Unterst\u00fctzte Standards<\/strong><\/p>\n<\/div>\n<ul>\n<li>RDF 1.1<\/li>\n<li>SPARQL 1.1 (Query + Update)<\/li>\n<li>Graph Store Protocol<\/li>\n<li>JSON-LD, Turtle, N-Triples, RDF\/XML<\/li>\n<\/ul>\n<div>\n<h2>Anwendungsbereiche<\/h2>\n<div>\n<p>Apache Jena Fuseki kommt immer dann zum Einsatz, wenn Daten nicht nur gespeichert, sondern in ihren Bedeutungen und Beziehungen verstanden werden sollen. Im Zentrum stehen Wissensgraphen, also Datenmodelle, bei denen Zusammenh\u00e4nge eine ebenso gro\u00dfe Rolle spielen wie die eigentlichen Inhalte.<\/p>\n<p>Ein typischer Anwendungsbereich ist das Wissensmanagement in Unternehmen. Durch die strukturierte Verkn\u00fcpfung von Informationen entstehen semantische Modelle, die komplexe Abh\u00e4ngigkeiten sichtbar machen und den Zugriff auf Unternehmenswissen erleichtern.<\/p>\n<p>Auch in der Forschung und in Bibliotheken hat sich Fuseki etabliert: Forschungsdaten, Publikationen oder bibliografische Eintr\u00e4ge lassen sich als miteinander verkn\u00fcpfte Datens\u00e4tze darstellen. Dadurch werden Analysen, Abfragen und Recherchen deutlich effizienter.<\/p>\n<p>Im \u00f6ffentlichen Sektor dient Fuseki h\u00e4ufig als Plattform f\u00fcr Linked Open Data, da Beh\u00f6rden damit Daten standardisiert und maschinenlesbar bereitstellen k\u00f6nnen. Dies steigert die Transparenz und erm\u00f6glicht die Weiterverarbeitung der Informationen durch externe Anwendungen.<\/p>\n<p>Weitere wichtige Einsatzfelder liegen in Empfehlungssystemen, die Beziehungen zwischen Nutzern, Objekten und Inhalten auswerten, sowie im Internet of Things (IoT), wo heterogene Sensordaten semantisch integriert werden m\u00fcssen.<\/p>\n<p>Schlie\u00dflich spielt Fuseki eine zentrale Rolle im Healthcare-Bereich, etwa bei medizinischen Wissensgraphen, Ontologien oder der semantischen Verkn\u00fcpfung von Patientendaten \u2014 immer dort, wo aus Daten kontextbezogenes Wissen entsteht.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<h1>Warum Fuseki?<\/h1>\n<p>Die besondere St\u00e4rke von Apache Jena Fuseki liegt in seiner konsequenten Ausrichtung auf offene Webstandards. Durch die vollst\u00e4ndige Unterst\u00fctzung von RDF, SPARQL und HTTP l\u00e4sst sich Fuseki nahtlos in unterschiedlichste technische Umgebungen integrieren \u2014 unabh\u00e4ngig davon, ob Anwendungen in Java, Python, JavaScript oder einer anderen Sprache entwickelt wurden. Diese Interoperabilit\u00e4t macht Fuseki besonders attraktiv f\u00fcr heterogene Systemlandschaften, wie sie heute in vielen Organisationen \u00fcblich sind.<\/p>\n<p>Ein weiterer Grund f\u00fcr den Einsatz von Fuseki ist seine Eignung f\u00fcr moderne, serviceorientierte Architekturen. Wissensgraphen k\u00f6nnen als eigenst\u00e4ndiger Dienst betrieben werden, der klar definierte Endpunkte bereitstellt. Dadurch bleiben Systeme modular, gut wartbar und flexibel erweiterbar. Fuseki l\u00e4sst sich problemlos skalieren und sowohl in kleinen Forschungsprojekten als auch in produktiven Unternehmensumgebungen einsetzen.<\/p>\n<p>Besonders hervorzuheben ist zudem die M\u00f6glichkeit, Reasoning einzubinden. In Kombination mit dem Jena-Reasoner k\u00f6nnen aus vorhandenen RDF-Daten neue Schlussfolgerungen abgeleitet werden, die nicht explizit gespeichert sind, sich aber logisch ergeben. Dieses Feature verleiht Anwendungen eine zus\u00e4tzliche Ebene \u201esemantischer Intelligenz\u201c und erm\u00f6glicht pr\u00e4zisere Analysen, automatisierte Klassifikationen und ein tieferes Verst\u00e4ndnis komplexer Datenmodelle.<\/p>\n<p>Insgesamt bietet Fuseki eine Kombination aus Offenheit, Flexibilit\u00e4t und semantischer Ausdrucksst\u00e4rke, die es zu einem zentralen Werkzeug f\u00fcr datengetriebene Systeme macht, die \u00fcber herk\u00f6mmliche Datenbanken hinausgehen.<\/p>\n<h1>Kernkomponenten von Fuseki<\/h1>\n<p>Die Architektur von Apache Jena Fuseki setzt sich aus mehreren zentralen Komponenten zusammen, die gemeinsam daf\u00fcr sorgen, dass RDF-Daten effizient verwaltet und \u00fcber standardisierte Schnittstellen bereitgestellt werden k\u00f6nnen. Das Herzst\u00fcck bildet der SPARQL-Endpoint, \u00fcber den Abfragen und Updates entgegengenommen werden. Fuseki stellt hierf\u00fcr verschiedene Endpunkte bereit: einen reinen Query-Endpunkt f\u00fcr SELECT-, ASK- und CONSTRUCT-Abfragen, einen Update-Endpunkt f\u00fcr INSERT- und DELETE-Operationen sowie kombinierte Schnittstellen, die Abfrage- und Schreiboperationen an einem einzigen Zugangspunkt b\u00fcndeln. Zus\u00e4tzlich k\u00f6nnen \u00fcber dedizierte Endpunkte auch RDF-Daten hochgeladen oder extrahiert werden.<\/p>\n<p>Eine weitere tragende S\u00e4ule ist das Dataset Management. Fuseki unterst\u00fctzt unterschiedliche Speicherformen, die je nach Anwendungsfall ausgew\u00e4hlt werden k\u00f6nnen. F\u00fcr kleinere Experimente oder Tests eignet sich der In-Memory-Speicher, der schnelle Ladezeiten und flexible Manipulationen erm\u00f6glicht. F\u00fcr Produktionsumgebungen bietet das TDB- bzw. TDB2-Backend eine persistente Triple-Store-Option, die gro\u00dfe Datenmengen zuverl\u00e4ssig verwaltet. Dar\u00fcber hinaus k\u00f6nnen externe RDF-Dateien eingebunden oder hybride Speicherl\u00f6sungen verwendet werden, wodurch Fuseki vielf\u00e4ltige Einsatzszenarien abdeckt.<\/p>\n<p>Ein entscheidender Bestandteil in sicherheitskritischen Umgebungen ist die Integration von Apache Shiro f\u00fcr Authentifizierung und Autorisierung. Dadurch k\u00f6nnen Benutzer, Rollen und Berechtigungen granular definiert werden. Ob einfache Basic-Auth oder komplexere Token-basierte Ans\u00e4tze: Fuseki l\u00e4sst sich flexibel absichern und mit HTTPS oder Reverse Proxies kombinieren, um einen Schutz auf mehreren Ebenen zu gew\u00e4hrleisten.<\/p>\n<p>Erg\u00e4nzt wird das System durch eine Web-basierte Benutzeroberfl\u00e4che, die Administratoren und Entwicklern erm\u00f6glicht, Datasets zu verwalten, RDF-Daten hochzuladen und SPARQL-Abfragen interaktiv auszuf\u00fchren. Diese Oberfl\u00e4che erleichtert nicht nur den Einstieg, sondern ist auch im t\u00e4glichen Betrieb ein wertvolles Werkzeug.<\/p>\n<p>Abgerundet wird Fuseki durch die optionale Reasoning Engine des Jena-Frameworks. Je nach Modell k\u00f6nnen RDFS-, OWL- oder regelbasierte Reasoner eingebunden werden, um logische Inferenzen \u00fcber den Daten auszuf\u00fchren. Dadurch lassen sich zus\u00e4tzliche Erkenntnisse ableiten, die nicht explizit gespeichert sind, sich jedoch aus dem semantischen Modell ergeben.<\/p>\n<h1>Installation &amp; Deployment<\/h1>\n<p>F\u00fcr den Einsatz von Apache Jena Fuseki stehen drei unterschiedliche Betriebsarten zur Verf\u00fcgung, die je nach technischen Anforderungen und Projektumgebung gew\u00e4hlt werden k\u00f6nnen.<\/p>\n<p data-start=\"379\" data-end=\"760\"><strong data-start=\"379\" data-end=\"402\">1. Standalone-Modus<\/strong><br data-start=\"402\" data-end=\"405\" \/>Im Standalone-Modus wird Fuseki direkt als eigenst\u00e4ndige Anwendung ausgef\u00fchrt. Nach dem Download von der offiziellen Apache-Seite kann der Server ohne zus\u00e4tzliche Konfiguration \u00fcber die Kommandozeile gestartet werden. Diese Variante eignet sich besonders f\u00fcr lokale Entwicklungsumgebungen oder kleinere Projekte, die keine komplexen Deployments ben\u00f6tigen.<\/p>\n<p data-start=\"762\" data-end=\"1260\"><strong data-start=\"762\" data-end=\"798\">2. Docker-Deployment (empfohlen)<\/strong><br data-start=\"798\" data-end=\"801\" \/>F\u00fcr flexible, portable und skalierbare Umgebungen bietet sich die Nutzung eines Docker-Containers an. Durch die Containerisierung l\u00e4sst sich Fuseki plattformunabh\u00e4ngig und reproduzierbar bereitstellen. Der Server wird einfach \u00fcber einen <code data-start=\"1038\" data-end=\"1050\">docker run<\/code>-Befehl gestartet, und die Weboberfl\u00e4che ist anschlie\u00dfend unter <code data-start=\"1114\" data-end=\"1137\">http:\/\/localhost:3030<\/code> erreichbar. Diese Methode ist optimal f\u00fcr produktive Systeme oder Teams, die konsistente Entwicklungsumgebungen ben\u00f6tigen.<\/p>\n<p data-start=\"1262\" data-end=\"1636\"><strong data-start=\"1262\" data-end=\"1284\">3. Embedded Server<\/strong><br data-start=\"1284\" data-end=\"1287\" \/>F\u00fcr Microservices oder Java-basierte Anwendungen kann Fuseki direkt in den Anwendungscode eingebettet werden. Die API erm\u00f6glicht das Erstellen und Starten eines Servers innerhalb der eigenen Anwendung, wodurch sich RDF-Daten ohne externen Server verarbeiten lassen. Dadurch wird eine enge Integration mit bestehenden Software-Architekturen erreicht.<\/p>\n<h1><strong>Architekturmodell von Apache Jena<\/strong><\/h1>\n<p data-start=\"283\" data-end=\"656\">Das Architekturmodell von Apache Jena bildet die strukturelle Grundlage f\u00fcr die Verarbeitung, Speicherung und Abfrage semantischer Daten im Rahmen des Semantic Web. Es umfasst mehrere klar abgegrenzte, aber eng miteinander verzahnte Module, die unterschiedliche Funktionalit\u00e4ten bereitstellen und so eine flexible Nutzung in verschiedensten Anwendungsszenarien erm\u00f6glichen.<\/p>\n<p data-start=\"658\" data-end=\"1075\">Im Zentrum der Architektur stehen die RDF-, Ontology- und SPARQL-APIs, welche Anwendungen den Zugriff auf RDF-Daten, Ontologiemodelle sowie die Ausf\u00fchrung komplexer SPARQL-Abfragen erm\u00f6glichen. Die Parser- und Writer-Komponenten unterst\u00fctzen zahlreiche g\u00e4ngige Serialisierungsformate wie Turtle, JSON-LD und RDF\/XML und stellen sicher, dass Daten problemlos zwischen verschiedenen Systemen ausgetauscht werden k\u00f6nnen.<\/p>\n<p data-start=\"1077\" data-end=\"1348\">Die Inference API erm\u00f6glicht es, logische Schlussfolgerungen aus vorhandenen Daten abzuleiten. Dabei k\u00f6nnen sowohl eingebaute Reasoner als auch externe Engines verwendet werden, um regelbasierte oder semantische Inferenzmechanismen wie RDFS- und OWL-Reasoning anzuwenden.<\/p>\n<p data-start=\"1350\" data-end=\"1666\">F\u00fcr die Datenspeicherung bietet die Store API verschiedene Optionen: vom schnellen In-Memory-Speicher \u00fcber den persistenten TDB-Datenspeicher bis hin zu benutzerdefinierten Speicherl\u00f6sungen. Diese Flexibilit\u00e4t erlaubt es, Jena in sowohl leichten Anwendungen als auch in skalierbaren produktiven Systemen einzusetzen.<\/p>\n<p data-start=\"1668\" data-end=\"1934\">Durch diese modulare und erweiterbare Architektur kann Apache Jena als leistungsf\u00e4higes Fundament f\u00fcr semantische Webanwendungen, Wissensgraphen und Linked-Data-Plattformen dienen. Die folgende Abbildung veranschaulicht den strukturellen Aufbau der Jena-Komponenten:<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4223\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/5312531875941257231-300x253.png\" alt=\"\" width=\"363\" height=\"306\" srcset=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/5312531875941257231-300x253.png 300w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/5312531875941257231-1024x863.png 1024w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/5312531875941257231-768x647.png 768w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/5312531875941257231.png 1280w\" sizes=\"auto, (max-width: 363px) 100vw, 363px\" \/><\/p>\n<h1>Authentifizierung mit Apache Shiro<\/h1>\n<p data-start=\"267\" data-end=\"617\">F\u00fcr die Absicherung von SPARQL-Endpunkten verwendet Apache Fuseki das Framework <em data-start=\"347\" data-end=\"361\">Apache Shiro<\/em>, das eine flexible und leicht konfigurierbare Zugriffskontrolle erm\u00f6glicht. Die Konfiguration erfolgt \u00fcber die Datei <em data-start=\"479\" data-end=\"490\">shiro.ini<\/em>, in der sowohl Benutzer- und Rollenmodelle als auch spezifische Zugriffsregeln f\u00fcr einzelne Endpunkte definiert werden k\u00f6nnen.<\/p>\n<p data-start=\"619\" data-end=\"1197\">Im ersten Schritt werden Benutzer und ihre zugeh\u00f6rigen Rollen festgelegt. Die Konfiguration erlaubt es, verschiedene Berechtigungsstufen zu definieren, beispielsweise einen Administrator mit vollst\u00e4ndigen Rechten sowie einen Leser mit beschr\u00e4nktem Zugriff auf bestimmte SPARQL-Operationen. Jede Rolle kann mit unterschiedlichen Berechtigungen verkn\u00fcpft werden, wodurch eine klare Trennung zwischen Lese- und Schreibzugriffen m\u00f6glich ist. Dies ist insbesondere in produktiven Umgebungen von Bedeutung, in denen Schreiboperationen nur ausgew\u00e4hlten Benutzern gestattet sein sollen.<\/p>\n<p data-start=\"1199\" data-end=\"1800\">Anschlie\u00dfend werden in der <em data-start=\"1226\" data-end=\"1237\">shiro.ini<\/em> spezifische Regeln f\u00fcr URL-basierte Zugriffe definiert. Hierbei kann f\u00fcr jeden Endpunkt einzeln festgelegt werden, ob dieser \u00f6ffentlich zug\u00e4nglich ist oder ob eine Authentifizierung bzw. eine bestimmte Rolle erforderlich ist. Im gezeigten Beispiel bleiben reine Leseendpunkte, wie der SPARQL-Query-Service, \u00f6ffentlich zug\u00e4nglich, w\u00e4hrend Schreiboperationen \u2013 wie SPARQL-UPDATE \u2013 ausschlie\u00dflich Benutzern mit Administratorrechten vorbehalten sind. Dadurch wird gew\u00e4hrleistet, dass der Datenbestand gesch\u00fctzt bleibt und unautorisierte \u00c4nderungen verhindert werden.<\/p>\n<p data-start=\"1802\" data-end=\"2173\">Die Integration von Apache Shiro bietet somit eine robuste und zugleich flexible M\u00f6glichkeit, Fuseki-Server in sicherheitskritischen Umgebungen zu betreiben. Durch die Kombination aus rollenbasierter Zugriffskontrolle und feingranularer Endpunkt-Konfiguration k\u00f6nnen individuelle Sicherheitsanforderungen pr\u00e4zise abgebildet werden, ohne den Verwaltungsaufwand zu erh\u00f6hen.<\/p>\n<h1>Beispiel: SPARQL Query und Update<\/h1>\n<p data-start=\"273\" data-end=\"633\">Zur Veranschaulichung der zuvor beschriebenen Funktionen von Apache Fuseki wird im Folgenden ein konkretes Beispiel vorgestellt, das den gesamten Prozess der Datenverarbeitung anhand eines RDF-Datensatzes demonstriert. Das Beispiel umfasst das Laden von RDF-Daten, das Ausf\u00fchren einer SPARQL-SELECT-Abfrage sowie das Einf\u00fcgen neuer Daten mittels SPARQL-INSERT.<\/p>\n<h4 data-start=\"635\" data-end=\"658\">1. RDF-Daten laden<\/h4>\n<p data-start=\"660\" data-end=\"1289\">Zun\u00e4chst wird ein RDF-Datensatz in Turtle-Syntax erstellt, der eine Beispielressource <em data-start=\"746\" data-end=\"756\">Student1<\/em> beschreibt. Die Ressource verf\u00fcgt \u00fcber die Eigenschaften <em data-start=\"814\" data-end=\"820\">name<\/em> und <em data-start=\"825\" data-end=\"834\">studies<\/em>, die im Beispiel mit \u201eJohn Doe\u201c und \u201eInformatik\u201c belegt sind. Diese RDF-Datei kann anschlie\u00dfend \u00fcber die Kommandozeile in einen Fuseki-Datensatz geladen werden.<br data-start=\"995\" data-end=\"998\" \/>Der Import erfolgt \u00fcber den Befehl, mit dem eine Turtle-Datei in das gew\u00fcnschte Dataset \u00fcbertragen wird. Dies erm\u00f6glicht ein effizientes Initialisieren der Datenbasis und dient typischerweise als erster Schritt in semantischen Webanwendungen, bevor Abfragen oder Updates durchgef\u00fchrt werden.<\/p>\n<h4 data-start=\"1291\" data-end=\"1321\">2. SPARQL-Query ausf\u00fchren<\/h4>\n<p data-start=\"1323\" data-end=\"1908\">Nach dem Laden des Datensatzes kann die Information mittels einer SPARQL-SELECT-Abfrage ausgelesen werden. In diesem Beispiel wird eine SPARQL-Query formuliert, die den Namen und das Studienfach des Studenten extrahiert. Diese Abfrage kann direkt \u00fcber die Fuseki-Weboberfl\u00e4che oder alternativ \u00fcber einen HTTP-Request ausgef\u00fchrt werden.<br data-start=\"1658\" data-end=\"1661\" \/>Die Nutzung eines HTTP-Endpunkts zeigt dabei, wie SPARQL-Abfragen problemlos in externe Anwendungen integriert werden k\u00f6nnen. Dies ist besonders relevant f\u00fcr Systeme, die semantische Daten automatisiert verarbeiten oder regelm\u00e4\u00dfig abfragen m\u00fcssen.<\/p>\n<h4 data-start=\"1910\" data-end=\"1940\">3. SPARQL Update (INSERT)<\/h4>\n<p data-start=\"1942\" data-end=\"2534\">Abschlie\u00dfend wird demonstriert, wie sich der bestehende Datensatz durch SPARQL-Update erweitern l\u00e4sst. Hier wird eine neue Ressource <em data-start=\"2075\" data-end=\"2085\">Student2<\/em> eingef\u00fcgt, der die Eigenschaften \u201eAlice\u201c sowie \u201eMathematik\u201c zugewiesen werden. Der INSERT-Befehl erg\u00e4nzt den RDF-Graphen um neue Tripel, ohne bestehende Informationen zu \u00fcberschreiben.<br data-start=\"2270\" data-end=\"2273\" \/>Die Update-Operation kann ebenfalls \u00fcber die Weboberfl\u00e4che oder als HTTP-POST-Request durchgef\u00fchrt werden. Insbesondere die HTTP-Variante erm\u00f6glicht eine automatisierte Integration in Client-Anwendungen, die kontinuierlich Daten in den Fuseki-Server einspeisen.<\/p>\n<p data-start=\"1942\" data-end=\"2534\">Dieses Beispiel zeigt den typischen Workflow bei der Arbeit mit Apache Fuseki: Daten werden geladen, abgefragt und anschlie\u00dfend erweitert. Die Kombination aus RDF, SPARQL und der leicht bedienbaren Fuseki-Oberfl\u00e4che bietet dabei ein leistungsf\u00e4higes Werkzeug zur Verwaltung semantischer Datenbest\u00e4nde und bildet eine zentrale Grundlage f\u00fcr den Aufbau und Betrieb von Wissensgraphen.<\/p>\n<h1>Integration der FahrMemo-Webanwendung mit Apache\u00a0Jena Fuseki<\/h1>\n<p><strong>Die im Folgenden vorgestellte Webanwendung <em data-start=\"874\" data-end=\"884\">FahrMemo<\/em> wurde im Jahr 2024 von der Autorin,Sarah Kiki, im Rahmen ihre Bachelorarbeit entwickelt. Ziel der Anwendung ist es, Fahrdaten strukturiert zu erfassen und \u00fcber Apache Jena Fuseki als Wissensgraph zu speichern und auszuwerten.<\/strong><\/p>\n<p><!--more--><\/p>\n<p>Die Webanwendung <em data-start=\"206\" data-end=\"216\">FahrMemo<\/em> nutzt Apache Jena Fuseki als Triple Store, um die in der Fahrschule entstehenden Daten \u2013 etwa Sch\u00fclerstammdaten, Fahrstunden und Vorpr\u00fcfungsbewertungen \u2013 als Wissensgraph abzulegen und wieder abzurufen. Grundlage daf\u00fcr ist eine Ontologie mit den Klassen <em data-start=\"471\" data-end=\"480\">Student<\/em> und <em data-start=\"485\" data-end=\"500\">DrivingLesson<\/em> sowie deren Unterklassen, \u00fcber die alle Formulareingaben der App in RDF-Tripel \u00fcberf\u00fchrt werden.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4264\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/11-2-300x233.png\" alt=\"\" width=\"315\" height=\"245\" srcset=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/11-2-300x233.png 300w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/11-2-1024x794.png 1024w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/11-2-768x595.png 768w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/11-2.png 1080w\" sizes=\"auto, (max-width: 315px) 100vw, 315px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4263\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/22-1-300x235.png\" alt=\"\" width=\"317\" height=\"248\" srcset=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/22-1-300x235.png 300w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/22-1-1024x802.png 1024w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/22-1-768x602.png 768w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/22-1.png 1080w\" sizes=\"auto, (max-width: 317px) 100vw, 317px\" \/><\/p>\n<h2>Daten\u00fcbertragung und Speicherung<\/h2>\n<p>Sobald ein Fahrlehrer im Frontend ein Formular \u2013 z. B. das Sch\u00fclerdatenformular oder eine Fahrstundendokumentation \u2013 speichert, werden die Eingaben im Backend zun\u00e4chst validiert und anschlie\u00dfend anhand des definierten Vokabulars in RDF-Tripel transformiert. F\u00fcr jede Sch\u00fclerinstanz wird dabei eine eindeutige URI erzeugt, die mit den zugeh\u00f6rigen Eigenschaften (Vorname, Nachname, Geburtsdatum, Sehhilfe etc.) sowie den verkn\u00fcpften Fahrstunden \u00fcber Pr\u00e4dikate wie <code data-start=\"1137\" data-end=\"1161\">fahrl:hasDrivingLesson<\/code> beschrieben wird<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4260 aligncenter\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/Schichtenmodell-fuer-das-absenden-von-Daten-300x194.jpg\" alt=\"\" width=\"268\" height=\"173\" srcset=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/Schichtenmodell-fuer-das-absenden-von-Daten-300x194.jpg 300w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/Schichtenmodell-fuer-das-absenden-von-Daten-1024x662.jpg 1024w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/Schichtenmodell-fuer-das-absenden-von-Daten-768x496.jpg 768w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/Schichtenmodell-fuer-das-absenden-von-Daten-1536x993.jpg 1536w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/Schichtenmodell-fuer-das-absenden-von-Daten-2048x1323.jpg 2048w\" sizes=\"auto, (max-width: 268px) 100vw, 268px\" \/><\/p>\n<p>Die so erzeugten Tripel werden in Turtle serialisiert und in eine SPARQL-1.1-<code data-start=\"1297\" data-end=\"1310\">INSERT DATA<\/code>-Anfrage eingebettet. Diese SPARQL-Update-Anfrage wird per HTTP-POST an den Update-Endpunkt des Fuseki-Datasets gesendet (SPARQL 1.1 Update \/ Graph Store HTTP Protocol). Fuseki verarbeitet die Anfrage, f\u00fcgt die Tripel in den zugrunde liegenden RDF-Datenspeicher (z. B. TDB2) ein und best\u00e4tigt den erfolgreichen Schreibvorgang an das Backend, das wiederum eine Erfolgsmeldung im Frontend anzeigt.<\/p>\n<h2><strong data-start=\"1781\" data-end=\"1826\">Datenabruf und Bereitstellung f\u00fcr die App<\/strong><\/h2>\n<p><br data-start=\"1826\" data-end=\"1829\" \/>F\u00fcr die Anzeige gespeicherter Informationen \u2013 etwa der Sch\u00fclerliste oder der zu einem Sch\u00fcler geh\u00f6renden Fahrstunden \u2013 sendet das Backend SPARQL-<code data-start=\"1974\" data-end=\"1982\">SELECT<\/code>-Anfragen an den Query-Endpunkt desselben Fuseki-Datasets. Fuseki f\u00fchrt die SPARQL-Abfrage im Triple Store aus und liefert die Ergebnisse im standardkonformen Format (z. B. JSON oder Turtle) zur\u00fcck. Im Backend werden diese Rohdaten in ein app-spezifisches JSON-Format transformiert und an das Frontend weitergegeben, sodass sie dort in Listen, Detailansichten oder \u00dcbersichten zum Lernfortschritt dargestellt werden k\u00f6nnen.<\/p>\n<h1><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-4261 aligncenter\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/Schichtenmodell-fuer-das-abrufen-von-Daten-300x196.jpg\" alt=\"\" width=\"300\" height=\"196\" srcset=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/Schichtenmodell-fuer-das-abrufen-von-Daten-300x196.jpg 300w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/Schichtenmodell-fuer-das-abrufen-von-Daten-1024x670.jpg 1024w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/Schichtenmodell-fuer-das-abrufen-von-Daten-768x503.jpg 768w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/Schichtenmodell-fuer-das-abrufen-von-Daten-1536x1006.jpg 1536w, https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2025\/12\/Schichtenmodell-fuer-das-abrufen-von-Daten-2048x1341.jpg 2048w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/h1>\n<p>Durch diese klare Trennung von Frontend, Backend und Triple Store entsteht eine lose gekoppelte Architektur: Die FahrMemo-App kommuniziert ausschlie\u00dflich \u00fcber standardisierte SPARQL-HTTP-Endpunkte mit Fuseki und kann so perspektivisch auch externe Wissensgraphen einbinden oder von anderen Systemen gemeinsam mitgenutzt werden.<\/p>\n<h1>Vorteile und Einschr\u00e4nkungen von Apache Jena Fuseki<\/h1>\n<div id=\"message-237379\" class=\"Message message-list-item first-in-group allow-selection shown open\" data-message-id=\"237379\">\n<div class=\"message-content-wrapper can-select-text\">\n<div class=\"message-content peer-color-3 text has-shadow has-solid-background has-footer\" dir=\"auto\">\n<div class=\"content-inner\" dir=\"auto\">\n<div class=\"text-content clearfix with-meta\" dir=\"auto\">\n<p>Apache Jena Fuseki bietet eine leistungsf\u00e4hige Grundlage f\u00fcr den Aufbau und Betrieb moderner Wissensgraphen. Zu den gr\u00f6\u00dften Vorteilen z\u00e4hlt seine strikte Orientierung an offenen W3C-Standards wie RDF und SPARQL, wodurch eine hohe Interoperabilit\u00e4t mit unterschiedlichsten Systemen gew\u00e4hrleistet ist. Durch die klaren HTTP-Schnittstellen l\u00e4sst sich Fuseki problemlos in Microservice-Architekturen integrieren und kann sowohl als zentraler Datenspeicher als auch als dedizierter Query-Service betrieben werden. Dar\u00fcber hinaus erm\u00f6glicht die Anbindung an Jena-Reasoner das automatische Ableiten zus\u00e4tzlichen Wissens, was viele Anwendungen deutlich intelligenter und ausdrucksst\u00e4rker macht.<\/p>\n<p>Trotz dieser St\u00e4rken gibt es jedoch auch Einschr\u00e4nkungen. Fuseki ist nicht prim\u00e4r f\u00fcr extrem gro\u00dfe Datenmengen im Milliardenbereich ausgelegt; in solchen F\u00e4llen sind spezialisierte Graphdatenbanken oft besser geeignet. Zudem erfordert der Aufbau komplexer Ontologien und Reasoning-Strukturen fachliches Know-how, da semantische Datenmodelle sorgf\u00e4ltig geplant werden m\u00fcssen. Auch Performance-Optimierungen, etwa bei SPARQL-Updates oder komplexen Joins, erfordern Erfahrung und eine passende Speicherwahl wie TDB2. Insgesamt bleibt Fuseki jedoch ein sehr flexibles und offenes System \u2013 vorausgesetzt, man bringt das n\u00f6tige Verst\u00e4ndnis f\u00fcr semantische Technologien mit.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<h1 class=\"message-action-buttons\">Alternativen zu Apache Jena Fuseki<\/h1>\n<p>F\u00fcr Anwendungen, die \u00e4hnliche Funktionen ben\u00f6tigen oder andere technische Schwerpunkte setzen, existieren mehrere etablierte Alternativen zu Fuseki. Eine h\u00e4ufig genutzte Option ist GraphDB, eine leistungsf\u00e4hige RDF-Datenbank mit integrierten Reasoning-Mechanismen, die besonders auf Enterprise-Anforderungen ausgerichtet ist. Sie bietet eine benutzerfreundliche Oberfl\u00e4che, hohe Skalierbarkeit und schnelle Abfrageoptimierungen, eignet sich jedoch vor allem f\u00fcr kommerzielle Szenarien.<\/p>\n<p>Eine weitere Alternative ist Virtuoso Open-Source Edition, das sowohl als RDF-Store als auch als klassische relationale Datenbank fungiert. Es ist eine beliebte Wahl im Bereich Linked Open Data und bietet gute Performance bei gro\u00dfen Datens\u00e4tzen. Ebenfalls verbreitet ist Blazegraph, bekannt als urspr\u00fcngliche Engine des Wikimedia-Wissensgraphen. Blazegraph besticht durch hohe Geschwindigkeit, wurde jedoch nicht weiter aktiv entwickelt.<\/p>\n<p>F\u00fcr Entwickler, die maximale Flexibilit\u00e4t w\u00fcnschen oder sich au\u00dferhalb des RDF-Standards bewegen m\u00f6chten, bieten sich auch Property-Graph-Datenbanken wie Neo4j oder JanusGraph an. Diese setzen zwar nicht auf SPARQL, eignen sich aber hervorragend f\u00fcr graphzentrierte Anwendungen mit komplexen Beziehungen. Welche Alternative am besten passt, h\u00e4ngt letztlich von Speicherbedarf, Abfragekomplexit\u00e4t, Reasoning-Anspr\u00fcchen und dem gew\u00fcnschten Datenmodell ab.<\/p>\n<\/div>\n<h1>Quellen:<\/h1>\n<p>Offizielle Apache Jena Dokumentation:<br \/>\n<a href=\"https:\/\/jena.apache.org\/documentation\/\">https:\/\/jena.apache.org\/documentation\/<\/a><\/p>\n<p>Fuseki Server Overview:<br \/>\n<a href=\"https:\/\/jena.apache.org\/documentation\/fuseki2\/?utm_source=chatgpt.com\">https:\/\/jena.apache.org\/documentation\/fuseki2\/<\/a><\/p>\n<p>TDB2 \u2013 Persistenter Triple Store:<br \/>\n<a href=\"https:\/\/jena.apache.org\/documentation\/tdb2\/\">https:\/\/jena.apache.org\/documentation\/tdb2\/<\/a><\/p>\n<p>SPARQL 1.1 Query Language (W3C):<br \/>\n<a href=\"https:\/\/www.w3.org\/TR\/sparql11-query\/\">https:\/\/www.w3.org\/TR\/sparql11-query\/<\/a><\/p>\n<p>SPARQL Update:<br \/>\n<a href=\"https:\/\/www.w3.org\/TR\/sparql11-update\/\">https:\/\/www.w3.org\/TR\/sparql11-update\/<\/a><\/p>\n<\/div>\n<div id=\"message-237380\" class=\"Message message-list-item allow-selection last-in-group shown open\" data-message-id=\"237380\">\n<div class=\"bottom-marker\" data-message-id=\"237380\" data-should-update-views=\"false\"><\/div>\n<div class=\"message-content-wrapper can-select-text\">\n<div class=\"message-content peer-color-3 text has-shadow has-solid-background has-appendix has-footer\" dir=\"auto\">\n<div class=\"content-inner\" dir=\"auto\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; \u00dcbersicht Apache Jena Fuseki ist ein HTTP-basierter SPARQL-Server, der als zentrale Schnittstelle f\u00fcr das Speichern, Abfragen und Verarbeiten von<\/p>\n","protected":false},"author":217,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-4217","post","type-post","status-publish","format-standard","hentry","category-betriebliche-informationssysteme"],"_links":{"self":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/4217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/users\/217"}],"replies":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/comments?post=4217"}],"version-history":[{"count":3,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/4217\/revisions"}],"predecessor-version":[{"id":4268,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/4217\/revisions\/4268"}],"wp:attachment":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/media?parent=4217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/categories?post=4217"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/tags?post=4217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}