sitzung 5
DESCRIPTION
TRANSCRIPT
Semantic TechnologiesÜbung, Wintersemester 2011/129. November 2011 - RDF Schema
Aufgabe 1
• Beschreiben Sie sich selbst und ihre Beziehungen untereinander mit den Begriffen aus FOAF in RDF/XML.
• URIs:
• Personen: http://hki.uni-koeln.de/st_2011/person/max.musterman
• Dieser Kurs: http://hki.uni-koeln.de/st_2011/group/st_2011
• Ihre Gruppe: http://hki.uni-koeln.de/st_2011/group/gruppenname
• Benutzen Sie auch Begriffe aus FOAF Social Web
Fallstricke
FallstrickeURIs für Properties
• Die eigentliche Property und das Dokument, das die Property beschreibt sind zwei unterschiedliche Ressourcen.
• Slashes („/“) und Hashes („#“) machen einen Unterschied.
FallstrickeURIs für Dinge
• können prinzipiell willkürlich definiert werden.
• aber: Am besten in einem Namensraum, den man kontrolliert.
•müssen eindeutig definiert sein.
• sind case-sensitive.
FallstrickeLiterale vs. Ressourcen
• Auf Dinge, die potentiell auch woanders beschrieben werden verweist man als Ressourcen.
• Ausschließlich elementare Werte werden als Literale behandelt.
Blank NodesKnoten ohne URI
• RDF-Knoten ohne rdf:about-Attribut.
• Alternative: rdf:nodeID = Lokale ID
•Nachteil:
• Knoten sind nicht global referenzierbar.
Domain & Rangebei Properties
• Die Domain gibt die Klasse an, deren Eigenschaft die Property darstellt.
• Der Range gibt die Klasse an, deren Instanzen als Objekte der Property auftreten.
Domain & Rangebei Properties
•Achtung bei:
• Bags und anderen Containern
• Literalen
Aufgabe 2
• Gegeben sind die folgenden Datenbanktabellen. Erstellen Sie aus diesen Daten einen RDF-Graphen und serialisieren Sie diesen in RDF/XML.
• Die Identifier für Typen, Properties und Ressourcen dürfen Sie selbst vergeben.
• Verwenden Sie einen Container zur Abbildung einer der 1 zu n-Beziehungen.
RDF Schema
Semantik in XML
<dozent>Jan Wieners</dozent><professor>Manfred Thaller</professor><veranstaltung name="Programmierpraktikum C++"> <wirdGehaltenVon>Daniel de Oliveira</wirdGehaltenVon></veranstaltung>
• Aufgabe: Finde alle Dozenten - XPath: //dozent
• Antwort: „Jan Wieners“
Semantik in RDF<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:uni="http://example.org/uni-vokabular#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:dc="http://purl.org/dc/elements/1.1/"> <uni:Dozent rdf:about="http://hki.uni-koeln.de/staff/wieners" foaf:name="Jan Wieners"/> <uni:Professor rdf:about="http://hki.uni-koeln.de/staff/thaller" foaf:name="Manfred Thaller"/> <uni:Uebung rdf:about="http://hki.uni-koeln.de/courses/42" dc:title="Programmierpraktikum C++"> <uni:wirdGehaltenVon rdf:resource="http://hki.uni-koeln.de/staff/oliveira"/> </uni:Uebung> </rdf:RDF>
• Aufgabe: Finde alle Dozenten
• Antwort: „Jan Wieners“
• (eigentlich: http://hki.uni-koeln.de/staff/wieners)
Semantik in RDF
• Fehlende Information:
• Alle Professoren sind Dozenten.
• Übungen werden von Dozenten gehalten.
➡In comes RDF Schema!
RDF Schema
• Ist ein spezielles RDF-Vokabular zur Spezifikation von Klassen und Properties und deren Verhältnissen.
• Eine primitive Ontologiesprache.
Klassen• Spezieller Typ: rdfs:Class
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="http://example.org/uni-vokabular#Professor"> <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/> </rdf:Description> </rdf:RDF>
<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:about="http://example.org/uni-vokabular#Professor"/></rdf:RDF>
<http://example.org/uni-vokabular#Professor>! <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>! <http://www.w3.org/2000/01/rdf-schema#Class>.
Klassenhierarchien
Universitäts-angestellter
Verwaltungs-angestellter
nicht wissenschaftl.Angestellter
wissenschaftl.Angestellter
Professor Wiss.Mitarbeiter
Wiss.Hilfskraft
KlassenhierarchienUniversitäts-angestellter
Verwaltungs-angestellter
nicht wissenschaftl.Angestellter
wissenschaftl.Angestellter
Professor Wiss.Mitarbeiter
Wiss.Hilfskraft
• Spezielle Property: rdfs:subClassOf
<rdfs:Class rdf:about="http://example.org/uni-vokabular#Dozent"/>
<rdfs:Class rdf:about="http://example.org/uni-vokabular#Professor"> <rdfs:subClassOf rdf:resource="http://example.org/uni-vokabular#Dozent"/></rdfs:Class>
Semantik in RDF<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:uni="http://example.org/uni-vokabular#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:dc="http://purl.org/dc/elements/1.1/"> <uni:Dozent rdf:about="http://hki.uni-koeln.de/staff/wieners" foaf:name="Jan Wieners"/> <uni:Professor rdf:about="http://hki.uni-koeln.de/staff/thaller" foaf:name="Manfred Thaller"/> <uni:Uebung rdf:about="http://hki.uni-koeln.de/courses/42" dc:title="Programmierpraktikum C++"> <uni:wirdGehaltenVon rdf:resource="http://hki.uni-koeln.de/staff/oliveira"/> </uni:Uebung>
<rdfs:Class rdf:about="http://example.org/uni-vokabular#Dozent"/>
<rdfs:Class rdf:about="http://example.org/uni-vokabular#Professor"> <rdfs:subClassOf rdf:resource="http://example.org/uni-vokabular#Dozent"/> </rdfs:Class> </rdf:RDF>
• Aufgabe: Finde alle Dozenten
• Antwort: „Jan Wieners“ & „Manfred Thaller“
Properties• Spezieller Typ: rdf:Property
<rdf:Property rdf:about="http://example.org/uni-vokabular#teilnehmer"/>
• Spezielle Property: rdfs:subPropertyOf
<rdf:Property rdf:about="&uni;#wirdGehaltenVon"> <rdfs:subPropertyOf rdf:resource="&uni;#teilnehmer"/></rdf:Property>
PropertiesDomain & Range
• spezielle Properties einer Property.
• rdfs:domain (=Domäne)
• „Jede Ressource, die diese Property besitzt ist vom Typ ...“
• rdfs:range (=Wertebereich)
• Jede Ressource, auf die diese Property verweist ist vom Typ ...“
<rdf:Property rdf:about="&uni;#wirdGehaltenVon"> <rdfs:domain rdf:resource="&uni;#Veranstaltung"/> <rdfs:range rdf:resource="&uni;#Dozent"/></rdf:Property>
Semantik in RDF<?xml version="1.0" encoding="UTF-8"?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:uni="http://example.org/uni-vokabular#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:dc="http://purl.org/dc/elements/1.1/"> <uni:Dozent rdf:about="http://hki.uni-koeln.de/staff/wieners" foaf:name="Jan Wieners"/> <uni:Professor rdf:about="http://hki.uni-koeln.de/staff/thaller" foaf:name="Manfred Thaller"/> <uni:Uebung rdf:about="http://hki.uni-koeln.de/courses/42" dc:title="Programmierpraktikum C++"> <uni:wirdGehaltenVon rdf:resource="http://hki.uni-koeln.de/staff/oliveira"/> </uni:Uebung>
<rdfs:Class rdf:about="http://example.org/uni-vokabular#Dozent"/>
<rdfs:Class rdf:about="http://example.org/uni-vokabular#Professor"> <rdfs:subClassOf rdf:resource="http://example.org/uni-vokabular#Dozent"/> </rdfs:Class>
<rdf:Property rdf:about="http://example.org/uni-vokabular#wirdGehaltenVon"> <rdfs:range rdf:resource="http://example.org/uni-vokabular#Dozent"/> </rdf:Property> </rdf:RDF>
• Aufgabe: Finde alle Dozenten
• Antwort: „Jan Wieners“, „Manfred Thaller“ & „Daniel de Oliveira“
Dozent
Professor
Veranstaltung
teilnehmer
wirdGehaltenVon
Person
Proseminar
name
Literaldomain
range
domain range
domain range
subClassOf
subClassOfsubClassOf
subPropertyOf
Software-technologie I
Manfred Thaller
wirdGehaltenVon
type typeRDFS
RDF
Die Ebenen von RDF und RDFS
Klassen
Instanzen
Aufgaben
Aufgabe 1
• Gegeben sind die folgenden Datenbanktabellen. Erstellen Sie für diese Daten ein RDF-Schema in RDF/XML.
• Das Schema soll mindestens unterscheiden zwischen „einfachen Dozenten“ und Professoren und zwischen Proseminaren, Übungen und Hauptseminaren.
• Bilden Sie den Sachverhalt ab, dass Hauptseminare nur von Professoren gehalten werden können.
Tabelle 1Veranstaltungen
id titel tag uhrzeit art dozent_id
1Projektplanung für
Softwareprojekte: KLIPS 2.0
Donnerstag 16:00 Hauptseminar 1
2 Softwaretechnologie I Dienstag 10:00 Proseminar 1
3 Basisinformations-technologie I Mittwoch 10:00 Proseminar 2
4 Semantic Technologies Mittwoch 12:00 Übung 3
5 Programmierpraktikum Montag 17:45 Übung 4
Tabelle 2Dozenten
id vorname nachname titel eMail
1 Manfred Thaller Prof. Dr. [email protected]
2 Jan Gerrit Wieners M.A. [email protected]
3 Sebastian Cuy M.A. [email protected]
4 Daniel de Oliveira M.A. [email protected]
Aufgabe 2
• Erstellen Sie aus den Daten in den Tabellen einen RDF-Graphen, der sich auf die Typen und Eigenschaften des Schemas aus Aufgabe 1 bezieht und serialisieren Sie diesen in RDF/XML.