26paź/09Off
Tworzymy lekkie ontologie sieciowe z OWL Lite

W jednym z poprzednich artykułów opisaliśmy język OWL rekomendowany przez W3C do opisu ontologii sieciowych. W tym artykule omówimy podstawowe mechanizmy najprostszej wersji tego języka: OWL Lite. W następnych artykułach przedstawimy dwie lekkie ontologie: FOAF i SIOC, które wykorzystują pewne pojęcia z OWL Lite.
OWL Lite rozszerza zestaw pojęć zdefiniowany przez RDF Schema o mechanizmy umożliwiające na bardziej precyzyjne definiowanie znaczenia właściwości i klas:
- podobieństwa elementów zdefiniowanych w ontologii:
- aby określić, że dwie klasy lub właściwości są sobie równe korzystamy (odpowiednio) z
equivalentClassiequivalentProperty. Równość w przypadku klas oznacza, że instancje należące do jednej należą jednocześnie do drugiej. Podobnie zdefiniowane równości właściwości oznacza, że połączenie dwóch instancji jedną z właściwości podpowiada, że są one połączone jednocześnie drugą z równych sobie właściwości. Poniższy przykład w pseudo-RDF prezentuje równoznaczność klas:[semschool:Grzejnik] [rdf:type] [rdfs:Class]. [semschool:Kaloryfer] [rdf:type] [rdfs:Class]. [semschool:Grzejnik] [owl:equivalentClass] [semschool:Kaloryfer].
- aby określić, że dwie instancje są sobie równe (takie same) lub zupełnie różne, korzystamy (odpowiednio) z
sameAsidifferentFrom.[semschool:Fiat126p] [rdf:type] [semschool:Samochod]. [semschool:Maluch] [rdf:type] [semschool:Samochod]. [semschool:Linea] [rdf:type] [semschool:Samochod]. [semschool:Fiat126p] [semschool:sameAs] [semschool:Maluch]. [semschool:Linea] [semschool:differentFrom] [semschool:Maluch].
- możemy też za pomocą pojedynczego opisu określić, że wszystkie instancje w danym zestawie są wzajemnie różne, korzystając z pojęć
AllDifferentidistinctMembers. Poniższy przykład w zapisie RDF/XML prezentuje użycie pojęciaAllDifferentidistinctMembers:<owl:AllDifferent> <owl:distinctMembers rdf:parseType="Collection"> <semschool:Samochod rdf:about="#Maluch" /> <semschool:Samochod rdf:about="#Linea" /> <semschool:Samochod rdf:about="#Sedici" /> </owl:distinctMembers> </owl:AllDifferent>
- aby określić, że dwie klasy lub właściwości są sobie równe korzystamy (odpowiednio) z
- typy właściwości:
- OWL Lite umożliwia zdefiniowanie wzajemnie odwrotnych właściwości za pomocą pojęcia
inverseOf, np.:[semschool:produkuje] [rdf:type] [rdf:Property]. [semschool:jestProdukowany] [rdf:type] [rdf:Property]. [semschool:produkuje] [owl:inverseOf] [semschool:jestProdukowany].
- OWL Lite umożliwia również zdefiniowane typu właściwości:
DatatypeProperty- obiekty w zdaniu, w którym są zdefiniowane dane właściwości, są literałami a nie obiektamiTransitiveProperty- dana właściwość jest przechodnia, tzn. z tego że[A] [powiązane] [B].i[B] [powiazane] [C]wynika[A] [powiązane] [C]SymetricProperty- dana właściwość jest symetryczna, tzn. z tego, że[A] [powiązane] [B]wynika[B] [powiązane] [C].FunctionalProperty- dla danego podmiotu w zdaniu z tą właściwością, może istnieć tylko jeden obiekt (wartość).InverseFunctionalProperty- oznacza, że dla danego obiektu w zdaniu z tą właściwością, może istnieć tylko jeden podmiot. Jest to niesamowicie ważna właściwość, gdyż jej zidentyfikowanie w ontologii umożliwia wnioskowanie, że dwa zasoby o róznych URI, są w rzeczywistości tym samym zasobem.
- OWL Lite umożliwia zdefiniowanie wzajemnie odwrotnych właściwości za pomocą pojęcia
- ograniczenia na wykorzystanie właściwości przez instancje:
- możemy zdefiniować, że wszystkie obiekty powiązane daną właściwością są określonego typu, np.:
<owl:Class rdf:ID="Samochod"> ... <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#maProducenta" /> <owl:allValuesFrom rdf:resource="#FabrykaSamochodow" /> </owl:Restriction> </rdfs:subClassOf> ... </owl:Class> - możemy zdefiniować, że conajmniej jeden z obiektów powiązanych daną właściwością jest określonego typu, np.:
<owl:Class rdf:ID="Samochod"> ... <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#dostawcaCzesci" /> <owl:someValuesFrom rdf:resource="#FabrykaOpon" /> </owl:Restriction> </rdfs:subClassOf> ... </owl:Class> - możemy również określić oczekiwaną ilość właściwości, lub zdefiniować minimalne lub maksymalne ograniczenie na ilość właściwości dla danego podmiotu; do tego celu korzystamy (odpowiednio) z pojęć:
cardinality,minCardinality,maxCardinality.
- możemy zdefiniować, że wszystkie obiekty powiązane daną właściwością są określonego typu, np.:
- definiowanie przecięć zbiorów klas i właściwości - korzystamy z pojęcia
intersectionOf, jak w poniższym przykładzie:<owl:Class rdf:ID="BialySamochod"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Samochod" /> <owl:Restriction> <owl:onProperty rdf:resource="#maKolor" /> <owl:hasValue rdf:resource="#Bialy" /> </owl:Restriction> </owl:intersectionOf> </owl:Class>


