Tutorial Grundlagen des Semantic Web · Terminkalender Termin Thema Beschreibung 02.11 Semantic Web...

Preview:

Citation preview

Tutorial Grundlagen des Semantic WebRobert Tolksdorf, Elena Paslaru Bontas

AG Netzbasierte Informationssystemehttp://nbi.inf.fu-berlin.de/lehre/0506/P_SW/

TerminkalenderTermin Thema Beschreibung

02.11 Semantic Web Sprachen I

RDF, RDFS Syntax und Semantik mit Beispielen

09.11

16.11 RDF(S)-Werkzeuge

Programmierwerkzeuge: Jena APIAnfragesprachen: SPARQL, RDQLValidatoren, 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 APIReasoning in OWL: Pellet, RACERAnfragesprachen: OWL-QL, RQLValidatoren, Editoren, Datenbanken

SWRL-Werkzeuge:Reasoning in SWRLEditoren

Semantic Web Sprachen I

RDF und RDFS

Übersicht

Grundlagen: XML/XML-SchemaRDF: Syntax, Semantik, DatenmodellErweiterung des RDF mit RDFSRDFS: Syntax und SemantikBeispiele

XML und XML Schema

Grundlagen

PrinzipTrennung zwischen Struktur und Darstellung

NamensräumeVerwendung mehrerer XML Schemata in einem Dokument ohne Namenskonflikte

XML DTD und XML Schemakorrekte Dokumentstrukturen

Ersetzung des HTML durchDomänenspezifische Auszeichungssprachen (definiert in XML) z.B. MathMLAbbildung von diesen Sprachen zu HTML (XSL)

Warum ist XML nicht ausreichend?

Trennung zwischen Struktur und InhaltNotwendig weil Domänenwissen unterschiedlich strukturiert werden kannNotwendig um externe Dokumentstrukturen zu verstehen

Explizite InhaltsdarstellungNotwendig 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 inhaltlicherMetadaten Wie jede Sprache hat RDF

Syntax (verschiedene XML Serialisierungsmöglichkeiten)Semantik (RDF Datenmodell)

Wie jede Web-Sprache hat RDF einen Namespace

DatenmodellGerichteter Graph: Knoten (Ressourcen), Kanten (Properties)

Ressourcen (RDF Resource)Alles worüber man Aussagen machen kannIdentifiziert 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”

BeispielAussage: die Webseite „nbi.inf.fu-berlin.de“ wurde erstellt von Robert Tolksdorf

Metainfonbi.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 WebGeeignet für

eBusiness

Gesagtvon

Autor

RDF RessourcenRDF Literal

RDF Blank NodesAnonyme Ressourcen (haben keine URI)Platzhalter für komplexe ObjekteRessourcen 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 ContainernBag ungeordnete Liste rdf:BagSequence geordnete Liste rdf:SeqAlternative eindeutiger Wert rdf:Alt

Containers sind auch RDF RessourcenSemantik: offene Mengen

unbekannt ob weitere Elemente zu der Mengegehören

BeispielAussage: 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

BagMitglieder einer Gruppe, Dateien in einem Verzeichnis

SeqBuch/Artikelautoren, Punkte in einer Tagesordnung

Altdocument home and mirrors, mailing-list moderators

RDF Collections

Ähnlich zu Containern, aber geschlossen:Alle Elemente einer Menge sind spezifiziert

