OWL Web Ontology Language

Größe: px
Ab Seite anzeigen:

Download "OWL Web Ontology Language"

Transkript

1 OWL Web Ontology Language Hauptseminar Ontologien in Informatik und Linguistik SS 2007 Bianca Selzam

2 Gliederung 1. Einleitung 2. Resource Description Framework (RDF) 3. Resource Description Framework Schema (RDFS) 4. Web Ontology Language (OWL) a) OWL Lite b) OWL DL c) OWL Full 2

3 1. Einleitung OWL (Web Ontology Language) ist eine semantische Markup- Sprache für Ontologien (System von Konzepten und Relationen zwischen diesen Konzepten) und Semantische Netze OWL wurde entwickelt vom W3C (World Wide Web Consortium) OWL ist eine Erweiterung der Sprache RDF (Resource Description Framework) und abgeleitet von der DAML + OIL Web Ontology Language (DARPA Agent Markup Language + Ontology Inference Layer) 3

4 2. RDF RDF = Resource Description Framework Framework zur Repräsentation von Informationen im World Wide Web RDF ist lediglich die Spezifikation des Formats solcher Informationen Motivation: Speichern von Metadaten über Webseiten Automatische Verarbeitung von Daten im Web durch Software- Agenten Erstellen des Semantic Webs XML-basierte Erweiterbares URI (Uniform Resource Identifier)-basiertes Vokabular 4

5 2. RDF RDF = Resource Description Framework Ein RDF-Ausdruck ist ein gerichteter Graph mit Bezeichnungen. Ein RDF-Graph ist ein Tripel (S, P, O) bestehend aus: einer property P, die eine Relation beschreibt (wird auch predicate genannt). einem Wert S, der das Subjekt der Aussage darstellt einem Wert O, der das Objekt der Aussage darstellt. 5

6 3. RDFS RDF = Resource Description Framework Grenzen von RDF: Keine der Properties möglich Keine Zusammenhänge und Relationen zwischen den Properties und anderen Resourcen darstellbar Daher: Erweiterung von RDF zu RDFS (RDF Schema) RDFS = RDF Vocabulary Description Language Einführung neuer Klassen und Properties zur anderer Klassen und Properties Properties können ein Definitionsbereich (domain) und Wertebereich (range) zugewiesen werden 6

7 3. RDFS RDFS = Resource Description Framework Schema : 7

8 3. RDFS RDFS = Resource Description Framework Schema e für RDFS-Klassen: Name rdfs:literal rdfs:xmlliteral rdfs:class rdf:property rdfs:datatype Erklärung Menge der atomaren Werte, z. B. Strings Menge der XML-Literale Konzept einer Klasse Konzept einer Property Klasse der Datentypen 8

9 3. RDFS RDFS = Resource Description Framework Schema e für RDFS-Properties: Name Erklärung Domain Range rdf:type Zeigt Zugehörigkeit zu einer Klasse rdfs:resource rdfs:class rdfs:subclassof Zeigt Zugehörigkeit zu einer Klasse rdfs:class rdfs:class rdfs:subpropertyof Zeigt Spezialisierung einer Property rdf:property rdf:property rdfs:domain Domain-Klasse für einen Property-Typ rdf:property rdfs:class rdfs:range Range-Klasse für einen Property-Typ rdf:property rdfs:class 9

10 4. OWL RDFS = Resource Description Framework Schema Grenzen von RDFS: Keine disjunkten Klassen modellierbar Keine Schnittmengen von Klassen modellierbar Keine Kardinalitäten formulierbar Keine Charakteristika von Properties modellierbar (z. B. Transitivität, Symmetrie, ) Daher: Entwicklung von OWL OWL stellt weiteres Vokabular zur von Klassen und Properties zur Verfügung 10

11 4. OWL OWL besteht aus drei Untersprachen: OWL Lite OWL DL OWL Full OWL Lite OWL DL OWL Full 11

12 Aus RDFS übernommene Konstrukte: Class <owl:class rdf:id="..."/> Eine Klasse vereint eine Menge von Individuen mit bestimmten gemeinsamen Eigenschaften (Konzepte). Allgemeinste Oberklasse: Thing Speziellste Unterklasse: Nothing <owl:class rdf:id="person"/> 12

13 Aus RDFS übernommene Konstrukte: Property <owl:<objectproperty/datatypeproperty rdf:id="..."> ObjectProperty: Relation zwischen zwei Individuen DatatypeProperty: Relation zwischen einem Individuum und einem Datenwert <owl:objectproperty rdf:id="haschild"> <owl:datatypeproperty rdf:id="hasage"> 13

14 Aus RDFS übernommene Konstrukte: Individual <Klassenname rdf:id="..."> Ein Individuum ist eine Instanz einer Klasse. <Person rdf:id="elizabeth"> 14

