KAPITOLA 5.: TVORBA OWL ONTOLOGIE KROK ZA KROKEM - TVORBA TAXONOMIE

Taxonomii tvoříme v záložce OWLClasses. Popisky jejích prvků, které budeme často používat, jsou na následujícím obrázku OWLClasses.


Záložka OWLClasses

Obrázek: Záložka OWLClasses

Na tvorbě taxonomie není celkem nic složitého, využíváme voleb Create subclass, Create sibling class a Delete selected class(es). Obrázek Třídy v ontologii zobrazuje třídy (žlutá kolečka) - naši taxonomi. Při její tvorbě je třeba si uvědomit dvě věci. Tou první je fakt, že koncepty nacházející se v taxonomii blíže třídě Thing jsou obecnější. Třídy, které jsou od ní dál se postupně specifikují, mají ještě nějaké další vlastnosti navíc, které se u těch obecnějších konceptů nevyskytují. Pokud už zde vidíte podobnost s objektově orientovaným principem, tak je to přesně ono.


Třídy v ontologii

Obrázek: Třídy v ontologii

Následující obrázek znázorňuje ontologii vytvořenou v Protégé spolu s třídami zachycenými v UML. Jedná se o modelování toho samého, ale jiným způsobem.


OWL a UML

Obrázek: OWL a UML

Druhá důležitá věc je uvědomit si, jaké vztahy existují mezi třídami. Nejvíce se chybuje v rozeznávání vztahů typu IS-A (je případem) a IS-A-PART-OF (je částí). Rozdíl si ale ukážeme na jiné doméně. Představme si, že máme vytvořit ontologii pokrývající koncepty naší univerzity. Obrázek níže zobrazuje ontologii s obecnou třídou University, která má podtřídu Faculty, atd.


IS-A a IS-A-PART-OF vztah

Obrázek: IS-A a IS-A-PART-OF vztah

Výsek ontologie není namodelován správně. Přeložíme si vztahy mezi namodelovanými koncepty do češtiny ... "Fakulta není speciálním případem univerzity. Fakulta si nepřebírá všechny vlastnosti univerzity a dál je nerozvíjí, univerzita se z fakult jen skládá." To samé platí např. o vztahu mezi třídami Faculty (Fakulta) a Department (Katedra), StudyDepartment (StudijniOddeleni) a SchoolRoom (Učebna). Dále pak není správné modelovat pracovníky nebo studenty jako podtřídy Department, StudyDepartment a SchoolRoom. Třeba katedra je tvořena učiteli, ale učitel sám není speciálnější podtřídou třídy Katedra.

Zatím se nebudeme zabývat tím, jak modelovat vztah typu část-celek, protože se na to používá speciální technika. Už teď ale musíme vědět, že mezi třídami, pokud nemodelujeme jinak, existuje vztah IS-A. Pro náš menší demonstrační příklad ze školství, bychom mohli provést tyto úpravy: speciální podtřídou třídy University by byla např. třída StateUniversity (StatniUniversita), TechnicalUniversity (TechnickaUniversita) apod. Co se týká modelování osob, tak by bylo vhodné zavést novou třídu např. Person a jako její podtřídy uvést třídu Teacher, Student apod.

Poznámka

Mějme na paměti, že naše ontologie by měla odrážet svět jaký je. Přitom každý ho vidí jinak, proto jsou ontologie ze stejné domény od různých autorů tak různorodé. Zkrátka, když vytváříme ontologii, pokusme se vyvarovat nesmyslů, které byjí do očí :-).

Disjunktnost tříd

V předchozím odstavci jsme se zmínili o tom, že ontologie má odrážet to, jak vidíme svět. Víme, že některé koncepty jsou si velmi podobné, jiné jsou velmi odlišné povahy. Dejme tomu, že chceme v naší ontologii zachytit skutečnost, že papoušek Masked Lovebird (Agapornis škraboškový), který je z našeho úhlu pohledu jedincem, má náležet jen do třídy ParrotAgapornis, nikoliv třeba k třídě Ara, protože Agapornis a Ara mají být modelovány jako naprosto odlišné koncepty. Pokud chceme takovou odlišnost tříd v ontologii zachytit, musíme mezi třídami definovat tzv. Disjunktnost. Pokud např. o dvou třídách říkáme, že jsou mezi sebou disjunktní tzn., že neexistuje jedinec, který by patřil oběma třídám, musí patřit jen jedné z nich - takové třídy zkrátka nemají žádné společné prvky. Obrázek níže demonstruje disjunktnost tříd.


Disjunktnost tříd

Obrázek: Disjunktnost tříd

Klasickou otázkou je, jestli musíme vždy disjunktnost mezi třídami definovat. Ne vždy musíme, záleží na tom, jak vidíme realitu a co máme vlastně zachytit. Vezměme si třeba jedince CarlosNovak, který se stará o svého drahého papouška Bárta a přitom vykovává veterinární praxi. V tom případě CarlosNovak může náležet jak třídě ParrotOwner (VlastnikPapouska) tak třídě Veterinarian (Veterinar), protože když si třeba Carlos nedej bože zlomí ruku, tak si ji zlomí jak Carlos jako vlastník papouška, tak Carlos jako veterinář. Disjunktnost mezi třídami VlastnikPapouska a Veterinarian bychom nedefinovali. Uveďme opačný případ, kdyby CarlosNovak byl veterinářem a měl zálibu třeba v psaní detektivek, ve kterých by byl hlavním vyšetřovatelem, tak třídy Veterinarian a AuthorOfDetectiveStories by měly být disjunktní, protože když by se náš veterinář oženil, tak asi těžko by se hlavní vyšetřovatel v detektivce napsané Carlosem oženil také - ty děje v našem světě nemají až zas tak dalekosáhlé důsledky ... ale když se nad tím zamyslíme, nebylo by možná ke škodě, kdyby se vše, co se nám stane, promítalo do našich literárních počinů. Pak bychom mohli doslova říci, že příběh napsal život sám :-).

Definice disjunktnosti v Protégé

Disjunktnost se definuje velmi jednoduše, viz. obrázek níže. Doporučuji používat volbu Add all siblings. Zajistíme tak disjunktnost mezi všemi třídami na stejné úrovni obecnosti navzájem.


Disjunktnost tříd v Protégé

Obrázek: Disjunktnost tříd v Protégé

Stažení projektu

parrots01_taxonomy.zip (taxonomie)