KAPITOLA 9.: KLASIFIKÁTORY A KLASIFIKACE ONTOLOGIE

Co je klasifikátor?

Kontrola konzistence ontologie

Klasifikace ontologie

Jak funguje odvozování?

Experimenty s ontologií

Udržování ontologie v lehce spravovatelném stavu



Dostáváme se k velmi důležité kapitole v ontologickém modelování v prostředí Protégé, k tzv. klasifikaci s pomocí klasifikátoru. V čem to vše spočívá? Klasifikátor je program, který je často součástí editoru pro tvorbu ontologií. Může v něm být napevno nebo lze použít jiný - externí. Klasifikátor realizuje dvě základní aktivity:

Kontrola konzistence ontologie

Konzistentnost ontologie znamená, že nenese chyby. Je modelována tak, jak jsme zamýšleli. Nekonzistentní třídy jsou v prostředí Protégé po spuštění klasifikátoru označeny červenou barvou. Nekonzistentnosti se dá dosáhnout lehce. Jednou z možností je uvedení disjunktnosti mezi třídami, i když ve skutečnosti disjunktní být nemají, uveďme si příklad. Víme, že máme v naší ontologii vytvořen návrhový vzor Rozklad hodnot. Ten je tvořen třídou CountryOfOrigin, která obsahuje požadované země a kontinenty, na kterých se mohou papoušci nacházet. Další třídou je Pseudoindividual, která obsahuje také země a kontinenty - jedná se o jejich explicitní výčet. Obrázek níže se slovem nedisjunktní ukazuje současný stav mezi třídami CountryOfOrigin a Pseudoindividual. Podtřídami jsou jednotlivé kontinenty a země původu papoušků.


Nekonzistence ontologie - disjunktnost tříd

Obrázek: Nekonzistence ontologie - disjunktnost tříd

V ontologii teď budeme reprezentovat, že třídy CountryOfOrigin a Pseudoindividual mají být disjunktní, resp. nesmí mít žádné společné prvky. Následně v Protégé ověříme, jestli v našem ontologickém modelu došlo k nějaké změně. Nejprve ale musíme zvolit typ klasifikátoru. Od verze Protégé 3.4 Beta můžeme zvolit typ odvozovače s názvem Pellet (u starších verzí prostředí jsme ho museli nainstalovat k Protégé sami). Pellet pochází od společnosti Mindswap a byl součástí editoru pro OWL ontologie SWOOP. Pokud byste se chtěli s tímto editorem seznámit, pak máte zřejmě už smůlu, protože jak se zdá, jeho vývoj se pozastavit, což je celkem škoda. Nebylo to špatné řešení ( SWOOP). Pro zjišťování konzistence ontologie a její klasifikaci budeme využívat právě Pellet. Existuje ještě komerční řešení RacerPro, ale nebudeme se jím vůbec zabývat. V Protégé zvolíme nejprve volbu z menu Reasoning/Pellet 1.5.2 (direct) a pak ikonku s písmenem C - tím spustíme klasifikátor Pellet. Uvidíme před sebou okno s výsledky od klasifikátoru Pellet. Vidíme, že se nám to skoro všechno červená - to už je signál, že něco není v pořádku, viz. obrázek Nekonzistence ontologie v Protégé.


Nekonzistence ontologie v Protégé

Obrázek: Nekonzistence ontologie v Protégé

Důvodem nekonzistentnosti ontologie je ten, že jednotlivé země se vyskytují u obou tříd - tříd CountryOfOrigin a Pseudoindividual, přičemž obě jsou definovány jako disjunktní, viz. obrázek Nekonzistence ontologie - disjunktnost tříd - část s názvem disjunktní. Odstraněním disjunktnosti mezi těmito třídami bude naše ontologie opět konzistentní.

Další možnou příčinnou nekonzistentnosti je například uvedení špatného definičního oboru nebo oboru hodnot buď u samotného návrhu vlastností (záložka Properties) nebo u podmínek tříd popsaných nebo definovaných (záložka OWLClasses). Zkusme si změnit podmínky u třídy AfricanParrot (AfrickyPapousek). Současná podmínka má podobu: africký papoušek je každý takový papoušek, který má místo původu Afriku a nic jiného. Tuto podmínku změníme na: africký papoušek je každý takový papoušek, který má místo původu přírodu tj. Nature a nic jiného, viz. obrázek Africký papoušek - změna podmínky.


Nová podmínka - Africký papoušek

Obrázek: Nová podmínka - Africký papoušek

Zkusme teď spustit klasifikátor Pellet. Objeví se před námi okno s jednou nekonzistentní třídou AfricanParrot, viz. obrázek Nekonzistentní africký papoušek.


Nekonzistentní africký papoušek

Obrázek: Nekonzistentní africký papoušek

Proč je tato třída nekonzistentní? Na vině je uvedení nesprávné třídy v podmínce definované třídy AfricanParrot. U objektové vlastnosti hasCountryOfOrigin je uvedena třída Nature a Nature není podtřídou třídy CountryOfOrigin (což je obor hodnot objektové vlastnosti hasCountryOfOrigin), ale třídy Occurrence. Navíc CountryOfOrigin a Occurrence jsou disjunktními třídami, tedy nemohou mít společné jedince, např. jedince z třídy Nature, viz. obrázek Příčina nekonzistentnosti třídy AfricanParrot. Kdybychom odstranili disjunktnost mezi třídami CountryOfOrigin a Occurrence, třída AfricanParrot by byla konzistentní.


Příčina nekonzistentnosti třídy AfricanParrot

Obrázek: Příčina nekonzistentnosti třídy AfricanParrot