15 Aus RDFS übernommene Konstrukte: subclassof <rdfs:subclassof rdf:resource="#..." /> Schafft eine Hierarchiebeziehung zwischen Klassen vom Typ Class. <owl:class rdf:id="woman"> <rdfs:subclassof rdf:resource="#person" /> </owl:class> 15

16 Aus RDFS übernommene Konstrukte: subpropertyof <rdfs:subpropertyof rdf:resource="#..." /> Schafft eine Hierarchiebeziehung zwischen Klassen vom Typ Property. <owl:objectproperty rdf:id="hassister"> <rdfs:subpropertyof rdf:resource="#hassibling" /> </ owl:objectproperty> 16

17 Aus RDFS übernommene Konstrukte: domain <rdfs:domain rdf:resource="#..."/> Schränkt den Definitionsbereich einer Property ein. <owl:objectproperty rdf:id="hashusband"> <rdfs:domain rdf:resource="#woman"/> <rdfs:range rdf:resource="#man"/> </owl:objectproperty> <owl:datatypeproperty rdf:id="hasage"> <rdfs:domain rdf:resource="#person" /> <rdfs:range rdf:resource="&xsd;positiveinteger"/> </ owl:datatypeproperty> 17

18 Aus RDFS übernommene Konstrukte: domain (ObjectProperty) domain (DatatypeProperty) 18

19 Aus RDFS übernommene Konstrukte: range <rdfs:range rdf:resource="#..."/> Schränkt den Wertebereich einer Property ein. <owl:objectproperty rdf:id="hashusband"> <rdfs:domain rdf:resource="#woman"/> <rdfs:range rdf:resource="#man"/> </owl:objectproperty> <owl:datatypeproperty rdf:id="hasage"> <rdfs:domain rdf:resource="#person" /> <rdfs:range rdf:resource="&xsd;positiveinteger"/> </ owl:datatypeproperty> 19

20 Aus RDFS übernommene Konstrukte: range (ObjectProperty) 20

21 Aus RDFS übernommene Konstrukte: range (DatatypeProperty) 21

22 Gleichheit und Ungleichheit: equivalentclass equivalentproperty <owl:equivalentclass rdf:resource="..."/> Beschreibt die Gleichheit (Synonymie) zweier Klassen. Sind zwei Klassen A und B äquivalent, sind auch alle Instanzen von A gleichzeitig Instanzen von B. <owl:class rdf:id= Granny"> <owl:equivalentclass rdf:resource= Grandmother"/> </ owl:class> <owl:equivalentproperty rdf:resource="..."/> Beschreibt die Gleichheit zweier Properties. <owl:objectproperty rdf:id="hassisterorbrother"> <rdfs:equivalentproperty rdf:resource="#hassibling" /> </ owl:objectproperty> 22

23 Gleichheit und Ungleichheit: sameas <owl:sameas rdf:resource="#..." /> Beschreibt die Gleichheit zweier Individuen. <Person rdf:id="queen"> <owl:sameas rdf:resource="#elizabeth" /> </Person> 23

24 Gleichheit und Ungleichheit: differentfrom <owl:differentfrom rdf:resource="#..."/> Beschreibt die Ungleichheit zweier Individuen. <Person rdf:id="elizabeth"> <owl:differentfrom rdf:resource="#diana" /> </Person> 24

25 Gleichheit und Ungleichheit: alldifferent <owl:alldifferent> <owl:distinctmembers rdf:parsetype="collection"> (<Klassenname rdf:about="#..." />)+ </owl:distinctmembers> </owl:alldifferent> Alle Individuen, die als distinctmembers aufgeführt werden, sind paarweise disjunkt. <owl:alldifferent> <owl:distinctmembers rdf:parsetype="collection"> <Person rdf:about="#elizabeth" /> <Person rdf:about="#diana" /> <Person rdf:about="#fergie" /> </owl:distinctmembers> </owl:alldifferent> 25

26 alldifferent 26

27 Spezielle Eigenschaften von Properties: inverseof <owl:inverseof rdf:resource="#..." /> Bezeichnet die inverse Property einer Property. P 1 sei die inverse Property zu P 2 dann ist die Domain von P 1 der Range von P 2 und umgekehrt. Sind die Individuen x und y durch P 1 verbunden, so verbindet P 2 wiederum y und x. P 1 (x, y) P 2 (y, x) <owl:objectproperty rdf:id="haschild"> <owl:inverseof rdf:resource="#hasparent" /> </ owl:objectproperty> 27

