RDF Storage / RDF Database: Sesame 1
Institut für InformatikBetriebliche Informationssysteme
RDF Storage / RDF Database: Sesame
Persistente Speicherung von RDF-Daten in einer relationalen Datenbank
Ruslan Hrushchak, Pavel Selesnjov
RDF Storage / RDF Database: Sesame 2
Institut für InformatikBetriebliche InformationssystemeRDF Storage
• Outline
Problematik bei der persistenten Speicherung von RDF-Daten
RDF und das relationale Datenmodell
Datenbank-Schemata zum Speichern von RDF-Daten
Technologien zum persistenten Speichern von RDF-Daten
__________________________________________________
Installation Architektur API Backends Webinterface
RDF Storage / RDF Database: Sesame 3
Institut für InformatikBetriebliche Informationssysteme
• Problemstellung
Das Anfragen und persistente Speichern von RDF-Daten, die in einer Serialisierung (Beispielweise RDF/XML) vorliegen, ist nur für kleinere Datenmenge ausreichend.
Größere Datenbestände im RDF-Format verlangen nach effizienten Methoden zur ihrer dauerhaften Speicherung.
Datenbanken bedeuten mögliche Lösung des Problems.
Problematik
RDF Storage / RDF Database: Sesame 4
Institut für InformatikBetriebliche InformationssystemeRDF und das relationale Datenmodell
• RDF- Datenmodell
• Ein Statement beschreibt eine Ressource besteht aus der Ressource, einer Property und einem Property-Wert
• Ein RDF-Graph baut sich aus einem oder mehreren dieser Statements auf.
<rdf:Description rdf:about="http://www.recshop.fake/cd/Empire Burlesque"> <cd:artist>Bob Dylan
</cd:artist> <cd:country>USA
</cd:country> <cd:company>Columbia
</cd:company> <cd:price>10.90
</cd:price> <cd:year>1985
</cd:year></rdf:Description></rdf:RDF>
RDF Storage / RDF Database: Sesame 5
Institut für InformatikBetriebliche InformationssystemeRDF und das relationale Datenmodell
• RDB- Datenmodell
• Eine relationale Datenbank besteht aus Tabellen, welche wiederum aus Spalten und Zeilen bestehen.
• Die Zeilen repräsentieren die einzelnen Datensätze (eng: records).
• Jeder Datensatz verfügt über eine Anzahl von Feldern (Spalten), die über Werte verfügen können. Die Information, die ein Datensatz enthält, wird nur von den Inhalten seiner Felder definiert.
id artist country company price year
http://www....
Bob Dylan USA Columbia 10.90 1985
RDF Storage / RDF Database: Sesame 6
Institut für InformatikBetriebliche InformationssystemeRDF und das relationale Datenmodell
• RDF – RDB – Abbildung
• Das RDF-Datenmodell ist eng mit dem Modell der rationalen Datenbanken verbunden.
• Die Abbildung RDF-Datenmodell auf RDB-Modell ist realisierbar.• Sie kann folgendermaßen durchgeführt werden:
Ein Datensatz in der relationalen Datenbank entspricht einem Knoten in RDF-Graphen
Die Spalten (Felder) des Datensatzes entsprechen den Properties (Prädikaten) des Knoten in RDF-Graphen
Die Werte in den einzelnen Feldern des Datensatzes können auf die Werte der einzelnen Prädikate abgebildet werden
• Prinzipiell ist es möglich, die Modelle aufeinander abzubilden. Sollen jetzt aber komplexe RDF-Modelle mit all ihren strukturellen Möglichkeiten in einer relationalen Datenbank abgespeichert werden, tauchen „Probleme“ auf.
RDF Storage / RDF Database: Sesame 7
Institut für InformatikBetriebliche InformationssystemeRDF und das relationale Datenmodell
• RDB – RDF – Abbildung (Probleme)
• Literale in RDF müssen keinen Typ besitzen.• Die Länge von Literalen und URIs in RDFist sind nicht
beschränkt.
• Relationale Datenbanken sind stark typisiert.
• Die Speicherung einer sehr langen Zeichenkette erfordert die Verwendung eines BLOBs (binary large objects) in der Datenbank.
• Folge: Einbußen in der Performance des
Datenbankmanagementsystems Größerer Platzbedarf aufgrund zusätzlicher explizit zu
pflegenden Informationen zum RDF-Datentyp.
RDF Storage / RDF Database: Sesame 8
Institut für InformatikBetriebliche InformationssystemeDatenbank-Schemata zum Speichern von RDF-Daten
• Datenbank-Schemata zum Speichern von RDF-Daten
• Ähnlichkeiten:Die RDF-Graphen werden in Form von „Subjekt Prädikat Objekt“-Tripeln abgespeichert.
• Differenzen:Speicherung von mehreren Modellen (bzw. eines einzelnen Modells) innerhalb einer Tabelle.
• Schemata können anwendungsunterschiedlich bzw. domänenunterschiedlich gestaltet sein.
RDF Storage / RDF Database: Sesame 9
Institut für InformatikBetriebliche InformationssystemeDatenbank-Schemata zum Speichern von RDF-Daten
• 1. Tripel in einer einzigen Tabelle
• Die erste und einfachste Möglichkeit zur Speicherung eines RDF-Graphen in einer relationalen Datenbank [Melnik]
• Pro RDF-Graph wird dafür eine Tabelle mit der folgenden Struktur angelegt:
Spaltenname Spaltentyp
Resource (Subjekt) Varchar
Property (Prädikat) Varchar
Value (Objekt) Blob
Hint Char
Resource und property speichern die jeweiligen URI-Referenzen für die Ressource bzw. die Property.Value enthält den Wert des Objektes in dem Statement. Dabei kann es sich entweder um ein Literal oder eine Ressource handeln. Worum es sich handelt, wird durch das Flag hint angegeben.
RDF Storage / RDF Database: Sesame 10
Institut für InformatikBetriebliche InformationssystemeDatenbank-Schemata zum Speichern von RDF-Daten
• 2. Tripel-Schema über mehrere Tabellen
• Speicherung von mehreren RDF-Graphen unter Verwendung einiger weniger Tabellen
• Die einzelnen Modelle werden durch Statements in der normalen „Subjekt Prädikat Objekt“- Form gespeichert
• A. Tabelle für Statements
Spaltenname Spaltentyp
Subject Integer-Referenz
Predicate Integer-Referenz
Object Integer-Referenz
objectIsLiteral Small-Integer
model Integer-Referenz
Der Integer-Wert bei Subject und Predicate gibt eine Ressourcen-ID an, das heißt er referenziert einen Eintrag in der Ressourcen-Tabelle.
Bei einem Objekt steht der Integer-Wert entweder für eine Ressource oder ein Literal. Worum es sich handelt, wird in dem Feld objectIsLiteral angegeben.
Das Feld model ordnet das Statement einem Modell zu, in dem es die ID eines RDF-Modells aus der Modell-Tabelle enthält.
RDF Storage / RDF Database: Sesame 11
Institut für InformatikBetriebliche InformationssystemeDatenbank-Schemata zum Speichern von RDF-Daten
• B. Tabelle für Literale
• Id: identifiziert das Literal eindeutig, damit es später in ein Statement als Referenz eingefügt werden kann
• Language: gibt die Sprache an, in welcher der String in dem Literal-Objekt geschrieben wurde.
• Literal: das eigentliche Literal als Binary Large Object (BLOB)
Spaltenname Spaltentyp
Id Integer
Language Varchar
literal Blob
RDF Storage / RDF Database: Sesame 12
Institut für InformatikBetriebliche InformationssystemeDatenbank-Schemata zum Speichern von RDF-Daten
• C. Tabelle für Ressourcen • enthält normale Ressourcen sowie auch die Teilmenge der Ressourcen – die
Properties
• Id: identifiziert die Ressource zur späteren Einbindung in ein Statement
• Namespace-Feld: referenziert mit der Integer-Referenz auf einen in der Namespace-Tabelle gespeicherten Namensraum Beispiel: http://purl.org/dc/elements/1.1/
• Localname-Feld: gibt den lokalen Namen der Ressource anBeispiel: title
Spaltenname Spaltentyp
id Integer
namespace Integer-Referenz
localname Varchar
RDF Storage / RDF Database: Sesame 13
Institut für InformatikBetriebliche InformationssystemeDatenbank-Schemata zum Speichern von RDF-Daten
• D. Tabelle für Namenräume• speichert die in der Ressourcentabelle verwendeten Namensräume anhand
ihrer URI ab und identifiziert sie durch die id
Spaltenname Spaltentyp
id Integer
Uri Varchar
• E. Tabelle für Modelle• Die id identifiziert das Modell, damit später die einzelnen Statements eindeutig einem Modell zugeordnet werden können. • Name enthält den Namen des Modells und kann später beispielsweise genutzt werden, um das Modell in das Verwaltungssystem zu laden.
Spaltenname Spaltentyp
id Integer
name Varchar
RDF Storage / RDF Database: Sesame 14
Institut für InformatikBetriebliche InformationssystemeDatenbank-Schemata zum Speichern von RDF-Daten
• Tripel-Schema über mehrere Tabellen
• Vorteile: Das Schema ist vollständig normalisiert.
Gewährleistung, dass die gesuchte Informationen auch gefunden werden.
Trennung von Statements und Ressourcen bzw. Literale. Effektivere Speicherung von Daten. (Jedes Literal und jede URI werden nur einmal abgespeichert, unabhängig von der Anzahl der Aussagen, in denen sie enthalten sind.)
• Nachteile: Der Suchaufwand ist immer noch zu hoch.
(Für die Materialisierung eines einzelnen Statements wird ein Drei-Wege-Join benötigt.)
° Mögliche Aushilfe: Literale und Ressourcen einer Aussage bis zu einer bestimmten Länge direkt in Statementstabelle speichern. (Für kleinere Aussagen funktioniert die Abfrage dann ohne Join.)
RDF Storage / RDF Database: Sesame 15
Institut für InformatikBetriebliche InformationssystemeDatenbank-Schemata zum Speichern von RDF-Daten
• 3. Modelle in separaten Tabellen
• Die Statements der Modelle werden nicht alle in einer einzigen Tabelle gespeichert, sondern für jedes Modell wird eine eigene Tabelle erzeugt, in der die Statements angelegt werden.
• Jedes Modell bekommt eine eigene Tabelle, die als Name einen vom System erzeugten eindeutigen Identifikator erhält.
• Die URI-Referenz des Subjekts und des Prädikates werden im Tripel-Format gespeichert.
• Das Objekt wird als URI-Referenz gespeichert – falls es sich um eine Ressource handelt – oder als ein Literal.
• Literale, die eine bestimmte Größe (z.B. 256 Bytes) überschreiten, werden nicht direkt in der Modell-Tabelle gespeichert, sondern werden in einer zusätzlichen Literal-Tabelle abgelegt und von der Modell-Tabelle aus referenziert. Alle anderen Literale werden in der Modell-Tabelle direkt gespeichert.
RDF Storage / RDF Database: Sesame 16
Institut für InformatikBetriebliche InformationssystemeDatenbank-Schemata zum Speichern von RDF-Daten
• 3. Modelle in separaten Tabellen
• Die ersten drei Felder speichern die URI-Referenzen des Tripels ab.
• ObjStr speichert ein Literal, falls es sich bei dem Objekt um keine Ressource – handelt.
• ObjLiteral beinhaltet die Referenz auf die Literal-Tabelle, falls das Literal zu groß ist und in der Literal-Tabelle gespeichert wird.
Spaltenname Spaltentyp
SubjectRes Varchar
PropRes Varchar
ObjRes Varchar
ObjStr TinyBlob
ObjLitera Integer-Referenz
Informationen über alle vorhanden RDF-Modelle sind in der zusätzlicher Metadaten-Tabelle anwesend.
Sie enthalten beispielsweise die Informationen darüber, wie der Identifikator einer Modell-Tabelle lautet und unter welchem Namen das Modell geladen werden kann.
RDF Storage / RDF Database: Sesame 17
Institut für InformatikBetriebliche InformationssystemeDatenbank-Schemata zum Speichern von RDF-Daten
• Zusammenfassung
• Die Speicherung von RDF in relationalen Datenbanken ist ohne Verluste möglich.
• Die Suche nach vorgegebenen Attributen ist sehr zeitaufwendig.
• Weitere Strategien beim Design der Datenbankschema: für häufig genutzte Attribute spezielle Tabellen anzulegen die RDF Daten im Filesystem zu speichern und nur für ausgewählte
Attribute Tabellen in einem Datenbankschema anzulegen Das Schema an die konkreten Anwendungen bzw. Domänen
anzupassen.
RDF Storage / RDF Database: Sesame 18
Institut für InformatikBetriebliche InformationssystemeTechnologien zum persistenten Speichern von RDF-Daten
• Technologien zum persistenten Speichern von RDF-Daten
• Benötigt wird eine Schnittstelle, die es einem ermöglicht, RDF Daten zu erstellen, zu verarbeiten und persistent abspeichern zu können.
• Es befinden sich einige Technologien auf dem Markt, die diese Funktionen für den Umgang mit RDF-Modellen anbieten. Sie unterscheiden sich unter anderem in der Art und Weise der internen
Speicherung der Daten und der unterstützten Anfragesprache.
System DB-Datenmodell Anfragesprache
Jena2 Triplets RDQL
RDFStore Triplets RDQL
Sesame Graph RDQL
ICS-RDF Suite Graph RQL
KAON Graph RQL
TRIPLE Triplets ähnlich F-Logic
RDF Storage / RDF Database: Sesame 19
Institut für InformatikBetriebliche Informationssysteme
RDF Database: Sesame
RDF Storage / RDF Database: Sesame 20
Institut für InformatikBetriebliche InformationssystemeÜbersicht
Gliederung:
1. Installation2. Architektur3. API4. Backends5. Webinterface
RDF Storage / RDF Database: Sesame 21
Institut für InformatikBetriebliche Informationssysteme1. Installation
• Entwicklung von holländischen Firma Aduna
• Sesame ist ein System (Open Source RDF Datenbank), welches das persistente Speichern, die Archivierung und Abfrage von RDF und RDFS-Daten ermöglicht
• Das Zentralkonzept des Systems ist Repository
RDF Storage / RDF Database: Sesame 22
Institut für InformatikBetriebliche Informationssysteme1. Installation
Zwei häufigste Benutzungsmöglichkeiten von Sesame:
als Java Bibliothek als Server, dabei können Clients über das Web mit dem Server
kommunizieren.
RDF Storage / RDF Database: Sesame 23
Institut für InformatikBetriebliche Informationssysteme1. Installation von Sesame unter Tomcat
Notwendigkeit von Java-Servlet-Container für die Installation
1. Erstellung vom Verzeichnis sesame im Verzeichnis [TOMCAT_DIR]/webapps/
2. Entpackung von sesame.war (vorhanden in [Sesame-dir]/lib)in neuem Verzeichnis sesame
3. Einfügung vom JDBC-Treiber ins Verzeichnis [TOMCAT_DIR]/webapps/sesame/WEB-INF/lib/
4. Umbenennung von der Config-Datei system.conf.example (im Verzeichnis [TOMCAT_DIR]/webapps/sesame/WEB-INF) auf system.conf
5. Letzter Schritt - Starten von Sesame unterhttp://hostname/SESAME_DIR
RDF Storage / RDF Database: Sesame 24
Institut für InformatikBetriebliche Informationssysteme1. Installation: MySQL Konfiguration
• Sesame ist unabhängig von dem benutzten System und kann neben unterschiedlichsten relationalen Datenbanken auch beispielsweise objektorientierte DMBS (Datenbank Management Systeme) für seine Zwecke nutzen
• Es werden momentan PostgreSQL, MySQL, MS SQL Server und Oracle 9i unterstützt
• Erstellung von neuem Benutzerkonto am MySQL Server.mysql -u root -p <database>create database <database>; odermysqladmin -u root -p create <database>grant all on <database>.* to root@hostname identified by 'password';
RDF Storage / RDF Database: Sesame 25
Institut für InformatikBetriebliche Informationssysteme2. Architektur
• Storage And Inference Layer (SAIL): grundlegende Methoden zum Zugriff auf die RDF-Daten
• Auf dem SAIL bauen drei Module auf, mit folgenden Aufgabenbereiche
1. Das Admin-Modul ist für das Einfügen neuer RDF-Daten und für das Löschen des Datenbestandes (Repositories) zuständig
2. Das Query-Modul ist für das Ausführen von Abfragen auf den Repository-Datenbestand verantwortlich
3. Das Export-Modul bietet die Möglichkeit, RDF-Daten in vier RDF-Serialisierung (N-Triples, Turtle, Notation 3, RDF/XML) zu exportieren.
RDF Storage / RDF Database: Sesame 26
Institut für InformatikBetriebliche Informationssysteme2. Architektur
Zugriff auf diese drei Module ist durch Sesame's Access APIs erreichbar Repository API
„high-level“ Zugriff auf Sesame Repository, solche wie Abfragen, Einfügen von RDF- Dateien
Graph APIGraph API bietet die feine Unterstützung der Behandlung von RDF-Dateien, solche wie Hinzufügen und Entfernen einzelnen Statements
Kommunikationsarten HTTP (für Zugriffe über das Web) RMI (Remote Method Invocation) SOAP (Simple Object Access Protocol)
RDF Storage / RDF Database: Sesame 27
Institut für InformatikBetriebliche Informationssysteme3. API
Benutzung von Sesame API: Sesamekommunikation mit anderen Programmen (entweder
remote oder local) als Bibliothek
Repository API:ein Zentralpunkt für Sesame RepositoriesBenutzung als Verbindung zum Sesame ServerAusführen von Anfragenupload von RDF-Daten u.s.w.
Beispiel:Kommunikation mit dem Server über HTTPjava.net.URL sesameServerURL = new java.net.URL("http://HOSTNAME/SESAME_DIR/");
HTTPService service = Sesame.getService(sesameServerURL);
service.login("foo", "bar");
SesameRepository myRepository = service.getRepository("foobar-rep");
RDF Storage / RDF Database: Sesame 28
Institut für InformatikBetriebliche Informationssysteme3. API
Graph API stellt ein RDF-Graph in der Form von Java-Objekt ,erlaubt die Manipulation von RDF-Graph, wie Hinzufügen, Entfernen von Statements.
Beispiel:
Erstellung von einem leeren Graph
Graph myGraph = new GraphImpl();
ValueFactory myFactory = myGraph.getValueFactory();
String namespace = "http://www.foo.com/bar#";
URI mySubject = myFactory.createURI(namespace, "actor1");
URI myPredicate = myFactory.createURI(namespace, "hasName");
Literal myObject = myFactory.createLiteral("Tom Hanks");
Hinzufügung einzelnen Statements myGraph.add(mySubject, myPredicate, myObject);
RDF Storage / RDF Database: Sesame 29
Institut für InformatikBetriebliche Informationssysteme3. API
RIO -RDF I/O[Sesam]
Ist ein Teil von Sesame Ist aber separat erhältlich Unterstützt lesen und schreiben von RDF
Sesame kann auch als plug-in in einen ontology editor (Protégé, OntoEdit, OILEd oder IsaViz) eingesetzt werden
RDF Storage / RDF Database: Sesame 30
Institut für InformatikBetriebliche Informationssysteme4. Backends
Sesame SAIL verwendet die dynamische Datenbankschema, in welcher die Tabellen für jede neue Class und die Beziehungen zwischen Subclass hingefügt sind.Ähnlich geht es mit properties.
RDF Storage / RDF Database: Sesame 31
Institut für InformatikBetriebliche Informationssysteme5. Webinterface
Leseaktionen (Export, Abfrage) Schreibaktionen (Hinzufügen, Entfernen)
RDF Storage / RDF Database: Sesame 32
Institut für InformatikBetriebliche Informationssysteme5. Webinterface
Die Konfiguration von Sesame
RDF Storage / RDF Database: Sesame 33
Institut für InformatikBetriebliche InformationssystemeReferenzen
• Referenzen
• Brickley, Miller: RDF, SQL and the Semantic Web - a case study, http://ilrt.org/discovery/2000/10/swsql/
• S. Melnik: Storing RDF in a relational database, http://www-db.stanford.edu/%7Emelnik/rdf/db.html
• Mapping von RDF->DB, http://www.w3.org/2002/05/24-RDF-SQL/• HP Research, "Jena 2 - A Semantic Web Framework", http://
www.hpl.hp.com/semweb/jena.htm• RDFStore, Perl API for RDF Storage, http://rdfstore.sourceforge.net/• Sesame, http://www.openrdf.org/• ICS-RDF Suite: "High-level Scalable Tools for the Semantic Web",
http://139.91.183.30:9090/RDF/• KAON, "Open-Source Ontology Management Infrastructure", http://
kaon.semanticweb.org/• D. Brügge: Konzeption und Implementierung eines verteilten
Agentensystems zur persistenten Speicherung und zum Austausch von RDF-Daten. Technische Universität München
• A. Haupt: Persistentes Speichern von RDF-Daten
RDF Storage / RDF Database: Sesame 34
Institut für InformatikBetriebliche InformationssystemeReferenzen
• Referenzen
• Sesame RDF database,http://www.openrdf.org/doc/users/
• Comparing Formats, http://www.bitloeffel.de/DOC/2003/Formats-20030416-de.html
• IsaViz: A Visual Authoring Tool for RDF,http://www.w3.org/2001/11/IsaViz/
• Mapping Semantic Web Data with RDBMSes,http://www.w3.org/2001/sw/Europe/reports/scalable_rdbms_mapping_report/