Tutorial Grundlagen des Semantic Web Robert Tolksdorf, Elena Paslaru Bontas AG Netzbasierte Informationssysteme http://nbi.inf.fu-berlin.de/lehre/0506/p_sw/
Terminkalender Termin Thema Beschreibung 02.11 Semantic Web Sprachen I 09.11 16.11 RDF(S)- Werkzeuge 23.11 Semantic Web Sprachen II 30.11 OWL/SWRL- Werkzeuge RDF, RDFS Syntax und Semantik mit Beispielen Programmierwerkzeuge: Jena API Anfragesprachen: SPARQL, RDQL Validatoren, Editoren, RDF-Datenbanken OWL, SWRL Syntax und Semantik mit Beispielen OWL-Werkzeuge: Programmierwerkzeuge: Jena API Reasoning in OWL: Pellet, RACER Anfragesprachen: OWL-QL, RQL Validatoren, Editoren, Datenbanken SWRL-Werkzeuge: Reasoning in SWRL Editoren
Semantic Web Sprachen I RDF und RDFS
Übersicht Grundlagen: XML/XML-Schema RDF: Syntax, Semantik, Datenmodell Erweiterung des RDF mit RDFS RDFS: Syntax und Semantik Beispiele
XML und XML Schema
Grundlagen Prinzip Trennung zwischen Struktur und Darstellung Namensräume Verwendung mehrerer XML Schemata in einem Dokument ohne Namenskonflikte XML DTD und XML Schema korrekte Dokumentstrukturen Ersetzung des HTML durch Domänenspezifische Auszeichungssprachen (definiert in XML) z.b. MathML Abbildung von diesen Sprachen zu HTML (XSL)
Warum ist XML nicht ausreichend? Trennung zwischen Struktur und Inhalt Notwendig weil Domänenwissen unterschiedlich strukturiert werden kann Notwendig um externe Dokumentstrukturen zu verstehen Explizite Inhaltsdarstellung Notwendig um Wissen maschinen-lesbar darzustellen
Beispiel Aussage: die Webseite nbi.inf.fu-berlin.de wurde erstellt von Robert Tolksdorf. nbi.inf.fu-berlin.de Info hat den Autor Metainfo <Autor> <uri> nbi.inf.fu-berlin.de </uri> <name>robert Tolksdorf</name> </Autor> 1 2 <Document uri= nbi.inf.fu-berlin.de <Autor>Robert Tolksdorf</Autor> </Document> <Document uri= nbi.inf.fu-berlin.de Creator= Robert Tolksdorf /> 3
RDF
RDF RDF (Resource Description Framework) Sprache zur Darstellung inhaltlicher Metadaten Wie jede Sprache hat RDF Syntax (verschiedene XML Serialisierungsmöglichkeiten) Semantik (RDF Datenmodell) Wie jede Web-Sprache hat RDF einen Namespace
Datenmodell Gerichteter Graph: Knoten (Ressourcen), Kanten (Properties) Ressourcen (RDF Resource) Alles worüber man Aussagen machen kann Identifiziert durch URIs (qualified URIs = URI + fragment identifier) Aussagen sind auch Ressourcen Eigenschaften/Beziehungen (RDF Property) Verbinden Ressourcen miteinander oder Ressourcen zu Werten (RDF Literal) Aussagen (RDF Statement) (Subjekt, Prädikat, Objekt) Resource has Property with Value
Beispiel Aussage: die Webseite nbi.inf.fu-berlin.de wurde erstellt von Robert Tolksdorf nbi.inf.fu-berlin.de Info hat den Autor Metainfo "nbi.inf.fu-berlin.de" hat den Autor Robert Tolksdorf Subjekt (Ressource) Prädikat (Ressource) Objekt (Wert oder Ressource)
Beispiel (2) nbi.inf.fu-berlin.de Autor RDF Ressourcen www.robert-tolksdorf.de/robert Gesagt von Semantic Web Geeignet für Name Alter ebusiness "RT" 25 RDF Literal
RDF Blank Nodes Anonyme Ressourcen (haben keine URI) Platzhalter für komplexe Objekte Ressourcen von unbekannten Typ nbi.inf.fu-berlin.de Autor x:_1 Name "RT" Blank Node Email rt@inf Aussage: die Webseite nbi.inf.fu-berlin.de wurde erstellt von jemanden/etwas mit dem Namen RT und der Email-Adresse rt@inf
RDF Containers Mengenobjekte (geordnet, ungeordnet, mit Duplikaten, ohne Duplikaten, offen) Ermöglichen Aussagen über mehrere Ressourcen Platzhalter für komplexe Mengenobjekte (vs. Blank Node)
Container-Typen 3 Typen von Containern Bag ungeordnete Liste rdf:bag Sequence geordnete Liste rdf:seq Alternative eindeutiger Wert rdf:alt Containers sind auch RDF Ressourcen Semantik: offene Mengen unbekannt ob weitere Elemente zu der Menge gehören
Beispiel Aussage: die Webseite nbi.inf.fu-berlin.de wurde erstellt von Robert Tolksdorf und Elena Paslaru und nbi.inf.fu-berlin.de rdf:bag Autor rdf:type rdf:_1 www.robert-tolksdorf.de/robert Autor-Container-URI rdf:_2 Elena Paslaru URI rdf:_3
Alternative Modellierung nbi.inf.fu-berlin.de Autor Autor www.robert-tolksdorf.de/robert Autor Elena Paslaru URI
Nutzung von RDF Containern Bag Mitglieder einer Gruppe, Dateien in einem Verzeichnis Seq Buch/Artikelautoren, Punkte in einer Tagesordnung Alt document home and mirrors, mailing-list moderators
RDF Collections Ähnlich zu Containern, aber geschlossen: Alle Elemente einer Menge sind spezifiziert Zugriff auf einzelne Mengenelemente rekursiv first (erstes Element) rest (restliche Elemente) nil (leere Menge)
Beispiel Aussage: Das Projekt Semantic Web wird veranstaltet von Robert Tolksdorf und Elena Paslaru. SWProjekt-URI www.robert-tolksdorf.de/robert Veranstalter rdf:first Blank Node _x:1 rdf:rest _x:2 rdf:first Elena Paslaru URI Blank Node rdf:rest rdf:nil
Reifizierte Aussagen Aussagen über Aussagen Spezieller Konstrukt (RDF Statement) Identifiziert explizit das Subjekt, Prädikat, Objekt einer Aussage Hat URI
Beispiel Aussage: Robert Tolksdorf hat folgendes gesagt: Semantic Web ist geeignet für ebussiness. RDF Statement www.robert-tolksdorf.de/robert Gesagt von Name Alter "RT" 25 RDF Subject Semantic Web Geeignet für ebusiness
RDF about about direkte Angabe des URI abouteach URI eines Container Property auf alle Elemente angewendet abouteachprefix URI Präfix Property auf alle Ressourcen mit dem Präfix angewendet
RDF ID Fragment identifier (eindeutig im Dokument) Abkürzung der vollständigen URI einer Ressource Vollständiger Name zusammengesetzt aus: # Base URI (xml:base = ) Beispiel Wert von rdf:id http://www.example.com/products#item123 rdf:id xml:base
RDF Datatype spezifiziert den Datentyp eines Literals XML-Schema Datentypen unterstützt Spezieller Typ von RDF Literal Beispiel (RDF/XML Syntax) <name rdf:datatype="&xsd;string>rt</name>
RDF Syntax Datenmodell Graphenstruktur: Knoten (Ressourcen, Werte), Kanten (Properties) Verschiedene syntaktische Formate RDF/XML Syntax N3
Beispiel XML/RDF Dokument-Header <rdf:rdf> <rdf:description about="http://nbi.inf.fu-berlin.de"> <Autor rdf:resource= http://robert.tolksdorf.de /Robert /> </rdf:description> </rdf:rdf> nbi.inf.fu-berlin.de Autor www.robert-tolksdorf.de/robert
Alternative <rdf:rdf> <rdf:description about="http://nbi.inf.fu-berlin.de"> <Autor> <NBIMitarbeiter rdf:resource= http://robert.tolksdorf.de/robert /> </Autor> </rdf:description> </rdf:rdf> nbi.inf.fu-berlin.de Autor www.robert-tolksdorf.de/robert rdf:type_ NBIMitarbeiter
Das gleiche in N3 nbi.inf.fu-berlin.de ns:autor www.robert-tolksdorf.de/robert www.robert-tolksdorf.de/robert rdf:type ns:nbimitarbeiter nbi.inf.fu-berlin.de Autor www.robert-tolksdorf.de/robert rdf:type_ NBIMitarbeiter
Warum ist RDF nicht ausreichend? RDF Sprache für die Darstellung von Aussagen im Web definiert ein Datenmodel: Ressourcen minimal typisiert Semantik der Ressourcen minimal spezifiziert Notwendig Erweiterung von RDF für die Beschreibung von semantisch komplexere Vokabularien
RDFS
Wichtige Konstrukte Klassen Root-Class rdfs:resource MetaClass rdfs:class Literals rdfs:literal Properties rdfs:subclassof rdfs:domain, rdfs:range rdf:type rdfs:label, rdfs:comment
Beispiel s = rdfs:subclassof t = rdf:type t rdfs:class t s t xyz:van rdfs:resource t s t xyz:motorvehicle t s s s xyz:truck s xyz:pas sengervehicle xyz:minivan s
Bemerkungen RDFS unterscheidet nicht zwischen Klassen und Properties Object und DatatypeProperties Klassen und Instanzen RDFS ordnet RDF-Konstrukte weitere Typen zu rdfs:class, rdfs:property etc. Beispiele rdf:statement ist vom Typ rdfs:class Die Property rdf:type ist eine Subklasse der Klasse rdfs:property
rdf:type spezifiziert Typzugehörigkeit Wert ist immer eine Ressource, die einen Typen definiert Vordefinierte Typen (z. B. RDF Statements) Nutzerdefinierte Typen (z. B. NBIMitarbeiter) Nicht mit rdfs:subclassof zu verwechseln
rdfs:subclassof spezifiziert Spezialisierung und Generalisierung zwischen Klassen Nicht mit rdf:type zu verwechseln s = rdfs:subclassof t = rdf:type t s rdfs:class t s t xyz:van t t s xyz:minivan rdfs:resource t xyz:passengervehicle s xyz:motorvehicle s s s xyz:truck
rdfs:class <rdfs:class id= MiniVan1 > <rdfs:label>minivan</rdfs:label> <rdfs:subclassof rdf:resource= xyz:van /> <rdfs:subclassof rdf:resource= xyz:passengervehicle / > </rdfs:class>
Wichtige Klassen rdfs:resource (alle Ressourcen) rdfs:literal (alle Strings) rdfs:class (alle Klassen) ist eine rdfs:resource, da RDFS in RDF definiert ist rdfs:property (alle Properties) rdf:statement (alle reifizierten Aussagen)
rdfs:property <rdfs:property id= Autor > <rdfs:domain rdf:resource= #Person /> <rdfs:range rdf:resource= #Webseite /> <rdfs:property> Webseite Autor Person
Wichtige Properties rdfs:subclassof Verbindet Unterklassen zu Klassen rdfs:subpropertyof Verbindet Unterproperty zu Property rdfs:label Verbindet Ressource zu Name rdfs:comment Verbindet Ressource zu Kommentar
Erweitertes Beispiel <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <rdfs:class rdf:id="person"> <rdfs:comment>person Class</rdfs:comment> <rdfs:subclassof rdf:resource="http://www.w3.org/1999/02/22-rdf-syntaxns#resource"/> </rdfs:class> <rdfs:class rdf:id="student"> <rdfs:comment>student Class</rdfs:comment> <rdfs:subclassof rdf:resource="#person"/> </rdfs:class> <rdfs:class rdf:id="teacher"> <rdfs:comment>teacher Class</rdfs:comment> <rdfs:subclassof rdf:resource="#person"/> </rdfs:class> <rdfs:class rdf:id="course"> <rdfs:comment>course Class</rdfs:comment> <rdfs:subclassof rdf:resource="http://www.w3.org/1999/02/22-rdf-syntaxns#resource"/> </rdfs:class> <rdf:property rdf:id="teacher"> <rdfs:comment>teacher of a course</rdfs:comment> <rdfs:domain rdf:resource="#course"/> <rdfs:range rdf:resource="#teacher"/> </rdf:property> <rdf:property rdf:id="name"> <rdfs:comment>name of a Person or Course</rdfs:comment> <rdfs:domain rdf:resource="#person"/> <rdfs:domain rdf:resource="#course"/> <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#literal"/> </rdf:property>
RDF(S) und das Semantic Web RDFS RDF Ontologiesprache Instance Data Daten sind formalisiert in einer Ontologiesprache RDFS ist eine Ontologiesprache Alle anderen Ontologiesprachen erweitern RDFS Alle Sprachen nutzen das RDF Datenmodell
Zusammenfassung XML und XML-Schema RDF RDFS Vorteile gegenüber XML Datenmodell RDF/XML und N3 Syntax Vorteile gegenüber RDF Datenmodell Wichtige Klassen und Properties Erweitertes Beispiel
Literatur Resource Description Framework (RDF) http://www.w3.org/rdf/ (gesehen am 21.10.2005) RDF Vocabulary Description Language 1.0: RDF Schema (W3C Recommendation 10 February 2004), http://www.w3.org/tr/rdf-schema/ (gesehen am 21.10.2005)
Tutorial Grundlagen des Semantic Web Robert Tolksdorf, Elena Paslaru Bontas AG Netzbasierte Informationssysteme http://nbi.inf.fu-berlin.de/lehre/0506/p_sw/
Terminkalender Termin Thema Beschreibung 02.11 Semantic Web Sprachen I 09.11 Anwendungen des Semantic Web 16.11 RDF(S)-Werkzeuge 23.11 Semantic Web Sprachen II 30.11 OWL/SWRL- Werkzeuge RDF, RDFS Syntax und Semantik mit Beispielen Präsentation Projekt Reisewissen Programmierwerkzeuge: Jena API Anfragesprachen: SPARQL, RDQL Validatoren, Editoren, RDF-Datenbanken OWL, SWRL Syntax und Semantik mit Beispielen OWL-Werkzeuge: Programmierwerkzeuge: Jena API Reasoning in OWL: Pellet, RACER Anfragesprachen: OWL-QL, RQL Validatoren, Editoren, Datenbanken SWRL-Werkzeuge: Reasoning in SWRL Editoren
Semantic Web Werkzeuge I RDF und RDFS
Übersicht Werkzeuge Editoren, Validatoren, Parser Automatische Generierung von RDF Daten RDF Speicherung RDF(S) Anfragesprachen APIs
RDF Editoren IsaViz IsaViz (Xerox) RDF/XML, N3, N-triple Graphen-basiert Java-basiert http://www.w3.org/2001/11/isaviz/
RDF Editoren Protégé-2000 Protégé-2000 (Stanford University) RDF/XML GUI Java-basiert Unterstützt auch OWL http://protege.stanford.edu/overview/
RDF Editoren SemanticWorks SemanticWorks (Altova) RDF/XML, N3 GUI und Visualisierung Unterstützt auch OWL Kommerziell (free trial verfügbar) http://www.altova.com/products_seman ticworks.html
RDF Validator W3C RDF(S) Validation Service http://www.w3.org/rdf/validator/
RDF Parser Jena2 (Java) Raptor RDF Parser Toolkit (C Bibliothek) RAP (PHP) Drive RDF API for C# (.NET) SWI-Prolog
PiggyBank Piggy Bank is an extension to the Firefox Web browser that turns it into a Semantic Web browser, letting you make use of existing information on the Web in more useful and flexible ways (Webseite http://simile.mit.edu/piggybank/, gesehen November 2005)
PiggyBank (II) Screen Scrapers Software zur Extrahierung von Informationen von Web-Seiten Implementierts als XSL templates oder in Javascript Screen Scrapers Bibliothek
RDF Speicherung Sesame Sesame (2.0) (Aduna & Co) Repository für RDF(S)-Daten Query-Engine (SeRQL, SPARQL, RQL) Inference-Engine (OWLIM) Sesame API (Java) Client/Server Architektur http://www.openrdf.org/doc/sesame/users/use rguide.html#chapter-introduction
RDF Speicherung RDFStore RDFStore Repository für RDF(S)-Daten Parser (RDF/XML, N3) Query-Engine (RDQL) API (PHP) http://rdfstore.sourceforge.net/
RDF Speicherung Protégé-2000 Protégé-2000 (Stanford University) Repository für RDF(S)-Daten Query-Engine (RDQL,SPARQL) Protégé API (Java) http://protege.stanford.edu/overview/
RDF Speicherung Jena2 Jena 2 (HP) Repository für RDF(S)-Daten Query-Engine (RDQL, SPARQL, RQL) API (Java) http://jena.sourceforge.net/
RDF(S) Anfragesprachen RDF-XML Syntax basierend in Anlehnung an XQuery: RDF-Query und RQuery Beispiel: Suche alle Elemente die den /Autor/Name RT haben S-P-O Triple-basierend RDQL, Triple, SPARQL Beispiel: Suche alle Aussagen wo das Subjekt " " und das Objekt " " ist
RDF(S) Anfragesprachen (II) RDFS basierend RQL, SeRQL Beispiel: Finde Ressourcen der Klasse Autor"
RDQL SQL-ähnliche Syntax (SELECT, FROM, WHERE, USING) SELECT Variablen der Ergebnismenge FROM RDF-Quelle(n) lokal/url WHERE Tripel Muster die erfüllt werden müssen AND zusätzlicher Filter für Variablenwerte USING Namensraumangaben Ergebnis: Variablen-Feld (Array) Implementiert u.a. in Jena, RDFStore, RAP - RDF API for PHP
RDQL Beispiel SELECT?resource WHERE (?resource ex:alter?age) AND?age >= 24 USING ex FOR <http://example.org/thisexample.rdf#>
SPARQL Work in progress bei der W3C (21 July last working draft) Ähnlich zu RDQL Erweiterungen für Gleichzeitige Bearbeitung mehrerer RDF-Graphen Named Graphs Operatoren
SPARQL Implementierungen Protégé-2000 Sesame Jena (ARQ)
SPARQL Beispiel
SeRQL Sesame Ressource Query Language Formale Interpretation des RDF Graphen (semantisch) SQL-ähnliche Syntax (SELECT, FROM, WHERE, USING NAMESPACE) SELECT (DISTINCT) Variablen der Ergebnismenge (X, $C, @P,*) FROM Liste von Pfad Ausdrücken WHERE Bedingungen für Variablen, Vergleiche etc. USING NAMESPACE Kombinierte Anfragen über UNION, INTERSECT, MINUS Ergebnis: RDF-XML Syntax
SeRQL Beispiel SELECT Datum, Title, Name, Email FROM {Student} DC:date {Datum}; DC:title {Title}; vcard:fn {Name}; vcard:email {} rdf:value {Email} WHERE Datum like "2004-11-*" USING NAMESPACE vcard = <http://www.w3.org/2001/vcardrdf/3.0#>, DC = <http://purl.org/dc/elements/1.1/>
RDF(S) APIs Jena2 Sesame RAP
Jena2 Jena Semantic Web Framework Entwicklung und Management von Semantic Web Daten (RDF, RDFS, OWL) Erstellung, Speicherung und Verwaltung von RDF Graphen (genannt RDF Modelle) Persistente Speicherung Reasoning (über DIG Schnittstelle) Anfragesprachen und engines: RDQL,SPARQL De facto die populärste API für Semantic Web
Das wichtigste für RDF com.hp.hpl.jena.rdf.model: Wichtigste Klassen und Methoden für den Umgang mit RDF Daten com.hp.hpl.jena.tutorial Beispiele
com.hp.hpl.jena.rdf.model RDF Modelle // some definitions static String personuri = "http://somewhere/johnsmith"; static String fullname = "John Smith"; //create an empty Model Model model = ModelFactory.createDefaultModel(); //create the resource Resource johnsmith = model.createresource(personuri); // add the property johnsmith.addproperty(vcard.fn, fullname);
Class Model Factory Modelltypen: DefaultModel: RDF RDFS Model OWL Model InfModel Model-Spezifikationen Beschreiben die Eigenschaften eines Modells http://jena.sourceforge.net/howto/model-factory.html
com.hp.hpl.jena.rdf.model Anfragen ResIterator iter = model.listsubjectswithproperty( VCARD.FN); while (iter.hasnext()) { Resource r = iter.nextresource();... }
Einlesen von RDF Daten //create an empty model Model model = ModelFactory.createDefaultModel(); //use the FileManager to find the input file InputStream in = FileManager.get().open( inputfilename ); if (in == null) { throw new IllegalArgumentException( "File: " + inputfilename + " not found"); } //read the RDF/XML file model.read(in, ""); //write it to standard out model.write(system.out);
Speichern von RDF Daten //now write the model in XML form to a file model.write(system.out);
Modell-Management union model1.read(new InputStreamReader(in1), ""); model2.read(new InputStreamReader(in2), ""); model = model1.union(model2); difference intersection
RDF Statements Model StmtIterator iter = model.liststatements(); while (iter.hasnext()) { Statement stmt = iter.nextstatement(); Resource subject = stmt.getsubject(); Property predicate = stmt.getpredicate(); RDFNode object = stmt.getobject(); }
RDFS Modelle InfModel/OntModel Zusätzliche Methoden für die Manipulation von Klassen und Properties (domain, range) WICHTIG: Inferenzeigenschaften
Zusammenfassung Editoren, Validatoren, Parser Automatische Generierung von RDF Daten RDF Speicherung RDF(S) Anfragesprachen APIs
Literatur W3C Seiten zu RDF und RDFS (vor allem Tools) Seiten der einzelnen Tools