28 Spezielle Eigenschaften von Properties: TransitiveProperty <rdf:type rdf:resource="&owl;transitiveproperty" /> Deklariert eine Property als transitiv. Verbindet eine Property P sowohl die Individuen x und y als auch die Individuen y und z, so sind auch x und z durch P verbunden. P (x, y) P (y, z) P (x, z) Bemerkung: In OWL Lite und OWL DL können transitive Properties keine Beschränkung vom Typ maxcardinality = 1 haben! <owl:objectproperty rdf:id="hassibling"> <rdf:type rdf:resource="&owl;transitiveproperty" /> </ owl:objectproperty> 28

29 Spezielle Eigenschaften von Properties: SymmetricProperty <rdf:type rdf:resource="&owl;symmetricproperty" /> Deklariert eine Property als symmetrisch. Verbindet eine Property P die Individuen x und y, so sind auch y und x durch P verbunden. P (x, y) P (y, x) <owl:objectproperty rdf:id="hassibling"> <rdf:type rdf:resource="&owl;symmetricproperty" /> </ owl:objectproperty> 29

30 Spezielle Eigenschaften von Properties: FunctionalProperty <rdf:type rdf:resource="&owl;functionalproperty" /> Deklariert eine Property als funktional. Eine funktionale Property kann maximal ein Element aus dem Range als Wert annehmen. P (x, y) P (x, z) y = z <owl:objectproperty rdf:id="hasbirthmother"> <rdf:type rdf:resource="&owl;functionalproperty" /> </ owl:objectproperty> 30

31 Spezielle Eigenschaften von Properties: InverseFunctionalProperty <rdf:type rdf:resource="&owl;inversefunctionalproperty" /> Eine Property ist invers funktional, wenn ihre inverse Funktion funktional ist. P (y, x) P (z, x) y = z Bemerkung: In OWL Lite und OWL DL können nur ObjectProperties invers funktional sein, nicht aber DatatypeProperties! <owl:objectproperty rdf:id="isbirthmotherof"> <rdf:type rdf:resource="&owl;inversefunctionalproperty" /> <owl:inverseof rdf:resource="#hasbirthmother" /> </owl:objectproperty> 31

32 Einschränkungen von Properties: allvaluesfrom <owl:restriction> <owl:onproperty rdf:resource="#..." /> <owl:allvaluesfrom rdf:resource="#klassenname" /> </owl:restriction> Lokale Einschränkung des Wertebereichs der Property in einer bestimmten Klasse auf alle Individuen einer anderen Klasse. <owl:class rdf:id="motherofonlygirls"> <rdfs:subclassof rdf:resource="mother" /> <rdfs:subclassof> <owl:restriction> <owl:onproperty rdf:resource="#haschild" /> <owl:allvaluesfrom rdf:resource="#woman" /> </owl:restriction> </rdfs:subclassof> </owl:class> 32

33 allvaluesfrom 33

34 Einschränkungen von Properties: somevaluesfrom <owl:restriction> <owl:onproperty rdf:resource="#..." /> <owl:somevaluesfrom rdf:resource="#klassenname" /> </owl:restriction> Mindestens ein Element aus dem Wertebereich der Property muss aus einer bestimmten Klasse stammen. <owl:class rdf:id="motherofatleastonegirl"> <rdfs:subclassof rdf:resource="mother" /> <rdfs:subclassof> <owl:restriction> <owl:onproperty rdf:resource="#haschild" /> <owl:somevaluesfrom rdf:resource="#woman" /> </owl:restriction> </rdfs:subclassof> </owl:class> 34

35 somevaluesfrom 35

36 Zuweisen von Kardinalitäten: mincardinality <owl:restriction> <owl:onproperty rdf:resource="#..." /> <owl:mincardinality rdf:datatype="&xsd;nonnegativeinteger"> x </owl:mincardinality> </owl:restriction> Die Property muss mindestens x (0 oder 1) Elemente im Wertebereich zugewiesen bekommen. <owl:class rdf:id="mother"> <rdfs:subclassof rdf:resource="woman" /> <rdfs:subclassof><owl:restriction> <owl:onproperty rdf:resource="#haschild" /> <owl:mincardinality rdf:datatype="&xsd;nonnegativeinteger">1 </owl:mincardinality> </owl:restriction></rdfs:subclassof> </owl:class> 36

37 mincardinality 37

38 Zuweisen von Kardinalitäten: maxcardinality <owl:restriction> <owl:onproperty rdf:resource="#..." /> <owl:maxcardinality rdf:datatype="&xsd;nonnegativeinteger"> x </owl:maxcardinality> </owl:restriction> Die Property darf höchstens x (0 oder 1) Elemente im Wertebereich zugewiesen bekommen. <owl:class rdf:id="motherofsinglechild"> <rdfs:subclassof rdf:resource="mother" /> <rdfs:subclassof><owl:restriction> <owl:onproperty rdf:resource="#haschild" /> <owl:maxcardinality rdf:datatype="&xsd;nonnegativeinteger">1 </owl:maxcardinality> </owl:restriction></rdfs:subclassof> </owl:class> 38

