SEMANTIC WEB Technologien: Einfache Ontologien in RDF und RDF Schema Igor Shchetinin Otto-von-Guericke-Universitaet Magdeburg, Fakultaet fuer Informatik, 39016 Magdeburg Zusammenfassung. Das World Wide Web bietet Zugang zu global verteilten Daten, Metadaten oder strukturierte Daten ueber Daten, die Verbesserung der Erkennung und Zugang zu solchen Informationen. Die vorliegende Arbeit befasst sich mit der Erklaerung von Resource Description Framework (RDF). RDF ist die Sprache mit demmaschinenlesbaren Darstellungsformat fuer die Entwicklung des Semantic Web und fuer die Beschreibung strukturierter Informationen.Es ist eine Infrastruktur um die Kodierung, den Austausch und die Wiederverwendung von strukturierten Metadaten zu ermoeglichen. 1 Einleitungin RDF Resource Description Framework wurde unter der Beguenstigung des World Wide Web Consortium (W3C) entwickelt. RDF definiert die Semantik nicht fuer jede Gruppe Ressourcenbeschreibung und macht es moeglich, die Metadaten-Elemente nach Bedarf zu bestimmen. RDF verwendet XML (Extensible Markup Language) als eine gemeinsame Syntax fuer den Austausch und die Verarbeitung der Metadaten. Die Syntax von XML ist eine Untergruppe der internationalen Standard-Textverarbeitungs SGML (Standard Generalized Markup Language (SGML)), die speziell fuer die Verwendung im Internet entwickelt ist. XML bietet Herstellerunabhaengigkeit, Benutzererweiterbarkeit,Pruefung von Menschlesbarkeit, und die Faehigkeitkomplexe Strukturen darzustellen. Ausnutzung derEigenschaften vonXML,RDFgibteine Struktur, dieeine eindeutigeAusdruckSemantikbietetund gewaehrleistetkonsistenteKodierung, Austausch und Rechnerverarbeitung vonstandardisiertenMetadaten. 2 Struktur von RDF Das RDF-Dokument wird durch gerichteten Graph beschrieben, in dem Menge der Knoten von gerichteten Kanten verbunden werden. Die Knoten und Kanten haben eigene Bezeichnungen (Abb.1). Abb.1 Beispiel von RDF-Graph Man kann fragen: „Warum braucht man RDF Graphen?“. Erster Grund dafuer ist, dass RDF zur Darstellung von Beziehungen zwischen Ressourcen etwickelt wurde. Die Quelle von Abb.1 sind aus dem Buch „Seamntic Web“ vom Verlag „Springer“. So kann man sehen, dass „Semantic Web“ in „Springer“ erscheinen laesst. Da Beziehungen als Informationgrundlage in RDF stehen, passen Graphen fuer ihre Darstellung besser als z.B. hierarchischen Baumstruktur, die im XML-Format benutzt wird. RDF ist alsBeschreibungssprache fuer Daten und Information im WWW vorgesehen, die meistens dezentral verwaltet, gespeichert werden. Deswegen als zweiter Grund sind Graphen fuer Komposition dezentraler Information. Wie es “Die Knoten und Kanten haben eigene Bezeichnern” im ersten Absatz gesagt wurde, setzt RDF URIs (Uniform Resource Identifier) fuer Bezeichnung von Ressourcen ein.URIs ist eine Verallgemeinerung von URLs (Uniform Resource Locators), die als Web-Addressen dienen, um Online-Dokumente zuzugreiffen.Auf Abb.1 kann man sehen, dass Knoten und Kanten mitURIs ueberschrieben wurden, um sie bestimmt zu beschreiben. Aber diese Regel gilt nicht fuer Datenwerte. Abb.2 RDF-Graph mit Literalen In RDF wird der Datenwert durch Literal dargestellt. Sie dienen als reserviertesVerzeichnis fuer RDF-Ressourcen von praezisen Datentypen. Auf Abb.2 werden ungetypteLiterale gezeigt, sie stehenin der rechteckigen Einfassung, um mit URI-Bezeichnern in den Ovalen zu unterscheiden. Eine ihre wichtige Eigenschaft ist, dass sie nicht als der Ausgangspunkt von Kanten im RDF-Graph sein duerfen, also man kann keine direkte Aussage ueber Literale machen. 3 Syntax von RDF Graphen, in denen Kanten und Knoten mehr z.B. als Tausend sind, sind kompliziert fuer dasmenschliche Verstaendnis. Deswegen basiert RDF auf der Ideeder Verwendung einerspeziellen Formvon Anweisungen, mit denen man ein Objektbeschreibt. Im Beispiel von Abb.1 sieht man den Ausgangspunkt „http://example.org/SemanticWeb“, Auszeichnunghttp://example.org/VerlegtBei und Endpunkt bei„http://springer.com/Verlag“. Diese drei Ressourcen werden als Subjekt (subject), Praedikat (predicate), Objekt (objekt) bezeichnet. Solche einfache Graphen heissen RDF-Tripel „Subjekt – Praedikat – Objekt“. Um Tripelsyntaktisch darzustellen, wurde die Umsetzung „Notation 3“ (N3) im Jahr 1998 vorgestellt. Da N3 kompliziert war, hat die RDF-Recommedation von 2004 den weniger komplizierten Syntax “N-Triples”, welcher ein Teil von N3 ist, empfohlen. Spaeter wurde N-Tripleserweitert, und heute nutzt man als RDF-Syntax Turtle, die praktische Kurzschreibweisen vergibt. Abb.3 Turtle-Syntax In Abb.3 kann man die direkte UEbersetzung des RDF-Graphes (aus Abb.2) in Tripel sehen. URIs sind in spitzen Klammern, Literale sind in Anfuehrungszeichen eingefasst. Jede Aussage endet mit dem Punkt. Genauso wie im XML ist es moeglich bei Turtle URIs abzukuerzen. Mit Hilfe von der Form „Praefix:“ (Abb.4) duerfen URIs nicht mehr in spitzen Klammern eingeschlossen werden. Wahl derPraefixes ist unabhaengig vom dargestellten Namensraum. Solche Abkuerzungen sollen leicht verstaendlich sein. Abb.4 Abgekuerzte Turtle-Syntax Es kann sein, dass eine RDF-Darstellung viele Tripel hat, die sich auf dasselbe Subjekt oder Subjekt und Praedikat beziehen (Bsp. Abb.2). Dazu hat Turtle auch Abkuerzung, die auf Abb.5 vorgestellt ist. In der ersten Zeile beendet das Semikolon das Tripel und zeigt parallel, dass Subjekt „ex: SemanticWeb“ als Subjekt fuer das naechste Tripel ist. Abb.5 Weitere Abkuerzung von Turtle-Syntax 3.1 XML – Serialisierung von RDF Abb.6 XML – Darstellung RDF-Darstellung mithilfe des Turtles ist gut fuer Menschenlesen, -verstehen. XML – Serialisierung von RDF ist noetigfuerMaschienen, um zu lesen und zu verstehen. Weil XML mithilfe der Baeume – der hierarchischer Aufbau dargestellt ist, muss die Implementierung der RDF-Tripl auch hierarchisch aufgebaut werden. Das Muster aus Abb.6 zeigt den RDF-Graph aus Abb.1 in XML. Wie man sehen kann, fangen XML-Version und –Kodierung mit einem Knoten des Typs rdf:RDF. Das wird als Wurzel von dem XML-Dokument fuer RDF verwendet, Namensraeume werden durch ex: und rdf:(man kann anstatt Abkuerzungrdf: beliebig andere Abkuerzungen nutzen) deklariert. Subjekt und Objekt sind durch das Element rdf:Description vorgestellt. Element ex:VerlegtBei stellt das Praedikat des Tripels dar. Wenn es viele Tripel gibt, darf man jedes durch eigenes Element rdf:Description beschreiben, diese Elemente koennen sich auf gleiche URI beziehen. Es ist nicht prinzipiell wichtig, in welcher Reihenfolge Tripel stehen. Es ist erlaubt Elemente von rdf:Description zu schachteln. Abb.7 zeigt Darstellung von RDF-Graph aus Abb.2. Abb.7 XML – Darstellung mit Literalen In dieser XML-Beschreibung sind Literale als Inhalte von Praedikat-Element dargestellt. Naechste Abb.8 ist eine Abkuerzung von der Schreibweise aus Abb.7, aber es ist nur fuerLiteralen erlaubt. Objekte, die durch URIs referenziert sind,duerfen so nicht kodiert werden, da sie als blosse Zeichenkette aussehen werden. Das Element ex:VerlegtBei enthaltet in sich das Attribut rdf:resource. Es gibt an, dass es kein untergeordnetes Element vom Typ rdf:Description mehr braucht. Daraus folgt, dass ex:VerlegBei keinen inhalt hat und als selbstschliessendes Tag ist.Literaleex:Name, ex:Titel werden als Attribut dargestellt und man kann diese Beschreibung mit einem selbstschliessendem Tag vorstellen. Abb.8 Abkuerzung der XML – Darstellung mit Literalen 1.1 Datentypen in RDF In den vorherigen Kapiteln hat man die Darstellung der Datenwerte in Form von Literalen, die als ungetypteLiteralen waren, angesehen. Es ist moeglich sie in RDF mit Datentypen, die durch URIs identifiziert werden, darzustellen. Die Verwendung von URIs dazu ist sinnvoll, da Programme am meisten URIs erkennen und unterstuetzen, aber diese Dartellung ist frei waehlbar. In Abb.9 wird RDF-Graph mit Datentypinformation gegeben, wo Wertebezeichner von Literalen in Anfuehrungszeichengeschlossen und durch “^^” mit Datentyp-URI getrennt ist.Vorgesltellte Datentypen sind “String” und “Date”. Getypte Literale werden in RDF genauso wie ungetypteLiterale als einzelne Elemente betrachtet. Abb.9 Darstellung von RDF-Graph mit getypten Literalen Abb.10 zeigt Darstellung von Abb.9 in der Turtle-Syntax, wo man Datentyp-URIs mit namensraeumenabkuerzen kann. Abb.10 Turtle-Syntax fuer RDF-Graph mit getypten Literalen In Abb.11 ist XML-Implementierung von RDF-Graph aus Abb.9. Um getypte Literaly in XML zu beschreiben, wird spezielles Attribut rdf:datatype eingesetzt. Abb.11 XML-Implementierung fuer RDF-Graph mit getypten Literalen ImRDF-Dokument ist es zulaessig XML-Fragmente als Wertebezeichner anzuwenden. Dafuer nutzt man eingebauten Datentyp rdf:XMLLiteral. Die Aussage “rdf:parseType=”Literal” ” normalisiert XML-Fragment und erzeugt ein Literal des Typs rdf:XMLLiteral(Abb.12). Abb.12Beispielfuerrdf:XMLLiteral 3.2 MehrwertigeBeziehungen Bisher wurden einfahe Beziehungen zwischen zwei Ressourcen und ihre Graphen vorgestellt. In RDF koennen Beziehungen zwischen mehr als zwei Ressourcen kodiert werden. Als Beispiel ist ein Rezept von „Chutney“, in dem die Zutat aus 450g. gruene Mango und 1TL Cayennepfeffer besteht. Auf Abb.13 kann Darstellung von Rezept anschauen. Abb.13 Beispiel fuerChutneyrezept Diese beidenIpmplementierungen sind nicht zulaessig. 1. passt nicht, da Zutaten und deren Mengen als blosse Zeichenkette dargestellt wurden. Bei 2.Fehlt die Beziehung zwischen Rezept, Zutat und Mengeangabe z.B. anstatt 1TL Cayennepfeffer 450g oder 1TL Mango anstatt 450g. In diesem Fall geht es um dreiwertige Beziehungen zwischen Rezept, Zutat und Mengeangaben. Um das zu loesen, soll man Hilfsknoten in den Graph einfueheren. Als Bsp. wird solche Knoten ex:ChutneyZutat1 genannt (Abb.14zeigt Graph und entsprechende Beschreibung). Dieser Knoten dient als Verbindung fuerRezept, Zutat und Mengeangabe. Fuer solche Bestandteile (nicht nur wie bei diesem Bsp.) kann Abb.14 Hilfsknoten bei mehrwertigen Beziehungen man zusaetzliche Hilfsknoten nutzen. Auf Abb.14 kann man Praedikatrdf:value sehen, das ist ein Hinweis, welcher Wert in der Beziehung als Hauptwert ist. Hilfsknoten verweisen auf Helfer-Ressourcen, die mithilfe spezieller URI bezeichnet sind. RDF verfuegtueberMoeglichkeit, Knoten ohne Bezeichner zu erzeugen, sie heissen leere Knoten (engl. Blank NodesoderBnodes). Leere Knoten koennen ohne URI sein und halten im RDF-Graph keine zusaetzliche Information. Da sie als Subjekt oder Objekt in vielen Tripeln auftauchen koennen und verschidene Tripel sich auf denselben leeren Knoten beziehen koennen, muessen sie durch (Knoten-)IDs rdf:nodeID bezeichnet werden. Abb.15 stellt XMLImplementierungund Turtle-Syntax fuerBnodes dar. Abb.15 XML-Implementierung und Turtle-Syntax fuerBnodes 3.3 Listen Um eine Menge gleichgestellter Objekte, z.B. Menge von Autoren mit einem Buch, mit einem Subjekt zu verknuepfen, bietet RDF listenaenhliche Struktur zu generieren. Dazu gibt es zwei Arten von Listen: Container (offene List) und Collection (geschlossene List). Idee von Container ist aehnlich mit leeren Knoten. Abb.16 zeigt Darstellung von Beispiel der List der Autoren von einem Buch. Abb.16Graph der offenen Liste und seine XML-Implementierung Graph auf Abb.16 hat viel Knoten Buch, Autoren, leeren Hilfsknoten der Liste und einen zusaetzlichen Knoten rdf:Seq.Mithilfe dieses Knotens wird der Typ der Liste bezeichnet, es geht aus Verwendug des Praedikatsrdf:type, das reserviert ist, um Subjekten Klassenbezeichner zuzuweisen. Um Reihenfolge der Listenelemente darzustellen, werden automatisch nummerierte Praediketerdf:_1 bis rdf:_n verwendet. Bei der XML-Implementierung nutzt man fuer Liste denTyp rdf:Seqanstatt rdf:Descriptionund den Typ rdf:li, dieser Typ zeigt, dass Element z.B. Hitzler ein Element der Autorenlist ist. RDF erhaeltet folgende Arten von Container zur Verfuegung; rdf:Seq – ist geordnete Liste von gruppierten Objekten; rdf:Bag – ist ungeordnete Menge von gruppierten Objekten; rdf:Alt – sind gruppierte Objekte als Menge alternativer Moeglichkeiten. Man kann Container durch Hinzufuegen weiterer Tripel vergroessern, aber es ist nicht klar, ob diese Liste vollstaendig und abgeschlossen ist. Hilfe dafuer in RDF ist Collections als Mittel fuer geschlossene Listen (Abb.17). Abb.17Graph der geschlossenen Liste Graph in Abb.16 stellt eine verkettete Liste dar, die sich von Container unterscheidet. Grund dazu liegt darin, dass man nicht-leere Liste in zwei Teile: Listenkopf (das erste Element der Liste) und Restliste zerlegen kann. Es ist moeglich eine geschlossene Liste eindeutig durch Angabe von Listenkopf und Restliste umzuschreiben. Um das zu schaffen, werden Praedikaterdf:first und rdf:rest verwendet. In diesem Fall bringt URI keinen Sinn, da Liste durch Kopf und Rest beschrieben werden, deswegen sind vier nichtleeren (Rest-) Listen aus Bsp. in Abb.16 durch leere Knoten vorgestellt. Leere Liste, die nicht in Kopf und Rest zerlegt wurden, werden in RDF durch URI rdf:nilrepraesentiert. Abb.18 zeigt XML-Implementierung und Turtle-Syntax fuer Collection. Bei XMLImplementierung steht das Attribut rdf:parseType,dieses malmit Wert Collection, das ist notwendig, um geschlossene Liste zu definieren. Jeder Objekt von Tripel, das als Objekt der Liste ist, wird durch rdf:description vorgestellt. Abb.18 XML-Implementierung und Turtle-Syntax fuer Collection 4 Ontologien in RDF Schema RDF Schema (RDFS) ist ein Bestandteil der RDF, der von W3C empfohlen wurde. RDFS gibt terminologisches Wissen oder Schemawissen ueber die verwendeten Begriffe an und wird durch rdfs: gemerkt. Jedes RDFSDokumentisteinsyntaktischrichtiges RDF-Dokument. 4.1 Klassen In RDFS steht Begriff “Klasse” fuer eine Menge der Ressourcen (Entitaeten der realen Welt). URIs von Klassen nennt man Klassenbezeichner. Praedikatrdf:typ(wie bei Listen) repraesentiert, dass Ressource als Instanz einer Klasse ist, also Klassenzugehoerigkeit. z.B.zeigt man, dass Ressource “Semantic Web” ein Lehrbuch ist (also: bezieht sich auf KlassLehrbuecher): ex:SemanticWebrdf:typeex:Lehrbuch. Um eine Klasse zu definieren, wird das Praedikatrdfs:Class verwendet. So kann man allgemeine Klassen definieren, z.B. Buch ist allgemeine Klassefuer alle Buecher: ex:Buchrdf:typerdfs:Class. Aussage “rdfs:Classrdf:typerdfs:Class” zeigt, dass eine Klasse aller Klasse selbst eine Klasse ist und in sich selbst als Element enthaltet ist. In RDFS gibt es wietere Reihe von Klassen: rdfs:Resource steht fuer Klasse aller Ressourcen; rdf:Property ist fuer Klasse aller Properties, die Beziehungen darstellen; rdfs:Literal steht fuerdie Klasse aller Literalwerte; rdfs:Containersteht als Bezeichner fuer offene Listen (rdf:Bag, rdf:Seq, rdf:Alt); rdfs:labelundrdfs:commentsind noetig, um zusaetzliche Information zu ergaenzen; rdf:Statementist als Bezeichner der Klasse vonreifizierten Tripeln bzw. Aussagen usw. Klasse in RDFS haben Unterklassen. z.B. Man sucht man nach dem Buch “Semantic Web”, das sich auf Klass Lehrbuch bezieht, in BuechernFuer Menschen ist es klar, dass jedes Lehrbuch ein Buch ist, aber Maschinen brauchen tiefe Definition, sonst man findet Lehrbuch in Buecher nicht. Mithilfe rdfs:subClassOf ist moeglich Unterklasse bestimmen: ex:Lehrbuchrdfs:subClassOfex:Buch. Jetzt kann man Lehrbuch “SemanticWeb” in Buecher suchen. Unterklassenbeziehung ist transitiv: ex:Lehrbuch ist Unterklasse von ex:Buch, ex:Buch ist Unterklasse von ex:Printmedium, daraus folgt, dass ex:Lehrbuch ist unterklasse von ex:Printmedium. 4.2 Properties Properties stellen Relationen zwischen Ressourcen dar. Aus matematischer Sicht ist Relation eine Menge der verknuepften Paare. Als Beispiel Property: ex:istVerheiratetMit ist die Menge aller Ehepaare. Auf Abb.1 ist ex:verlegtBei Property zwischen Buch und Verlag. Durch rdf:Property werden sie defeniert: ex:verlegtBeirdf:typerdf:Property. Genauso wie Klassen haben PropertiesUnterProperties, die durch rdf:subPropertyOf bestimmt werden. Bei Property muessenEinschraenkungen eingestellt werden, die man mithilfe rdfs:domain (bezieht sich auf Subjekt) und rdfs:range (bezieht sich auf Objekt). Folgende Beispiel zeigt, wozu es notwendig ist: ex:Felixex:istVerheiratetMitrdf:OVGU. Ein Mann Felix ist mit Uni OVGU verheiretet, was nicht sein kann. Dazu soll man Enschraenkungen angeben: ex: istVerheiratetMitrdfs:domainex:Person. ex: istVerheiratetMitrdfs:rangeex:Person. So zeigen wir, dass sich Property ex: istVerheiratetMitnur auf Personen (also Menschen) bezieht. rdfs:member ist eine “Kapsel”fuer andere Property. z.B. Wir moechtenpruefen, ob Wolfgang Amadeus Mozart in der Liste von Autoren des Buchs “Semantik Web” steht. Wir muessen dazu viel Tripel anschauen: ex: Mozart ex: Mozart rdf:_1 rdf:_2 und weiter... ex:SemWebAutoren. ex:SemWebAutoren. Mit rdfs:memberkoennen wir das nicht machen, alle diese Properties sind in “Kapseln”, wo sie geprueft werden: ex:Mozartrdfs:memberex:SemWebAutoren. 4.3 Reifikation Reifikation ist die Aussage ueber Aussage (Wort – „dass“ ist Indikator dazu). Bsp.: Polizist vermutet, dass der Student den Professor ermordet hat. Solche Aussagen sind problematisch zu modellieren. ex:polizistex:vermutet "Der Student hat den Prof. ermordet.“ So kann man nicht implementieren, da Literal nur als Objekt von Tripeln verwendet werdendarf. ex:polizistex:vermutetex:derStudentHatDenProfErmordet. In diesem Fall faellt die innere Struktur der dass-Aussage aus. Nur „Dass“-Aussage kann in RDF leicht modelliert werden: ex:Studentex:hatErmordetex:Prof. Um dieses Problem zu loesen, machen wir wie in Abschnitt 3.3, ein Hilfsknoten ex:theorieeinzufuehren (Abb.19). Abb.19Graph-Darstellung fuerReifikation Mit der ex:theoriemuessen wir vier Tripel aufbauen: ex:polizistex:vermutetex:theorie. ex: theorieex:subjektex:Student. ex: theorieex:praedicateex:hatErmordet. ex: theorieex:objektex:Prof. Schlussfolgerung In dieser Arbeit werden die Sprache RDF und seine Erweiterung RDFS beschrieben, dieauf Graphstrukturenbasieren. Grundelemente von dieser Struktur sind Tripel. Als die Kennzeichnung von Knoten und Kanten bei diesen Tripeln dient URIs. RDF ermoeglicht Grundlegende Aussagen ueber die Relationen zwischen Individuen zu realisieren. RDFS dient, um terminologisches Wissen in Form von Klassen, Propertie und deren Zusammenhaengen zu spezifizieren. Literaturverzeichnis 1. P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen.ErsteAuflage. 2. XML Magazin & WEB SERVICES: Web der Zukunft. Online verfuegbar unter http://www.fgh.rwth-aachen.de/verein/publikat/veroeff/WEBderZunkunft.pdf 3. F.Tatarsky,A.Knyazeva (2009): Lernprogramm „Einfuehrung in die TechnologieWorld Wide Web“ – Kapitel 5.Semantic Web. Online verfuegbar unter http://fet.aics.ru/metod/it/www/ch05.html Abb.1: S.36 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.2: S.39 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.3: S.41 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.4: S.41 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.5: S.42 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.6: S.43 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.7: S.44 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.8: S.44 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.9: S.50 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.10: S.51 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.11: S.51 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.12: S.52 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.13: S.55 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.14: S.56 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.15: S.57, 58 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.16: S.60 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.17: S.62 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen. Abb.18: S.62, 63 – P.Hitzler, M.Kroetzsch, S.Rudolf, Y.Sure (2007): Semantic Web Grundlagen.