Krótka charakterystyka OWL jako języka przeznaczonego do formułowania ontologii, które mogą być wykorzystane w semantycznej sieci WWW.

Każdą definicje ontologiczną zaczynam nagłówek dokumentu XML, po którym mogą wystąpić jednostki definiujące skrótowe nazwy przedrostków opisujących przestrzenie nazw znaczników (w celu ułatwienia posługiwania się nimi w definicjach ontologicznych). Mogą być nimi np. przestrzeń owl - znaczników języka OWL lub też przestrzeń xsd znaczników języka schematów XML. Definicję ontologiczną rozpoczyna znacznik <rdf:RDF…> zawierający specyfikację przestrzeni nazw. Właściwą definicję ontologiczną rozpoczyna nagłówek (ang. ontology header) specyfikujący metadane związane z definiowaną ontologią (odpowiada im para znaczników <owl:Ontology> i </owl:Ontology>), jak np.: jej adres URI, tytuł, autorów.

Zasadnicza część ontologii składa sie z definicji klas, relacji oraz ich przykładów. Przykładem prostej definicji pojęcia (klasy) jest następująco zdefiniowany termin 'giraffe':

<owl:Class rdf:ID="giraffe"/>

Z przytoczonej definicji wynika, że zbiór bytów będących przykładami pojęcia o identyfikatorze 'giraffe' jest podzbiorem predefiniowanego uniwersum bytów o nazwie 'thing'. Za pomocą atrybutu rdf:about można wprowadzić rozszerzenia do istniejących definicji:

<owl:Class rdf:about="giraffe">
    <rdfs:subClassOf rdf:resource="Animal"/>
</owl:Class>

Powyższe związki można wyrazić jednostopniowo za pomocą następującej definicji, która dodatkowo zawiera etykietę umożliwiającą nazwanie definiowanej klasy bytów po polsku:

<owl:Class rdf:ID="giraffe">
    <rdfs:subClassOf rdf:resource="Animal"/>  
    <rdfs:label xml:lang="pl">żyrafa</rdfs:label>
</owl:Class>

Załóżmy, że 'Zeta' jest imieniem pewnej żyrafy. W sensie ontologicznym, 'Zeta' jest przykładem pojęcia 'giraffe', o czym orzeka następujące zdanie:

<giraffe rdf:ID="Zeta"/>

W języku OWL występują dwie kategorie relacji binarnych: zachodzących pomiędzy elementami klas (tzw. ObjectProperty) oraz definiujących związki pomiędzy elementami klas i danymi innych typów (DatatypeProperty - wydaje się, że te drugie zręczniej byłoby traktować jako atrybuty klas).Przykładem relacji definiującej wartość atrybutu „wiek” pewnego typu obiektów jest BE_IN_STATE/age, definiowana jako relacja kategorii DatatypeProperty, której zakresem są liczby całkowite nieujemne zdefiniowane jako typ w schemacie XML:

<owl:DatatypeProperty rdf:ID="BE_IN_STATE/age"> 
    <rdfs:range rdf:resource="&xsd;NonNegativeInteger"/>
</owl:DatatypeProperty>

Ciekawym mechanizmem, wynikających ze stosowania logik deskrypcyjnych, jest możliwość tworzenia klas poprzez nakładanie więzów na relacje. Na przykład, można zdefiniować klasę zawierającą wyłącznie (AllValuesFrom) lub również (SomeValuesFrom) elementy będące częściami wskazanych obiektów. Ta nowa klasa powstanie poprzez ograniczenie zakresu relacji „posiadania całości”. Szczególnym rodzajem więzu jest hasValue umożliwiający tworzenie zabioru elementów mających pewną określoną, pojedynczą wartość jako zakres relacji - na przykład słonie, poza tym, że są roślinożercami, są także zwierzętami o szarym kolorze skóry (indiwiduum określające kolor szary jest zakresem relacji BE_IN_STATE/colour):

<owl:Class rdf:ID="elephant">
    <rdfs:subClassOf rdf:resource="#herbivore"/>  
    <rdfs:subClassOf>
        <owl:Restriction>
             <owl:onProperty rdf:resource="BE_IN_STATE/colour"/>
             <owl:hasValue rdf:resource="#grey"/>
        </owl:Restriction>
    </rdfs:subClassOf>
</owl:Class>

Można także nakładać ograniczenia na liczbę elementów powiązanych za pomocą wskazanej relacji. Istnieją trzy warianty takich więzów: liczba maksymalna (maxCordinality), minimalna (minCordinality) i dokładna (Cordinality). W dotychczasowych definicjach pojęć posługiwaliśmy się tzw. „klasami prostymi”. Język OWL umożliwia tworzenie złożonych wyrażeń klasowych (ang. class expression), w których znajdują zastosowanie operatory mnogościowe: sumy (unionOf), przecięcia (intersectionOf), dopełnienia (complementOf), a także operatory ekstensjonalnego tworzenia skończonych zbiorów (oneOf) i operator wskazania rozłączności zbiorów (disjointWith)

Przykładem zastosowania operatora tworzenia zbioru (pojęcie grey_colour) przez wyliczenie jego elementów może być definicja jednoelementowej klasy zawierającej indywiduum reprezentujące kolor szary:

<owl:Class rdf:ID="grey_colour">
    <owl:oneOf rdf:parseType="Collection">
         <owl:Thing rdf:about="#grey"/>
    </owl:oneOf>
</owl:Class>
 
<grey_colour rdf:ID="#grey"/>

W języku OWL można wskazywać zachodzenie związków pomiędzy wskazanymi parami indywiduów: jeśli Azja jest przykładem pojęcia kontynent, a Indie są przykładem pojęcia kraj oraz założymy, że kraje są częściami kontynentów, to możemy użyć relacji HAS_HOLO_PART do powiązania rozważanych indywiduów:

<continent rdf:ID="Asia"/>
 
<country rdf:ID="India">
    <HAS_HOLO_PART rdf:resource="#Asia"/>
</country>

Język OLW udostępnia również echanizmy equivalentClass i equivalentProperty do wskazania równoważności, odpowiednio, pojęć i relacji oraz mechanizm sameIndividualAs, umożliwiający utożsamianie przykładów pojęć. W odniesieniu do indywiduów, istnieje również odwrotna do omówionej możliwości rozróżniania przykładów pojęć za pośrednictwem differentIndividualFrom.

Powrót

pl/miw/miw08_hml_rules/owl/syntax.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0