39 maxcardinality 39

40 Zuweisen von Kardinalitäten: cardinality <owl:restriction> <owl:onproperty rdf:resource="#..." /> <owl:cardinality rdf:datatype="&xsd;nonnegativeinteger"> x </owl:cardinality> </owl:restriction> Die Property muss genau x (0 oder 1) Elemente im Wertebereich zugewiesen bekommen. <owl:class rdf:id="motherofthreekids"> <rdfs:subclassof rdf:resource="woman" /> <rdfs:subclassof><owl:restriction> <owl:onproperty rdf:resource="#haschild" /> <owl:cardinality rdf:datatype="&xsd;nonnegativeinteger">3 </owl:cardinality> </owl:restriction></rdfs:subclassof> </owl:class> 40

41 cardinality 41

42 Klassendefinition durch Schnittmengenbildung: intersectionof <owl:class rdf:id="..."> <owl:intersectionof rdf:parsetype="collection"> (<owl:class rdf:about="#..." />)+ </owl:intersectionof> </owl:class> Die Klasse wird als Schnittmenge aus den aufgezählten Klassen definiert. <owl:class rdf:id="son"> <owl:intersectionof rdf:parsetype="collection"> <owl:class rdf:about="#child" /> <owl:class rdf:about="#man" /> </owl:intersectionof> </owl:class> 42

43 intersectionof 43

44 4 b. OWL DL Weitere Konstrukte: oneof <owl:oneof rdf:parsetype="collection"> (<Klassenname rdf:about="#..." />)+ </owl:oneof> Die Klasse wird durch Aufzählung aller ihrer Individuen definiert. <owl:class rdf:id="childofcharles"> <rdfs:subclassof rdf:resource="#child"/> <owl:oneof rdf:parsetype="collection"> <Person rdf:about="#william" /> <Person rdf:about="#harry" /> </owl:oneof> </owl:class> 44

45 4 b. OWL DL oneof 45

46 4 b. OWL DL Weitere Konstrukte: hasvalue <owl:restriction> <owl:onproperty rdf:resource="#..." /> <owl:hasvalue rdf:resource="#..." /> </owl:restriction> Die Property muss mindestens ein bestimmtes Individuum als Wert zugewiesen bekommen. <owl:class rdf:id="childofcharles"> <rdfs:subclassof rdf:resource="#child"/> <owl:restriction> <owl:onproperty rdf:resource="#hasfather" /> <owl:hasvalue rdf:resource="#charles" /> </owl:restriction> </owl:class> 46

47 4 b. OWL DL hasvalue 47

48 4 b. OWL DL Weitere Konstrukte: disjointwith <owl:disjointwith rdf:resource="#..."/> Deklariert eine Klasse als diskunkt zu einer anderen Klasse. <owl:class rdf:id="man"> <owl:disjointwith rdf:resource="#woman"/> </owl:class> 48

49 4 b. OWL DL Boolesche Operatoren: unionof <owl:unionof rdf:parsetype="collection"> (<owl:class rdf:about="#..." />)+ </owl:unionof> Definiert eine Klasse als die Vereinigungsmenge der Individuen der aufgezählten Klassen. <owl:class rdf:id="person"> <owl:unionof rdf:parsetype="collection"> <owl:class rdf:about="#man" /> <owl:class rdf:about="#woman" /> </owl:unionof> </owl:class> 49

50 4 b. OWL DL unionof 50

51 4 b. OWL DL Boolesche Operatoren: complementof <owl:complementof rdf:resource="#..." /> Definiert eine Klasse als die Vereinigungsmenge aller Individuen, die nicht zur genannten Klasse gehören. <owl:class rdf:id="person"> <owl:complementof rdf:resource="#noperson" /> </owl:class> mincardinality, maxcardinality, cardinality In OWL DL sind auch Werte > 1 als Kardinalitäten erlaubt! 51

52 4 b. OWL DL complementof 52

53 4 c. OWL Full OWL Full erlaubt auch komplexe Klassen: Klassen können wie Individuen behandelt werden DatatypeProperties können als invers funktional definiert werden Transitive Properties können die maximale Kardinalität 1 haben Folge: Ontologien in OWL Full sind nicht mehr entscheidbar und daher zum Folgern mit Racer nicht geeignet! Wenn in einer Ontologie gefolgert werden soll, muss OWL Lite oder OWL DL verwendet werden. 53

54 Und jetzt viel Spaß beim Modellieren!