Zugriff auf einzelne Mengenelementerekursivfirst (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 AussageHat URI

BeispielAussage: Robert Tolksdorf hat folgendes gesagt: „Semantic Web ist geeignet für eBussiness“.

www.robert-tolksdorf.de/Robert

25

"RT"Name

Alter

Semantic WebGeeignet für

eBusiness

GesagtvonRDF Statement

RDF Subject

RDF about

aboutdirekte Angabe des URI

aboutEachURI eines ContainerProperty auf alle Elemente angewendet

aboutEachPrefixURI PräfixProperty auf alle Ressourcen mit dem Präfix angewendet

RDF ID

Fragment identifier (eindeutig im Dokument)Abkürzung der vollständigen URI einer RessourceVollständiger Name zusammengesetzt aus:

Base URI (xml:base = …)#

Beispiel Wert von rdf:ID

http://www.example.com/products#item123

rdf:IDxml:base

RDF Datatypespezifiziert den Datentyp eines LiteralsXML-Schema Datentypen unterstütztSpezieller Typ von RDF Literal

Beispiel (RDF/XML Syntax)

<name rdf:datatype="&xsd;string>RT</name>

RDF Syntax

DatenmodellGraphenstruktur: Knoten (Ressourcen, Werte), Kanten (Properties)

Verschiedene syntaktische FormateRDF/XML SyntaxN3…

Beispiel XML/RDF

<rdf:RDF><rdf:Descriptionabout="http://nbi.inf.fu-berlin.de">

<Autorrdf:resource=“http://robert.tolksdorf.de/Robert” />

</rdf:Description></rdf:RDF>

nbi.inf.fu-berlin.de www.robert-tolksdorf.de/RobertAutor

Dokument-Header

Alternative<rdf:RDF>

<rdf:Description about="http://nbi.inf.fu-berlin.de"><Autor>

<NBIMitarbeiterrdf:resource=“http://robert.tolksdorf.de/Robert”/></Autor>

</rdf:Description></rdf:RDF>

nbi.inf.fu-berlin.de www.robert-tolksdorf.de/RobertAutor

NBIMitarbeiter

rdf:type_

Das gleiche in N3

nbi.inf.fu-berlin.de ns:Autorwww.robert-tolksdorf.de/Robert

www.robert-tolksdorf.de/Robertrdf:type ns:NBIMitarbeiter

nbi.inf.fu-berlin.de www.robert-tolksdorf.de/RobertAutor

NBIMitarbeiter

rdf:type_

Warum ist RDF nicht ausreichend?

RDF Sprache für die Darstellung von Aussagen im Webdefiniert ein Datenmodel:

Ressourcen minimal typisiertSemantik der Ressourcen minimal spezifiziert

NotwendigErweiterung von RDF für die Beschreibung von semantisch komplexere Vokabularien

RDFS

Wichtige Konstrukte

KlassenRoot-Class rdfs:ResourceMetaClass rdfs:ClassLiterals rdfs:Literal

Propertiesrdfs:subclassOfrdfs:domain, rdfs:rangerdf:typerdfs:label, rdfs:comment

Beispielrdfs:Resource

xyz:MotorVehicle rdfs:Class

s s t

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 zwischenKlassen und PropertiesObject und DatatypePropertiesKlassen und Instanzen

RDFS ordnet RDF-Konstrukte weitere Typen zurdfs:Class, rdfs:Property etc.

Beispiele rdf:Statement ist vom Typ rdfs:ClassDie Property rdf:type ist eine Subklasse der Klasserdfs:Property

rdf:type

spezifiziert TypzugehörigkeitWert 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:subClassOfspezifiziert Spezialisierung und Generalisierung zwischen KlassenNicht mit rdf:type zu verwechseln…

rdfs:Resource

xyz:MotorVehicle rdfs:Class

s s t

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:subClassOfrdf:resource=„xyz:Van“/>

<rdfs:subClassOfrdf: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 reifiziertenAussagen)

rdfs:Property

<rdfs:Property id=“Autor”><rdfs:domain rdf:resource=“#Person”/><rdfs:range rdf:resource=“#Webseite”/>

<rdfs:Property>

Webseite PersonAutor

Wichtige Properties

rdfs:subClassOfVerbindet Unterklassen zu Klassen

rdfs:subPropertyOfVerbindet Unterproperty zu Property

rdfs:labelVerbindet Ressource zu Name

rdfs:commentVerbindet 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

InstanceData

Ontologie-sprache

RDFS RDF

Daten sind formalisiert in einer OntologiespracheRDFS ist eine OntologiespracheAlle anderen Ontologiesprachen

erweitern RDFSAlle Sprachen nutzen das RDF Datenmodell

Zusammenfassung

XML und XML-SchemaRDF

Vorteile gegenüber XMLDatenmodellRDF/XML und N3 Syntax

RDFSVorteile gegenüber RDFDatenmodellWichtige Klassen und Properties

Erweitertes Beispiel

Literatur

Resource Description Framework (RDF) http://www.w3.org/RDF/(gesehen am 21.10.2005) RDF Vocabulary DescriptionLanguage 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 WebRobert Tolksdorf, Elena Paslaru Bontas

AG Netzbasierte Informationssystemehttp://nbi.inf.fu-berlin.de/lehre/0506/P_SW/

TerminkalenderTermin 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 APIAnfragesprachen: SPARQL, RDQLValidatoren, 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 APIReasoning in OWL: Pellet, RACERAnfragesprachen: OWL-QL, RQLValidatoren, Editoren, Datenbanken

SWRL-Werkzeuge:Reasoning in SWRLEditoren

Semantic Web Werkzeuge I

RDF und RDFS

Übersicht Werkzeuge

Editoren, Validatoren, ParserAutomatische Generierung von RDF DatenRDF SpeicherungRDF(S) AnfragesprachenAPIs

RDF EditorenIsaViz

IsaViz (Xerox)RDF/XML, N3, N-triple …Graphen-basiertJava-basierthttp://www.w3.org/2001/11/IsaViz/

RDF EditorenProtégé-2000

