KAPITOLA 5.: TVORBA OWL ONTOLOGIE KROK ZA KROKEM - ZAKLÁDÁNÍ OBJEKTOVÝCH VLASTNOSTÍ, SPECIFIKACE DEFINIČNÍHO OBORU A OBORU HODNOT

Objektové vlastnosti

Jak již bylo uvedeno, objektová vlastnost vytváří binární vztah mezi jedinci. Vlastnost jako taková nám umožní vystihnout význam třídy, popsat ji nebo definovat. Co by to bylo za třídu, která by měla jen jméno. Pro počítač by taková ontologie nebyla moc k užitku, pro člověka také ne.

Naším úkolem bude zavést do ontologie vlastnost, která bude specifikovat:

Nebudeme uvádět postup tvorby úplně všech výše uvedených vlastností, jen některých, protože postup je vlastně u všech téměř stejný. Začneme u vlastnosti hasSize, pak vytvoříme hasLongevity a hasSeverity. Vlastnosti zakládáme v záložce Properties, ty objektové v složce Object. Využíváme voleb Create object property, Create subproperty nebo Delete property. Jak jste si jistě všimli, pomocí volby Create subproperty lze, tak jako u tříd, vytvářet taxonomii vlastností, příkladem je třeba obecná vlastnost hasParrent a "podvlastnost" hasMother a hasFather. Obrázek níže ukazuje GUI pro tvorbu vlastností.


Objektové vlastnosti

Obrázek: Objektové vlastnosti

Definiční obor a obor hodnot

Po vytvoření vlastnosti není ještě naše práce u konce. Doporučuji specifikovat tzv. definiční obor (pro zkrácení budeme používat třeba: D(f)) a obor hodnot (H(f)). Co znamenají tyto pojmy a jak se používají?
Definiční obor a obor hodnot vlastnosti uvádějí mezi kterými třídami může vlastnost "působit", resp. mezi kterými jedinci, z kterých tříd je působení vlastnosti přípustné. Jestliže uvedeme D(f) a H(f) v ontologii, jednoznačně vymezíme roli vlastnosti. Zabráníme tak případným nekonzistentnostem v ontologii, resp. nesprávným tvrzením, která neodráží náš pohled na svět. Definiční obor nám říká, která třída se nachází vlevo od vlastnosti, resp. u jaké třídy se ta vlastnost může objevit. Obor hodnot naopak říká, jakou hodnotu z které třídy ta vlastnost může nabývat. Ještě to není jasné? Nevadí, obrázky budou názornější.

Mějme vlastnost hasLongevity (maDelkuZivota). Nejdříve si musíme uvědomit, v jaké doméně se pohybujeme. Jsme v oblasti týkající se zvířat, takže v naší ontologii nebude zahrnuta třída třeba s názvem Machine => jako definiční obor nebude třída Machine, která by se dožívala určitého věku, ale třída Animal. Teď už víme, že nějaký jedinec z třídy Animal bude mít přidělen nějaký věk, ale jaký - jaká bude jeho "hodnota"? To už specifikuje obor hodnot, resp. kterých "hodnot" bude moci vlastnost nabývat. Ten možný věk bude reprezentován třídou Longevity, kterou musíme do ontologie zavést. Jakmile ji vytvoříme, třída může zastávat roli D(f) nebo H(f). Longevity bude v našem případě zastávat roli H(f). Pokud to ještě není jasné, tak si zkuste přeložit do češtiny to, co chcete reprezentovat. Víte, že chcete u zvířat uvádět, jestli se dožívají nějakého věku => řeknete si například toto: "Zvíře má nějakou délku života." To vás už navede, jaká třída má být v roli D(f) a H(f) => Zvíře (Animal) = D(f) (... kdo bude mít nějaký věk) a Délka života (Longevity) = H(f) (... jakých hodnot může ta vlastnost hasLongevity nabývat, např. Dlouhověkost, Krátký věk, Střední délka života, apod.), viz. obrázek Definiční obor a obor hodnot.


Definiční obor a obor hodnot

Obrázek: Definiční obor a obor hodnot

Je samozřejmě potřebné třídu Longevity v ontologii reprezentovat (viz. záložka OWLClasses) spolu s jejími podtřídami, např. ShortAge (nízký věk), MiddleAge (střední věk), Aeon (dlouhý věk), abychom mohli nejen specifikovat D(f) a H(f), ale hlavně, aby bylo možné třídy více vystihnout - popsat je nebo definovat. Nezapomeňte jednotlivé potřídy třídy Longevity učinit disjunktními, to platí i mezi třídou Longevity a třídami na stejné úrovni obecnosti.

Na dalším obrázku je interpretace definičního oboru a oboru hodnot v prostředí Protégé.


Definiční obor a obor hodnot v Protégé

Obrázek: Definiční obor a obor hodnot v Protégé

Inverzní vlastnost

V ontologii u objektových vlastností je vhodné uvést i tzv. inverzní vlastnost. Neodborně řečeno se jedná o objektovou vlastnost, která je definována k již vytvořené objektové vlastnosti s tím rozdílem, že inverzní vlastností uvádíme jaký definiční obor a obor hodnot platí v opačném směru působení objektové vlastnosti, viz. obrázek Inverzní vlastnost.

Mějme opět objektovou vlastnost hasLongevity. Inverzní vlastností k ní je isLongevityFor. Vezmete si třídu, která je u vlastnosti hasLongevity v roli H(f) a pro stanovení inverzní vlastnosti ji budete považovat za D(f), tj. do češtiny přeložíte inverzní vlastnost pro objektovou vlastnost hasLongevity následovně: "Délka života je délkou života pro koho - pro zvíře." Z toho vyplývá, že Longevity je definičním oborem inverzní vlastnosti isLongevityFor a oborem hodnot je třída Animal.


Inverzní vlastnost

Obrázek: Inverzní vlastnost

Inverzní vlastnost spolu s "normální" objektovou vlastností zajišťuje obousměrný vztah mezi jedinci z určitých tříd, přitom platí, že každá objektová vlastnost má inverzní vlastnost.

Založení inverzní vlastnosti k objektové v Protégé je jednoduché. Založíme novou objektovou vlastnost s názvem isLongevityFor. Přejdeme na objektovou vlastnost hasLongevity a u ní zvolíme volbu Set inverse property, viz. obrázek níže. Z nabídky vybereme vlastnost isLongevityFor, která bude inverzní vlastností k objektové.


Inverzní vlastnost v Protégé

Obrázek: Inverzní vlastnost v Protégé

Všimněte si, že aniž byste definovali definiční obor a obor hodnot k inverzní vlastnosti isLongevityFor, byl jí automaticky přidělen podle definičního oboru a oboru hodnot objektové vlastnosti hasLongevity.

Pozorní studenti si jistě všimli, že v ontologii samotné není reprezentována vlastnost hasCountryOfOrigin a třída CountryOfOrigin. Budou reprezentovány později ve výkladu, konkrétně při vysvětlování problematiky tvorby jedinců.

Stažení projektu

parrots02_properties.zip (objektové a inverzní vlastnosti, definiční obor a obor hodnot)