OWL i ontologie
Por. World Wide Web Consortium (www.w3c.org)
Semantic Web – architektura
OWL
Ontology Web Language = OWLOntologia: w sztucznej inteligencji (def.) – jawna, formalna specyfikacja konceptualizacji wybranej domeny. Dział SI poświęcony nie „jak?” ale „co?”...a potocznie: (poszerzony) słownik, zawierający koncepty (klasy), relacje między nimi, ich instancje, aksjomaty logiczne oraz reguły wnioskowania. Opisy zasobów, usług, podmiotów zdefiniowane w OWL i możliwe do przetwarzania przez autonomicznie działające oprogramowanie.
OWL
Projekt nr SPORZL-2.3A-2-12-030/0047, współfinansowany ze środków Europejskiego Funduszu Społecznego Unii Europejskiej
Web Ontology Language = OWLOntologia: w sztucznej inteligencji (def.) – jawna, formalna specyfikacja konceptualizacji wybranej domeny. ...a potocznie: (poszerzony) słownik, zawierający koncepty (klasy), relacje między nimi, ich instancje, aksjomaty logiczne oraz reguły wnioskowania. Wszystko zdefiniowane w OWL i możliwe do przetwarzania przez autonomicznie działające oprogramowanie.
... jawna, formalna specyfikacja konceptualizacji wybranej domeny.
OWL
• Przy projektowaniu ontologii wykorzystywane są metody kategoryzacji i hierarchizacji. Pewnym pojęciom abstrakcyjnym i grupom obiektów posiadającym wspólne cechy przyporządkowywane są nazwy, tworzone są więc klasy obiektów (kategoryzacja). Tak utworzone klasy są następnie umieszczane w strukturze hierarchicznej.
• Przy tworzeniu ontologii można użyć różnych języków modelowania. Najczęściej wykorzystywany jest RDF/RDFS lub bardziej wyrafinowane języki wykorzystujące tą technologię np. OWL.
OWL
• Podstawową jednostką języka OWL jest klasa wraz z jej właściwościami.
• Może zawierać: instancje klas, instancje właściwości, właściwości danych, właściwości atrybutów.
• Na podstawie danych zapisanych w języku OWL tworzy się bazę wiedzy, z której można następnie dodatkowo wywnioskować fakty pochodne.
OWL
• W OWL opisujemy rzeczywistośd za pomocą kategorii
Mary is female
• lub opisu relacji między obiektami
John and Mary as married
• Składniki tych wypowiedzi nazywamy encjami:
objects (oznaczamy jako „individuals”) np.: John, Mary
categories (oznaczamy jako „classes”) np.: female
relations (oznaczamy jako „properties”) np.: married
OWL
• Główną cechą OWL jest to, że nazwy encji mogą być łączone w wyrażenia za pomocą tzw. konstruktorów.
• Przykładem mogą być klasy „female” i „professor” mogą zostać połączone w celu opisania klasy kobiet-profesorów.
• W OWL, konstruktory dla każdego typu jednostki znacznie się różnią.
• Język wyrażeń dla klas jest bardzo bogaty i wyrafinowany w przeciwieństwie do języka wyrażeń dla właściwości.
• Różnice te wynikają zarówno z przyczyn historycznych, jak również przyczyn technicznych.
OWL
• Zaczynamy od wprowadzenia klas, o których mówimy. Można to zrobić w następujący sposób:
<ClassAssertion>
<Class IRI="Person"/>
<NamedIndividual IRI="Mary"/>
</ClassAssertion>
IRI = Internationalized Resource Identifier
OWL
• Tworzenie hierarchii klas:
<SubClassOf> <Class IRI="Woman"/> <Class IRI="Person"/> </ SubClassOf>
OWL
• klasa Osoba jest równoznaczna klasie Human.
<EquivalentClasses>
<Class IRI="Person"/>
<Class IRI="Human"/>
</EquivalentClasses>
Stwierdzenie, że klasy Osoba i Człowiek są równoznaczne oznacza to samo, co stwierdzenie, że Osoba jest podklasą klasy Człowiek, a Człowiek jest podklasą klasy Osoba.
OWL
• Informacja, że dwie klasy są rozłączne
<DisjointClasses>
<Class IRI="Woman"/>
<Class IRI="Man"/>
</DisjointClasses>
<owl:Class rdf:about="associateProfessor">
<owl:disjointWith rdf:resource="#professor"/>
<owl:disjointWith rdf:resource="#assistantProfessor"/>
</owl:Class>
OWL
• Ontologia może również służyć do specyfikacji jak poszczególne osoby odnoszą się do innych osób ( relacje)
<ObjectPropertyAssertion>
<ObjectProperty IRI="hasWife"/>
<NamedIndividual IRI="John"/>
<NamedIndividual IRI="Mary"/>
</ObjectPropertyAssertion>
<NegativeObjectPropertyAssertion> <ObjectProperty IRI="hasWife"/> <NamedIndividual IRI="Bill"/> <NamedIndividual IRI="Mary"/> </NegativeObjectPropertyAssertion>
OWL
Rozróżnianie obiektów:
<DifferentIndividuals>
<NamedIndividual IRI="John"/>
<NamedIndividual IRI="Bill"/>
</DifferentIndividuals>
<SameIndividual>
<NamedIndividual IRI="James"/>
<NamedIndividual IRI="Jim"/>
</SameIndividual>
OWL
Przykład właściwości typów danych. Stwierdza on, że John ma 51 lat.
<DataPropertyAssertion>
<DataProperty IRI="hasAge"/>
<NamedIndividual IRI="John"/>
<Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#integer">
51
</Literal>
</DataPropertyAssertion>
OWL
Dziedzina i zakres mogą być również ustalane dla właściwości typów danych tak jak ma to miejsce dla właściwości obiektów. W tym przypadku jednak, zakres będzie typem danych zamiast klasą.
<DataPropertyDomain>
<DataProperty IRI="hasAge"/>
<Class IRI="Person"/>
</DataPropertyDomain>
<DataPropertyRange>
<DataProperty IRI="hasAge"/>
<Datatype IRI="http://www.w3.org/2001/XMLSchema#nonNe gativeInteger"/>
</DataPropertyRange>
OWL
Zastrzeżenia zakresu relacji:
<owl:Class rdf:about="#firstYearCourse">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#isTaughtBy"/>
<owl:allValuesFrom rdf:resource="#Professor"/> //someValues, hasValue
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
OWL
Własności kardynalne:
<owl:Class rdf:about="#course">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#isTaughtBy"/>
<owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">
1
</owl:minCardinality>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
OWL
Unia klas:
<owl:Class rdf:ID="peopleAtUni">
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#staffMember"/>
<owl:Class rdf:about="#student"/>
</owl:unionOf>
</owl:Class>
OWL
Przecięcie klas (+ anonimowa definicja klasy):
<owl:Class rdf:ID="facultyCS">
<owl:intersectionOf rdf:parseType="owl:collection">
<owl:Class rdf:about="#faculty"/>
<Restriction>
<owl:onProperty rdf:resource="#belongsTo"/>
<owl:hasValue rdf:resource="#CSDepartment"/>
</Restriction>
</owl:intersectionOf>
</owl:Class>
OWL
Klasa jako tryb wyliczeniowy:
<owl:oneOf rdf:parseType="Collection">
<owl:Thing rdf:about="#Monday"/>
<owl:Thing rdf:about="#Tuesday"/>
<owl:Thing rdf:about="#Wednesday"/>
<owl:Thing rdf:about="#Thursday"/>
<owl:Thing rdf:about="#Friday"/>
<owl:Thing rdf:about="#Saturday"/>
<owl:Thing rdf:about="#Sunday"/>
</owl:oneOf>
OWL
Ontologia jako graf / zbiór częściowo uporządkowany:
OWL-S
OWL-S
OWL-S
OWL-S