Protégé-2000 (Stanford University)RDF/XMLGUIJava-basiertUnterstützt auch OWLhttp://protege.stanford.edu/overview/

RDF EditorenSemanticWorks

SemanticWorks (Altova)RDF/XML, N3GUI und VisualisierungUnterstützt auch OWLKommerziell (free trial verfügbar)http://www.altova.com/products_semanticworks.html

RDF Validator

W3C RDF(S) Validation Servicehttp://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 FirefoxWeb 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 ScrapersSoftware zur Extrahierung von Informationen von Web-SeitenImplementierts als XSL templates oderin Javascript

Screen Scrapers Bibliothek

RDF SpeicherungSesame

Sesame (2.0) (Aduna & Co)Repository für RDF(S)-DatenQuery-Engine (SeRQL, SPARQL, RQL)Inference-Engine (OWLIM)Sesame API (Java)Client/Server Architekturhttp://www.openrdf.org/doc/sesame/users/userguide.html#chapter-introduction

RDF SpeicherungRDFStore

RDFStoreRepository für RDF(S)-DatenParser (RDF/XML, N3)Query-Engine (RDQL)API (PHP)http://rdfstore.sourceforge.net/

RDF SpeicherungProtégé-2000

Protégé-2000 (Stanford University)Repository für RDF(S)-DatenQuery-Engine (RDQL,SPARQL)Protégé API (Java)http://protege.stanford.edu/overview/

RDF SpeicherungJena2

Jena 2 (HP)Repository für RDF(S)-DatenQuery-Engine (RDQL, SPARQL, RQL)API (Java)http://jena.sourceforge.net/

RDF(S) Anfragesprachen

RDF-XML Syntax basierendin Anlehnung an XQuery: RDF-Query und RQueryBeispiel: Suche alle Elemente die den /Autor/Name “RT” haben

S-P-O Triple-basierendRDQL, Triple, SPARQLBeispiel: Suche alle Aussagen wo das Subjekt"…" und das Objekt "…" ist

RDF(S) Anfragesprachen (II)

RDFS basierendRQL, SeRQLBeispiel: Finde Ressourcen der Klasse“Autor"

RDQL

SQL-ähnliche Syntax (SELECT, FROM, WHERE, USING)

SELECT Variablen der ErgebnismengeFROM RDF-Quelle(n) lokal/URLWHERE Tripel Muster die erfüllt werden müssenAND zusätzlicher Filter für VariablenwerteUSING 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 RDQLErweiterungen für

Gleichzeitige Bearbeitung mehrererRDF-GraphenNamed GraphsOperatoren

SPARQL Implementierungen

Protégé-2000SesameJena (ARQ)

SPARQL Beispiel

SeRQL

Sesame Ressource Query LanguageFormale 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ückenWHERE Bedingungen für Variablen, Vergleiche etc.USING NAMESPACE

Kombinierte Anfragen über UNION, INTERSECT, MINUS

Ergebnis: RDF-XML Syntax

SeRQL Beispiel

SELECT Datum, Title, Name, EmailFROM {Student} DC:date {Datum};DC:title {Title};vCard:FN {Name};vCard:EMAIL {} rdf:value {Email}WHERE Datum like "2004-11-*"USING NAMESPACEvCard = <http://www.w3.org/2001/vcard-rdf/3.0#>,

DC = <http://purl.org/dc/elements/1.1/>

RDF(S) APIs

Jena2SesameRAP

Jena2

Jena Semantic Web FrameworkEntwicklung und Management von Semantic Web Daten (RDF, RDFS, OWL)

Erstellung, Speicherung und Verwaltung von RDF Graphen (genannt RDF Modelle)Persistente SpeicherungReasoning (ü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ürden Umgang mit RDF Daten

com.hp.hpl.jena.tutorialBeispiele

com.hp.hpl.jena.rdf.modelRDF 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: RDFRDFS ModelOWL ModelInfModel

Model-SpezifikationenBeschreiben die Eigenschaften eines Modells

http://jena.sourceforge.net/how-to/model-factory.html

com.hp.hpl.jena.rdf.modelAnfragenResIterator 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 fileInputStream 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

unionmodel1.read(new InputStreamReader(in1), "");

model2.read(new InputStreamReader(in2), "");

model = model1.union(model2); differenceintersection

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/OntModelZusätzliche Methoden für die Manipulation von Klassen und Properties (domain, range)

WICHTIG: Inferenzeigenschaften

Zusammenfassung

Editoren, Validatoren, ParserAutomatische Generierung von RDF DatenRDF SpeicherungRDF(S) AnfragesprachenAPIs

Literatur

W3C Seiten zu RDF und RDFS (vorallem Tools)Seiten der einzelnen Tools

Recommended