Institut für Informatik Betriebliche Informationssysteme RDF Storage / RDF Database: Sesame Persistente Speicherung von RDF-Daten in einer relationalen Datenbank Ruslan Hrushchak, Pavel Selesnjov RDF Storage / RDF Database: Sesame 1 RDF Storage Institut für Informatik Betriebliche Informationssysteme • 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 2 Problematik Institut für Informatik Betriebliche 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. RDF Storage / RDF Database: Sesame 3 RDF und das relationale Datenmodell Institut für Informatik Betriebliche Informationssysteme • 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 4 RDF und das relationale Datenmodell Institut für Informatik Betriebliche Informationssysteme • 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 5 RDF und das relationale Datenmodell Institut für Informatik Betriebliche Informationssysteme • 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 6 RDF und das relationale Datenmodell Institut für Informatik Betriebliche Informationssysteme • 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 7 Datenbank-Schemata zum Speichern von RDF-Daten Institut für Informatik Betriebliche Informationssysteme • Datenbank-Schemata zum Speichern von RDFDaten • Ä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 8 Datenbank-Schemata zum Speichern von RDF-Daten Institut für Informatik Betriebliche Informationssysteme • 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 9 Datenbank-Schemata zum Speichern von RDF-Daten Institut für Informatik Betriebliche Informationssysteme • 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 RDF Storage / RDF Database: Sesame 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 IntegerWert 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 ModellTabelle enthält. 10 Datenbank-Schemata zum Speichern von RDF-Daten Institut für Informatik Betriebliche Informationssysteme • 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 11 Datenbank-Schemata zum Speichern von RDF-Daten Institut für Informatik Betriebliche Informationssysteme • 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 an Beispiel: title • Spaltenname Spaltentyp id Integer namespace Integer-Referenz localname Varchar RDF Storage / RDF Database: Sesame 12 Datenbank-Schemata zum Speichern von RDF-Daten Institut für Informatik Betriebliche Informationssysteme • 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 13 Datenbank-Schemata zum Speichern von RDF-Daten Institut für Informatik Betriebliche Informationssysteme • 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 DreiWege-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 14 Datenbank-Schemata zum Speichern von RDF-Daten Institut für Informatik Betriebliche Informationssysteme • 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 TripelFormat 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 15 Datenbank-Schemata zum Speichern von RDF-Daten Institut für Informatik Betriebliche Informationssysteme • 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 RDF Storage / RDF Database: Sesame 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. 16 Datenbank-Schemata zum Speichern von RDF-Daten Institut für Informatik Betriebliche Informationssysteme • 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 17 Technologien zum persistenten Speichern von RDF-Daten • • • Institut für Informatik Betriebliche Informationssysteme 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 18 Institut für Informatik Betriebliche Informationssysteme RDF Database: Sesame RDF Storage / RDF Database: Sesame 19 Übersicht Institut für Informatik Betriebliche Informationssysteme Gliederung: 1. 2. 3. 4. 5. Installation Architektur API Backends Webinterface RDF Storage / RDF Database: Sesame 20 1. Installation Institut für Informatik Betriebliche Informationssysteme • 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 21 1. Installation Institut für Informatik Betriebliche Informationssysteme 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 22 1. Installation von Sesame unter Tomcat Institut für Informatik Betriebliche Informationssysteme 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 unter http://hostname/SESAME_DIR RDF Storage / RDF Database: Sesame 23 1. Installation: MySQL Konfiguration Institut für Informatik Betriebliche Informationssysteme • 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>; oder mysqladmin -u root -p create <database> grant all on <database>.* to root@hostname identified by 'password'; RDF Storage / RDF Database: Sesame 24 2. Architektur Institut für Informatik Betriebliche Informationssysteme • 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 25 2. Architektur Institut für Informatik Betriebliche Informationssysteme 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 API Graph 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 26 3. API Institut für Informatik Betriebliche Informationssysteme Benutzung von Sesame API: Sesamekommunikation mit anderen Programmen (entweder remote oder local) als Bibliothek Repository API: ein Zentralpunkt für Sesame Repositories Benutzung als Verbindung zum Sesame Server Ausführen von Anfragen upload von RDF-Daten u.s.w. Beispiel: Kommunikation mit dem Server über HTTP java.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 27 3. API Institut für Informatik Betriebliche Informationssysteme 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 28 3. API Institut für Informatik Betriebliche Informationssysteme 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 29 4. Backends Institut für Informatik Betriebliche Informationssysteme 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 30 5. Webinterface Institut für Informatik Betriebliche Informationssysteme Leseaktionen (Export, Abfrage) Schreibaktionen (Hinzufügen, Entfernen) RDF Storage / RDF Database: Sesame 31 5. Webinterface Institut für Informatik Betriebliche Informationssysteme Die Konfiguration von Sesame RDF Storage / RDF Database: Sesame 32 Referenzen Institut für Informatik Betriebliche Informationssysteme • 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://wwwdb.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 33 Referenzen Institut für Informatik Betriebliche Informationssysteme • Referenzen • • • • Sesame RDF database, http://www.openrdf.org/doc/users/ Comparing Formats, http://www.bitloeffel.de/DOC/2003/Formats20030416-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_r eport/ RDF Storage / RDF Database: Sesame 34