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:
- zkontroluje nám, jestli je naše ontologie konzistentní;
- provádí klasifikaci ontologie;
- pomáhá nám udržovat ontologii v lehce spravovatelném stavu.
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ů.
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é.
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.
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.
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í.