tutorial grundlagen des semantic web · terminkalender termin thema beschreibung 02.11 semantic web...
TRANSCRIPT
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
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