KAPITOLA 7.: REPREZENTACE SÉMANTIKY TŘÍD (2) - AXIOM POKRYTÍ TŘÍDY A NÁVRHOVÝ VZOR ROZKLAD HODNOT
(COVERING AXIOM AND DESIGN PATTERN VALUE PARTITION)

Co je návrhový vzor?

Sousloví návrhový vzor určitě znáte z jiných oblastí, než z ontologického inženýrství, např. z programování. Návrhový vzor nám slouží ke zjemnění popisu či definic tříd. Přitom se nejedná přímo o součást OWL nebo jakéhokoliv jiného ontologického jazyka. Přitom návrhový vzor v ontologickém inženýrství je analogií návrhového vzoru v objektově orientovaném programování. Slouží nám k modelování problémů, které se často opakují. Návrhový vzor tak můžeme použít do budoucna několikrát aneb "Proč vymýšlet postup pro něco složitého, když řešení již existuje." Návrhové vzory vidíme kolem sebe, například gotický styl je návrhovým vzorem, viz. obrázek převzatý ze zdroje Barokní gotika. Obsahuje výčet prvků, které má styl obsahovat, abychom dokázali věrně zkonstruovat jeho podobu.


Barokní gotika

Obrázek: Barokní gotika

Smysl návrhového vzoru v ontologii

Aniž byste si to přímo uvědomovali, návrhové vzory jsme už do naší ontologie zakomponovali. Návrhový vzor je totiž obyčejnou hierarchií tříd. V té hierarchii jsou třídy (podtřídy), které používáme přímo v popisech nebo v definicích tříd. Z naší ontologie papoušků jsou návrhovými vzory:

Vyberme si třeba třídu Ara a zjemníme její popis tím, že uvedeme, jaký stupeň hlasitosti má. Pro to, abychom mohli přiřadit třídě Ara charakteristiku, že Ara je schopný imitovat zvuky i slova (tj. má střední stupeň imitace), pak musíme nejdříve tu třídu s různými stupni imitace vytvořit. Už jsme s ní v minulých kapitolách pracovali a pojmenovali ji jako InclinationToImitation. Toto je totiž třída, která se nám bude rozpadat na příslušné stupně imitace papouška, viz. obrázek níže.


Návrhový vzor rozklad hodnot

Obrázek: Návrhový vzor rozklad hodnot

Použití návrhového vzoru v popisu nebo definici třídy je jednoduché. Spočívá v tvorbě podmínek pro třídy, jak jsme byli zvyklí, viz. třeba třída ParrotAmazonan - obrázek níže.


Návrhový vzor rozklad hodnot - ParrotAmazonan

Obrázek: Návrhový vzor rozklad hodnot - ParrotAmazonan

Axiom pokrytí třídy

Nezbytnou součástí návrhového vzoru rozklad hodnot je tzv. Axiom pokrytí třídy (Covering Axiom). Opět si vezmeme třídu InclinationToImitation s jejími stupni imitace. Ten rozklad třídy InclinationToImitation na tři stupně je takový příliš volný. Jestliže si jsme jisti, že žádné další stupně imitace už nebudeme chtít používat - reprezentovat v ontologii pro popisy či definice tříd, pak jejich "výčet uzavřeme", resp. uzavřeme rozklad třídy InclinationToImitation jen na ty tři stupně imitace a dost. Axiom pokrytí třídy je tvořen sjednocením tříd, které jsou podtřídami třídy, která je pokryta, v našem případě stupni imitace.

Axiom pokrytí třídy je tvořen částmi:

Axiom pokrytí třídy má ten význam, že cokoliv, co je členem třídy InclinationToImitation musí být členem LowDegreeOfImitation nebo MiddleDegreeOfImitation nebo ExcellentImitation, ale ne zároveň (nezapomeňme na disjunktnost tříd). Grafickou interpretaci návrhového vzoru s axiomem pokrytí třídy a bez něj je na obrázku Návrhový vzor rozklad hodnot s a bez axiomu pokrytí třídy.


Návrhový vzor rozklad hodnot s a bez axiomu pokrytí třídy

Obrázek: Návrhový vzor rozklad hodnot s a bez axiomu pokrytí třídy

Axiom pokrytí třídy prakticky

V prostředí Protégé lze tento axiom vytvořit jednoduše. Vybereme třídu, která má být pokryta, tj. InclinationToImitation a zvolíme volbu Create new expression, viz. obrázek níže.


Axiom pokrytí třídy v Protégé

Obrázek: Axiom pokrytí třídy v Protégé

Poznámka

Ve verzi prostředí Protégé 3.3.1 pro vytvoření axiomu pokrytí třídy existovala ikonka se symbolem sjednocení - nemuseli jsme axiom vytvářet ručně. Ve verzi Protégé 3.4 Beta jsem tuto ikonku nenašla.


? OTÁZKY A ODPOVĚDI ?

Co by se stalo, kdybychom axiom pokrytí třídy nedefinovali?
Axiom pokrytí třídy definujme v případě, když jsme si jistí, že žádné další podtřídy třídy pokrývané už nebudeme brát v úvahu. Představme si, že máme třídu Pohlaví, která se rozpadá na pohlaví mužské a ženské. Axiom pokrytí třídy neuvedeme, co to může znamenat? Obrázek níže otázku zodpovídá.


Axiom pokrytí třídy - otázka

Obrázek: Axiom pokrytí třídy - otázka

Jaký je rozdíl mezi axiomem uzávěru vlastnosti a axiomem pokrytí třídy?
Mezi nimi je samozřejmě rozdíl. Neměly by se zaměňovat způsobem, že existuje: axiom pokrytí vlastnosti nebo axiom uzávěru třídy. Obrázek Axiomy - srovnání vysvětluje rozdíl mezi axiomy.


Axiomy - srovnání

Obrázek: Axiomy - srovnání

Není návrhový vzor rozklad hodnot definovanou třídou, vždyť má stejnou značku s třemi čárkami jako třída definovaná - má totiž nezbytnou a postačující podmínku?
Návrhový vzor není definovanou třídou. Definovaná třída má podmínky, které nám pomáhají rozhodnout, jestli daný jedinec do třídy jednoznačně patří nebo ne. Návrhový vzor má axiom pokrytí třídy jako podmínku, definovaná třída nikoliv. Podmínka v návrhovém vzoru nám neřekne, jestli jedinec do třídy patří nebo nepatří.

Jsou součástí návrhového vzoru i podtřídy tříd, které zajišťují pokrytí třídy?
Máme třeba třídu Occurrence s podtřídami DomesticEnvironment, Nature a Zoo, přičemž každá z nich má další podtřídy. Odpovědí je, že i tyto podtřídy jsou součástí návrhového vzoru rozklad hodnot.

Používá se axiom pokrytí třídy jen u návrhového vzoru rozklad hodnot nebo ho mohu použít i jinde?
Axiom pokrytí třídy nemusí být použit jen u návrhového vzoru rozklad hodnot. Můžeme ho použít kdekoliv, kde chceme říci, že jen tyto třídy budeme v naší ontologii reprezentovat. V naší ontologii papoušků máme například třídu Food, která má podtřídu PlantFood a AnimalFood. Tyto podtřídy mají ještě jiné podtřídy týkající se stravy. I na třídu Food může být použit axiom pokrytí třídy, kterým řekneme, že jen podtřídy PlantFood a AnimalFood spolu se svými podtřídami budou v ontologii uvažovány a žádné jiné.


Stažení projektu

parrots06_axiomy.zip (axiom uzávěru vlastnosti, axiom pokrytí třídy)