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 RDF, RDFS Syntax und Semantik mit Beispielen
09.11
16.11 RDF(S)- Werkzeuge
Programmierwerkzeuge: Jena API
Anfragesprachen: SPARQL, RDQL
Validatoren, Editoren, RDF-Datenbanken 23.11 Semantic Web
Sprachen II
OWL, SWRL Syntax und Semantik mit Beispielen
30.11 OWL/SWRL- Werkzeuge
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.
Metainfo
nbi.inf.fu-berlin.de hat den Autor
Info
<Autor>
<uri> nbi.inf.fu-berlin.de </uri>
<name>Robert Tolksdorf</name>
</Autor>
<Document uri=“nbi.inf.fu-berlin.de”
<Autor>Robert Tolksdorf</Autor>
</Document>
1 2
<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
Metainfo
nbi.inf.fu-berlin.de hat den Autor
Info
"nbi.inf.fu-berlin.de" Subjekt (Ressource) hat den Autor Prädikat (Ressource) Robert Tolksdorf Objekt (Wert oder
Ressource)
Beispiel (2)
nbi.inf.fu-berlin.de www.robert-tolksdorf.de/Robert
25
"RT"
Name
Alter
Semantic Web Geeignet für
eBusiness
Gesagt von Autor
RDF Ressourcen
RDF Literal
RDF Blank Nodes
Anonyme Ressourcen (haben keine URI)
Platzhalter für komplexe Objekte
Ressourcen von unbekannten Typ
Aussage: die Webseite „nbi.inf.fu-berlin.de“ wurde erstellt von jemanden/etwas mit dem Namen „RT“
und der Email-Adresse „rt@inf“
nbi.inf.fu-berlin.de x:_1
rt@inf
"RT"
Name
Email Autor
Blank Node
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
Autor-Container-URI
Autor
rdf:Bag
Elena Paslaru URI
www.robert-tolksdorf.de/Robert
…
rdf:type rdf:_1 rdf:_2
rdf:_3
Alternative Modellierung
nbi.inf.fu-berlin.de
Elena Paslaru URI
www.robert-tolksdorf.de/Robert
…
Autor Autor
Autor
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
_x:1
Veranstalter
www.robert-tolksdorf.de/Robert
Elena Paslaru URI _x:2
rdf:nil
rdf:first
rdf:rest
Blank Node
Blank Node
rdf:first rdf:rest
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“.
www.robert-tolksdorf.de/Robert
25
"RT"
Name
Alter
Semantic Web Geeignet für
eBusiness
Gesagt
RDF Statement
vonRDF Subject
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
<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 www.robert-tolksdorf.de/Robert
Autor
Dokument-Header
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 www.robert-tolksdorf.de/Robert
Autor
NBIMitarbeiter
rdf:type_
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 www.robert-tolksdorf.de/Robert
Autor
NBIMitarbeiter
rdf:type_
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
rdfs:Resource
xyz:MotorVehicle rdfs:Class
s t s
t
xyz:Truck s
t
xyz:PassengerVehicle s = rdfs:subClassOf
t = rdf:type
xyz:Van
s
s
xyz:MiniVan s
s
t t
t
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…
rdfs:Resource
xyz:MotorVehicle rdfs:Class
s t s
t
xyz:Truck s
t
xyz:PassengerVehicle s = rdfs:subClassOf
t = rdf:type
xyz:Van
s
s
xyz:MiniVan s
s
t t
t
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 Person
Autor
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-syntax- ns#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-syntax- ns#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:RDF>
RDF(S) und das Semantic Web
Instance Data
Ontologie- sprache
RDFS RDF
zDaten sind formalisiert in einer Ontologiesprache
zRDFS ist eine Ontologiesprache
zAlle anderen Ontologiesprachen erweitern RDFS
zAlle Sprachen nutzen das RDF Datenmodell
Zusammenfassung
XML und XML-Schema
RDF
Vorteile gegenüber XML
Datenmodell
RDF/XML und N3 Syntax
RDFS
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 RDF, RDFS Syntax und Semantik mit Beispielen 09.11 Anwendungen des
Semantic Web Präsentation Projekt Reisewissen 16.11 RDF(S)-Werkzeuge Programmierwerkzeuge: Jena API
Anfragesprachen: SPARQL, RDQL
Validatoren, Editoren, RDF-Datenbanken 23.11 Semantic Web
Sprachen II
OWL, SWRL Syntax und Semantik mit Beispielen 30.11 OWL/SWRL-
Werkzeuge
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/piggy- bank/, 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/vcard- rdf/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/how- to/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)