In der heutigen Übung geht es vor allem darum, dass sie mit dem Jena Framework vertraut werden. Anhand von Friend-Of-A-Friend (FOAF) Profilen soll die Funktionsweise der Bibliothek gelernt werden. FOAF ist ein Internet-Standard, um Menschen und ihre Beziehungen untereinander in einer maschinen-verständlichen Form zu beschreiben.
Ziel der Übung soll es sein, einen Crawler zu schreiben, der sich von einem Startpunkt aus durchs Netz angelt und weitere Informationen findet.
In den letzten beiden Einheiten haben wir uns mit den “Sprachen” RDF und RDF Schema beschäftigt.
Während uns RDF ein universales Datenmodell zur Beschreibung von Informationen zur Verfügung stellt, bietet uns RDFS ein Metavokabular zur Definition von Schemawissen an. Damit eröffnet uns RDFS die Möglichkeit zur Beschreibung eigener Vokabulare (terminologisches Wissen) und Beziehungen der Elemente des Vokabulars untereinander. Vokabulare bestehen aus Definitionen von Ressourcen-Typen (sogenannten Klassen) und Eigenschafts-Typen (Properties). Die von RDFS bereitgestellten Vokabeln ermöglichen uns etwa Hierarchien dieser Typen untereinander zu beschreiben. Die auf diese Weise erstellten Vokabulare ermöglichen uns erste Schlussfolgerungen. (Wie z.B. wenn ein Mann ein Untertyp von Mensch ist, und “Thomas” ein Mann, dann folgt das “Thomas” ein Mensch ist).
Während der letzten Vorlesungen, haben wir uns die Web Ontology Language OWL angesehen.
Dazu sind wir zunächst kurz auf den Begriff der Ontologie eingegangen und haben uns dann mit den Anforderungen an eine Ontologiesprache und warum RDF(S) nicht für alle Fälle ausreicht, beschäftigt.
Anschließend wurde die Version 1 der Sprache OWL vorgestellt. Dabei haben wir die drei Dialekte Light, DL und Full sowie ihre jeweiligen Einsatzgebiete behandelt und gesehen, dass diese in ansteigender Komplexität und Ausdrucksstärke aufeinander aufbauen.
Daraufhin haben wir uns die Details der Sprache näher angesehen. Es wurde besprochen aus welchen Bestandteilen OWL Ontologien bestehen, welche Konzepte (Klassen, Individuen sowie konkrete und abstrakte Rollen) , Sprachelemente (owl:Class, owl:Thing, …) und Kurzschreibweisen existieren sowie welche speziellen Beziehungen zwischen Klassen und Individuen bestehen bzw beschrieben werden können.
Im Anschluss daran wurde erklärt, wie wir durch Beschränkungen auf Rollen (z.B. alle “hatFreund” Beziehungen besitzen “Frau” als Klasse des Subjekts) komplexe Klassen erstellen können und wie sich diese sich durch Intersektion, Vereinigung oder Komplementbildung zu weiteren komplexen Klassen vereinen lassen.
Wir haben uns mit der Klassifizierung von Rollen anhand ihrer Eigenschaften (invers zueinander, transitiv, symmetrisch, (invers) funktional) sowie mit der Bedeutung der Festlegung und den Gefahren von domain und range für diese Rollen beschäftigt.
Nach einer erneuten näheren Betrachtung der Dialekte, und der OWL zur Grunde liegenden Open Word Assumption haben wir uns mit Inferenz, dem “automatischen Schließen aus implizitem Wissen” beschäftigt und dabei die Funktionsweise und Probleme des Tableauverfahrens betrachtet.
Der nächste Abschnitt hat sich mit der neuen Version 2 von OWL beschäftigt. Dabei haben wir gelernt, das OWL 2 auf einer SROIQ Beschreibungslogik fusst und damit der SHOIN Logik von OWL 1 überlegen ist.Mit qualifizierten Zahlenrestriktionen, dem Konzept SELF sowie der Rolleninklusion haben wir die wichtigsten Elemente der neuen Version behandelt. Abschließend wurden Themen wie punning und die Aufgliederung des Light Dialekts in die Profile EL, QL und RL besprochen.
[]Während der letzten Vorlesungen, haben wir uns die Web Ontology Language OWL angesehen.
Dazu sind wir zunächst kurz auf den Begriff der Ontologie eingegangen und haben uns dann mit den Anforderungen an eine Ontologiesprache und warum RDF(S) nicht für alle Fälle ausreicht, beschäftigt.
Anschließend wurde die Version 1 der Sprache OWL vorgestellt. Dabei haben wir die drei Dialekte Light, DL und Full sowie ihre jeweiligen Einsatzgebiete behandelt und gesehen, dass diese in ansteigender Komplexität und Ausdrucksstärke aufeinander aufbauen.
Daraufhin haben wir uns die Details der Sprache näher angesehen. Es wurde besprochen aus welchen Bestandteilen OWL Ontologien bestehen, welche Konzepte (Klassen, Individuen sowie konkrete und abstrakte Rollen) , Sprachelemente (owl:Class, owl:Thing, …) und Kurzschreibweisen existieren sowie welche speziellen Beziehungen zwischen Klassen und Individuen bestehen bzw beschrieben werden können.
Im Anschluss daran wurde erklärt, wie wir durch Beschränkungen auf Rollen (z.B. alle “hatFreund” Beziehungen besitzen “Frau” als Klasse des Subjekts) als komplexe Klassen erstellen können und wie sich diese sich durch Intersektion, Vereinigung oder Komplementbildung zu weiteren komplexen Klassen vereinen lassen.
Wir haben uns mit der Klassifizierung von Rollen anhand ihrer Eigenschaften (invers zueinander, transitiv, symmetrisch, (invers) funktional) sowie mit der Bedeutung der Festlegung und den Gefahren von domain und range für diese Rollen beschäftigt.
Nach einer erneuten näheren Betrachtung der Dialekte, und der OWL zur Grunde liegenden Open Word Assumption haben wir uns mit Inferenz, dem “automatischen Schließen aus implizitem Wissen” beschäftigt und dabei die Funktionsweise und Probleme des Tableauverfahrens betrachtet.
Der nächste Abschnitt hat sich mit der neuen Version 2 von OWL beschäftigt. Dabei haben wir betrachtet, das OWL 2 auf einer SROIQ Beschreibungslogik fusst und damit der SHOIN Logik von OWL 1 überlegen ist.Mit qualifizierten Zahlenrestriktionen, dem Konzept SELF sowie der Rolleninklusion haben wir die wichtigsten Elemente der neuen Version behandelt. Abschließend wurden Themen wie punning und die Aufgliederung des Light Dialekts in die Profile EL, QL und RL besprochen.
In der heutigen Übung soll einen kleine Applikation zur Kontaktverwaltung in Java mit Hilfe des Jena Frameworks, welches in der letzten Vorlesung vorgestellt wurde, erstellt werden.
Ich habe hierfür ein kleines Rahmenprogramm erstellt, dass uns als Ausgangspunkt dienen soll und bereits die Oberfläche implementiert. Sie müssen also nur noch die für den Datenzugriff wichtigen Codestellen ausfüllen. Entsprechende Stellen sind im Co
de mit TODO markiert.
Inhalte der Übung sind:
Erstellen einer Konstantenklasse mit dem Jena schemagen Werkzeug
Laden des Modells von einer Datei
Speichern der Triple in einer Datei
Erstellen von Triplen
Finden und Lesen von Triplen
Löschen von Triplen
Als Vokabular für die Übungsapplikation verwenden wir einen Teil des FOAF-Vokabulars, den wir mit eigenen Properties für die foaf:Person angereichert haben (siehe Grafik auf der rechten Seite).
Wenn Sie möchten, können Sie das mitgelieferte Vokabular oder die Benutzerschnittstelle gerne um eigene Elemente erweitern. Focus der Übung liegt aber ganz klar darauf, das Jena-Framework und seine grundlegende Funktionalität kennen zu lernen.
Bevor wir uns nun den weiteren Technologien und Sprachen des Semantic Web zuwenden, beschäftigen wir uns mit den formalen Grundlagen des Semantic Web.
Was steckt für eine Bedeutung in RDF und RDFS und ihren Vokabularen? Wie können wir dies mathematisch korrekt formulieren?
Dies ist wichtig, damit der Standard nicht beliebig interpretiert werden kann (was leider schon des öfteren vorgekommen ist).
Hierzu werden wir uns zunächst ansehen, wie wir die Sätze (Triple) und Elemente des RDF(S) Vokabulars (URIs, B-Nodes, Literale) in ein theoretisches Modell überführen, um anhand dessen dann die Semantik genau auszuleuchten.
Da dieses Verfahren für die Umsetzung auf Maschinen allerdings viel zu komplex ist, werden wir uns anschließend damit auseinandersetzen, wie wir rein auf der Basis der Syntax Schlüsse ziehen können.
Abschließend werden wir noch sehen, das wir mit RDFS nicht jegliche Semantik ausdrücken können (Negation ist beispielsweise nicht möglich).