Polskie tłumaczenie Rekomendacji "OWL Web Ontology Language Reference"
Autor: Dorota Szwarc.
Lokalizacja rekomendacji:http://zio.iiar.pwr.wroc.pl/standards/PL/www.w3.org/TR/2004/REC-owl-ref-20040210/
Dokument ten jest tłumaczeniem rekomendacji W3C OWL Web Ontology Language Overview.
Przetłumaczony dokument nie jest przekładem normatywnym i może
zawierać błędy wynikające z tłumaczenia. Status normatywny
posiada jedynie wersja anglojęzyczna na stronie W3C.
Oryginalny dokument znajduję się na stronie: http://www.w3.org/TR/2004/REC-owl-ref-20040210/.
Dokument jest chroniony prawem autorskim. Copyright © 2004
W3C® (MIT, ERCIM, Keio).
Tłumaczenie dokumentu zostało wykonane w ramach studenckiego projektu
realizującego kurs: Komputerowe Przetwarzanie Wiedzy.
Prowadzący przedmiot : dr inż. Tomasz Kubik, 
Politechnika Wrocławska
OWL Język Ontologii Sieciowej
Referencja
Rekomendacja W3C 10 lutego 2004r.
- Ta wersja:
- http://www.w3.org/TR/2004/REC-owl-ref-20040210/
- Ostatnia wersja:
- http://www.w3.org/TR/owl-ref/
- Poprzednia wersja:
- http://www.w3.org/TR/2003/PR-owl-ref-20031215/
- Editors:
- Mike Dean, BBN Technologies
Guus Schreiber, Free University
Amsterdam
- Authors:
- Sean Bechhofer, University of
Manchester
Frank van Harmelen, Free University
Amsterdam
Jim Hendler, University of
Maryland
Ian Horrocks, University of
Manchester
Deborah L. McGuinness, Stanford
University
Peter F. Patel-Schneider, Bell Labs
Research, Lucent Technologies
Lynn Andrea Stein, Franklin W. Olin College
of Engineering
Proszę o sprawdzenie erraty tego
dokumentu, która może zawierać poprawki normatywne.
Zobacz również tłumaczenia.
Copyright © 2004
W3C® (MIT, ERCIM,
Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules
apply.
Język Ontologii Sieciowej OWL jest językiem znaczników
semantycznych do publikowania i dzielenia się ontologiami w Sieci
Ogólnoświatowej. OWL został rozwinięty jako rozwinięcie
słownictwa RDF (Struktura Opisu Zasobów) i powstał z Języka
Ontologii Sieciowej DAML+OIL. Ten dokument zawiera strukturalny nieformalny opis
pełnego zbioru konstrukcji języka OWL i jest przeznaczony, aby
służyć jako referencje dla użytkowników OWL,
którzy chcą konstruować ontologie OWL.
Ten dokument został zrecenzowany przez W3C Members i inne zainteresowane strony,
i został zatwierdzony przez Przewodniczącego jako Rekomendacja W3C.
Rolą W3C w tworzeniu Rekomendacji jest przyciągnięcie uwagi do
specyfikacji i promowanie powszechnego rozlokowania. Wzmacnia to
funkcjonalność i sprawność działania sieci.
To jest jedna z sześciu części Rekomendacji
W3C dla OWL, Języka Ontologii Sieciowej. Została ona przedstawiona przez
Grupę Roboczą Ontologii
Sieciowej jako część Działalności Semantycznej Sieci ( Deklaracja Działalności, Charakter Grupowy) do publikacji 10 lutego
2004 roku.
Projekt OWL przedstawiany w poprzednich wersjach tych dokumentów został
gruntownie sprawdzony i spełnia wymogi
techniczne Grupy Roboczej. Grupa Robocza zajęła się wszystkimi otrzymanymi
komentarzami, wprowadzając zmiany, jeśli były konieczne. Zmiany w tym
dokumencie od momentu przedstawienia wersji Rekomendacji
Wstępnej są wyszczególnione w dzienniku
zmian.
Komentarze są mile widziane na stronie public-webont-comments@w3.org (archiwum) a
ogólna dyskusja na temat powiązanej technologii mile widziana na stronie
www-rdf-logic@w3.org (archiwum).
Lista realizacji projektu jest
dostępna.
W3C posiada listę wszystkich opatentowanych publikacji dotyczących tej pracy.
Ta sekcja opisuje status tego dokumentu w chwili jego publikacji. Inne dokumenty
mogą zastąpić ten dokument. Lista aktualnych publikacji W3C i ostatnia
korekta tego raportu technicznego jest dostępna w indeksie raportów technicznych W3Cna stronie: http://www.w3.org/TR/.
Części tego dokumentu powstały z opisu referencji DAML+OIL (marzec
2001r.) [DAML+OIL], który został
przedstawiony jako część DAML+OIL W3C Note . Autorzy tego i
poprzednich dokumentów składają podziękowania za pomoc.
Jeremy Carroll, Jim Hendler, Brian McBride i Peter Patel-Schneider dostarczyli
rzeczowych recenzji i przyczynili się do powstania tego dokumentu. Jeff Heflin
wniósł wkład w rozdział o dezaprobatach. Jerome Euzenat
ofiarował przykłady wyliczeniowych typów danych.
Ten dokument jest rezultatem obszernych, intensywnych dyskusji całej Grupie Roboczej Ontologii Sieciowej . Do
członków tej grupy roboczej należeli: Yasser alSafadi,
Jean-François Baget, James Barnette, Sean Bechhofer, Jonathan Borden, Frederik
Brysse, Stephen Buswell, Jeremy Carroll, Dan Connolly, Peter Crowther, Jonathan Dale, Jos
De Roo, David De Roure, Mike Dean, Larry Eshelman, Jérôme Euzenat, Tim
Finin, Nicholas Gibbins, Sandro Hawke, Patrick Hayes, Jeff Heflin, Ziv Hellman, James
Hendler, Bernard Horan, Masahiro Hori, Ian Horrocks, Jane Hunter, Francesco Iannuzzelli,
Rüdiger Klein, Natasha Kravtsova, Ora Lassila, Massimo Marchiori, Deborah
McGuinness, Enrico Motta, Leo Obrst, Mehrdad Omidvari, Martin Pike, Marwan Sabbouh, Guus
Schreiber, Noboru Shimizu, Michael Sintek, Michael K. Smith, John Stanton, Lynn Andrea
Stein, Herman ter Horst, David Trastour, Frank van Harmelen, Bernard Vatant, Raphael
Volz, Evan Wallace, Christopher Welty, Charles White i John Yanosy.
1. Wprowadzenie
1.1 Cele tego dokumentu
Ten dokument przedstawia systematyzację, skład i opis
objaśniający wszystkie modulacje form podstawowych OWL, użycie RDF/XML
zmienia składnię na OWL. Spodziewamy się, że ten dokument
posłuży nam jako referencyjny przewodnik dla użytkowników
języka OWL.
Ten dokument jest jednym ze składników opisu OWL, Języka Ontologii
Sieciowej, napisanym przez W3C Grupę Roboczą Ontologii Sieciowej.
Rozdział Spis
dokumentów Przeglądu OWLa opisuje wszystkie różniące
się części i ich wzajemne dopasowanie. Czytelnicy niezaznajomieni z
OWLem mogą najpierw chcieć przeczytać Przegląd OWL [OWL Przegląd], następnie Przewodnik OWL
[OWL Przewodnik] dla lepszego poznania opisu
określeń oraz przykładów użycia języka.
Niniejszy dokument zakłada, że czytelnik posiada wiedzę na temat
podstawowych koncepcji RDF [RDF Koncepcje]
oraz ma praktyczną wiedzę o składni RDF/XML [RDF/XML Składnia] oraz RDF Schema [RDF Słownictwo].
Normatywne referencje precyzujące składnię języka OWL
można znaleźć w Semantyce i liście składni OWL
[OWL S&AS]. Tamten dokument
także zawiera sprecyzowane definicje znaczenia konstrukcji językowej w
formie teoretycznego modelu semantycznego. Pojęcia takie jak zgodność
ontologii OWL są omówione w tym dokumencie.
Użycie przypadków i wymagań dla języka OWL są opisane
w [OWL Wymagania]. Test
przypadków dla narzędzi OWL (np., testy tworzenia majoratu, testy
zgodności) są skonkretyzowane w dokumencie Test [OWL Przypadki Testowe] .
1.2 OWL Full/DL/Lite
Tak, jak omówiono to już w Przeglądzie OWL [OWL Przegląd], następnie w Przewodniku OWL
[OWL Przewodnik], język OWL ustala dwa
specyficzne podzespoły w które wierzymy, że będą
używane przez programistów i użytkowników języka. OWL
Lite był zaprojektowany dla prostych implementacji i umożliwienia
użytkowania funkcjonalnego podzespołu, który będzie dawał
im początki użytkowania OWL. OWL DL (gdzie DL oznacza "Logika opisowa")
został zaprojektowany aby wspierać istniejącą
część branży Logiki opisowej i zapewnić podzbiór
języków, które mają pożądane własności
obliczeniowe dla systemów wnioskowania. Kompletny język OWL (nazwany OWL
Full odróżnia go od podzespołów) łagodzi on
niektóre ograniczenia na temat OWL DL a więc stwarza dostępne cechy,
które mogą być użyte do tworzenia baz danych i wiedzy
reprezentującej system, ale które naruszają ograniczenia wnioskowania
Logiki Opisowej.
UWAGA: Dokumenty RDF będą na ogół w OWL Full
chyba, że są szczególnie budowane do składni OWL DL lub Lite.
OWL Full i OWL DL wspierają ten sam zespół konstrukcji języka
OWL. Ich różnice znajdują się w ograniczeniach użycia
niektórych ich cech oraz użyciu cech RDF. OWL Full pozwala na dowolne
mieszanie OWL z RDF Schema i, jak RDF Schema, nie narzuca ścisłego
rozdziału klas, cech, indywiduów ani wartości danych. OWL DL
kładzie nacisk na mieszanie z RDF i wymaganymi rozłączeniami klas, cech,
indywiduów i wartości danych. Głównym powodem stworzenia OWL DL
podjęzykiem jest to, że narzędzia jego budowy mają
rozwiniętą moc wnioskowania systemów, które wspierają
ontologie przymusu poprzez wymagane restrykcje dla OWL DL. Dla formalnych definicji
różnic pomiędzy OWL Full i OWL DL odsyła się czytelnika do
dokumentu Semantyka i lista składni [OWL
S&AS]. Rozdział 8.2 "OWL DL"
podsumowującego różnice pomiędzy OWL Full i OWL DL.
OWL Lite jest podjęzykiem OWL DL, który wspiera jedynie podzbiór
konstrukcji języka OWL. OWL Lite jest w szczególności zaprojektowany
jako twórca narzędzi wspierających OWL, ale chcą zacząć
od stosunkowo prostego, podstawowego zbioru cech języka. OWL Lite posiada tą
samą semantyczną restrykcję co OWL DL, pozwalającą na
wnioskowanie mechaniczne gwarantujące pewne pożądane
własności. Podsumowanie konstrukcji językowych dozwolonych w OWL Lite
zawarte jest w Rozdział 8.3. W celu uzyskania większej
ilości opisów formalnych podzespołu konstrukcji języka OWL
wspieranego przez OWL Lite czytelnik kierowany jest do dokumentu Semantyka i lista
składni [OWL S&AS].
UWAGA: Użytkownicy RDF przechodzący na OWL powinni
pamiętać, że OWL Lite nie jest po prostu rozszerzeniem RDF Schema. OWL
Lite jest okrojoną wersją OWL DL i kładzie nacisk na używanie
słownictwa RDF (np., rozdziału klas, cech, itd.). OWL Full jest
zaprojektowany w kierunku maksymalnej kompatybilności z RDF, więc jest
naturalnym punktem startowym dla użytkowników RDF. Wybierając jeden z:
OWL DL lub OWL Lite powinniśmy zastanowić się czy korzyści OWL
DL/Lite (np., wsparcie wnioskowania) przeważa nad ograniczeniami DL/Lite
w użyciu OWL i konstrukcji RDF.
UWAGA: OWL Lite jest definiowany w tym dokumencie jako ilość
dodatkowych ograniczeń w OWL DL. To oznacza, że konstrukcje OWL DL są
także częścią OWL Lite, chyba, że zostaną
wyraźnie określone w inny sposób. Rozdział
8.3 dostarcza podsumowania uzupełnień restrykcji OWL Lite.
1.3 OWL składnia
Ontologia OWL jest grafem RDF [RDF
Pojęcia], który jest zbiorem trójek RDF. Tak jak
każdy graf RDF, graf ontologii OWL może być zapisany w wielu
różnych formach składniowych(jak zapis w RDF/XML Specyfikacja
składni (rewidowana) [RDF/XML
Składnia]). Bieżący dokument używa niektórych
specyficznych form składniowych RDF/XML w celu przedstawienia trójek (jak
zrobiono w Przewodniku). Jakkolwiek, znaczenie ontologii OWL jest zdeterminowane
wyłącznie przez graf RDF. Tak więc, dozwolone jest używanie innych
form składni RDF/XML, tak długo, jak te wyniki są takie same jak
poniższy zbiór trójek RDF.
Jako prosty przykład alternatywnej formy składniowej będącej
rezultatem tej samej trójki RDF, rozważmy następującą
składnię RDF/XML:
<owl:Class rdf:ID="Continent"/>
Kolejna składnia RDF/XML:
<rdf:Description rdf:about="#Continent">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>
koduje tą samą grupę trójek RDF i dlatego przekazuje to samo
znaczenie.
1.4 Składnie OWL i RDF
OWL jest rozszerzonym zasobem słów RDF [RDF Semantyka]. A więc każde formy graficzne
RDF ontologii OWL Full. Dodatkowo, znaczenie nadane grafowi RDF przez OWL zawiera
znaczenie nadane grafowi przez RDF. Ontologie OWL Full mogą więc
zawierać arbitralną treść RDF, która jest traktowana w
sposób zgodny z jego traktowaniem przez RDF. OWL wyznacza uzupełniające
znaczenia dla pewnych potrójnych RDF. Semantyka i lista składni OWL
[OWL S&AS] dokładnie
specyfikują, które trójki mają wyznaczone określone
znaczenie i czym ono jest.
UWAGA: Jak zauważono wcześniej, OWL DL i OWL Lite poszerza
słownik RDF, ale także nakłada ograniczenia używania tego zasobu
słów. W następstwie czego dokumenty RDF generalnie będą w
OWL Full chyba, że zostaną one szczególnie skonstruowane do
użycia w OWL DL lub Lite.
Dla czytelności celów przykładów w niniejszym dokumencie
przyjmujemy podmioty XMLa &rdf;, &rdfs;,
&owl; i &xsd; (dla typów danych XML Schema)
są zdefiniowane w ten sam sposób jako Załącznik
B. Te same założenia stosowane są dla korespondujących
przestrzeni nazw rdf:, rdfs:, owl: and
xsd:.
Przykłady zawarte w niniejszym dokumencie mają służyć jako
zobrazowanie użycia konstrukcji języka OWL. Nie mają one jednej
konsekwentnej ontologii. Dla szerszych przykładów czytelnik odsyłany
jest do Przewodnika. [OWL Przewodnik].
Zdolności OWL do wyrażania informacji ontologicznych o indywiduach
pojawiających się w wielu dokumentach wspierających łączenie
danych z różnych źródeł w podstawowy sposób.
Podstawowa semantyka zapewnia wsparcia dla wnioskowania o tych danych, które
mogą przynieść nieoczekiwane rezultaty. W szczególności,
możliwość wyrażenia równoważności
używając owl:sameAs może zostać
użyty, by stwierdzić, że pozornie inne indywidua są
właściwie identyczne. Podobnie, owl:InverseFunctionalProperty może
zostać użyty, by łączyć indywidua ze sobą. Na
przykład jeżeli własność taka jak
SocialSecurityNumber jest owl:InverseFunctionalProperty, wtedy
dwa oddzielne indywidua mogłyby zostać wywnioskowane jako identyczne
bazując na posiadaniu tej sam wartości danej własności. Kiedy
indywidua są określone jako takie same w tym znaczeniu, informacje o nich z
różnych źródeł mogą być połączone. Ta
agregacja może być użyta do określenia faktów,
które nie są bezpośrednio reprezentowane przez żadne
pojedyncze źródła.
Zdolność Semantycznej Sieci, by łączyć informacje z
różnych źródeł jest pożądaną i
potężną cechą, która może zostać użyta
w wielu aplikacjach. Jakkolwiek, zdolność łączenia danych z
różnych źródeł, zmieszana z dedukcyjną siłą
OWL, posiada potencjał do nadużyć. Może być nawet
nielegalne tworzenie lub przetwarzanie tak połączonych informacji w krajach z
prawami ochrony danych, szczególnie w UE, nie mając ważnych prawnych
powód dla takiego przetwarzania. Dlatego powinna być stosowana wielka
ostrożność podczas używania OWL z jakimkolwiek rodzajem danych
osobowych, które mogłyby zostać łączone z innymi
źródłami danych lub ontologiami. Szczegółowe
rozwiązania z zakresu bezpieczeństwa zostały rozważone dla Grupy
roboczej. Praca będąca aktualnie w toku gdzie indziej oczekuje się
zaadresowania jej zagadnień z różnorodnością
bezpieczeństwa i rozwiązań preferencyjnych -- patrz przykład
SAML i P3P
Dokument ten posiada zbiór załączników zawierających
uzupełniające informacje.
Linki w tym dokumencie, które są załączone do definicji budowy
języka dostarczają dostępu do Semantyki i listy składni OWL.
[OWL S&AS]. Załącznik A zawiera systematyczny zbiór związków
dla każdej budowy języka odpowiadających sekcji w Przewodniku i
S&AS.
Załacznik B zawiera schemat RDF do budowy języka OWL.
Schemat ten dostarcza informacji o słownictwie OWL, które mogłoby
być przydatnym punktem odniesienia dla twórców ontologii i
narzędzi. Ograniczenia dostarczone przez schemat w klasach OWL i
własności są informacyjne i niekompletne. Ponadto ten schemat nie robi
rozróżnienia między OWL Full, OWL DL i OWL Lite. Konwencjonalnie
klasy mają pierwszą wielką literę; nazwa własności
zaczyna się od małej litery. A zatem owl:Ontology jest
klasą, a owl:imports jest własnością.
UWAGA: Nie oczekuje się, aby plik RDF Schema dla OWL był
importowany jawnie (tzn., z owl:imports) do ontologii. Schemat ma
status informacyjny i ma na celu dostarczenie klas i własności
używanych w składni RDF/XML. Ludzie, którzy importują ten schemat
powinni spodziewać się, że wynikająca z tego ontologia jest
ontologią OWL Full.
Załącznik C daje tabelaryczny przegląd
słownictwa OWL pod względem wbudowanych klas OWL i własności (ten
drugi ze swoją dziedziną i zakresem).
Dla czytelników zaznajomionych z DAML+OIL, Załącznik
D sporządza listę wielu zmian pomiędzy DAML+OIL i OWL.
Wreszcie, Załącznik E dostarcza zbioru
praktycznych instrukcji dla wyszczególnionych ontologii OWL DL w RDF.
2. Dokument OWL
Informacje w OWL są gromadzone w ontologiach, które później
mogą być przechowywane jako dokumenty w Ogólnoświatowej Sieci.
Jeden z aspektów OWL, importowanie ontologii, jest zależny od
możliwości przechowywania ontologii OWL w Sieci.
Dokument OWL zawiera opcjonalnie nagłówki ontologii
(najwyżej jeden) oraz jakąkolwiek liczbę aksjomatów klas, aksjomatów
własności, i faktów o indywiduach.
Proszę zauważyć, że "aksjomat" jest formalnym terminem
używanym w dokumencie S&AS. Te aksjomaty są nieco bardziej nieformalnie
nazwanymi "definicjami" w Przewodniku i Przeglądzie.
UWAGA: OWL nie narzuca żadnego porządku w komponentach OWL.
Ludzie piszący ontologie zazwyczaj używają pewnego rodzaju
porządkowania, na przykład umieszczając nagłówek ontologii w
początku, ale to nie ma żadnego wpływu na znaczenie. Narzędzia nie
powinny narzucać żadnego porządku.
Tak, jak w przypadku większości dokumentów RDF, kod OWL powinien
być podelementem elementu rdf:RDF. Załączony element
generalnie zawiera przestrzeń nazw XML i bazowe deklaracje. Ponadto dokument
ontologii OWL często rozpoczyna z kilkoma deklaracjami podmiotów. Aby
zobaczyć typowy przykład tego typu informacji, przyjrzyj się
przykładowi ontologii wina i jedzenia omówionych w Przewodniku
[OWL Przewodnik].
Wbudowany zasób słów dla OWL w całości pochodzi z
przestrzeni nazw OWL
http://www.w3.org/2002/07/owl#
konwencjonalnie związany z przestrzenią nazw zwaną owl.
Zaleca się, aby ontologie nie użyły nazw z tej przestrzeni nazw z
wyjątkiem wbudowanego słownictwa. Narzędzia budowy OWL powinny być
swobodne, by zasygnalizować ostrzeżenie, jeśli inne nazwy z tej
przestrzeni nazw są użyte, ale powinien zachowywać się
normalnie.
Grupa Robocza Ontologii Sieciowej nie prosi o oddzielanie typu MIME dla
dokumentów OWL. Zamiast tego, polecamy, by użyć typu MIME wymaganego
przez Grupę Roboczą RDF Core, mianowicie application/rdf+xml
[RDF Pojęcia ], lub alternatywnie typ
MIME XML application/xml.
Jako rozszerzenie nazwy pliku polecamy użyć .rdf albo
.owl.
Klasy dostarczają mechanizmu abstrakcji dla grupowania zasobów z podobnymi
cechami. Jak klasy RDF, każda klasa OWL związana jest ze zbiorem
indywiduów, nazywanych rozszerzenie klasy. Indywidua w rozszerzeniu klasy
są nazwane instancje klasy. Klasa ma zamierzone znaczenie (podstawowe
pojęcie) które jest związane, ale nie równy z jego rozszerzeniem
klasy. W ten sposób, dwie klasy mogą mieć to samo rozszerzenie klasy,
ale nadal być innymi klasami.
Kiedy w tym dokumencie używamy sformułowania takiego jak "klasa
indywiduów ...", powinno to zostać przeczytane jako "klasa z rozszerzeniem
klasy zawierającym indywidua ..."
UWAGA: W OWL Lite i OWL DL indywiduum nie mogą być nigdy w tym
samym czasie klasą: klasy i indywidua z rozłącznych dziedzin (jak
również własności i wartości danych). OWL Full daje
dowolność RDF Schema: klasa może spełniać funkcję
instancji innej (meta)klasy.
Klasy OWL są opisane przez "opis klas", które mogą być
włączone do "aksjomatów klas". Najpierw opiszemy opisy klas,
następnie sklasyfikujemy aksjomaty.
Opis klasy jest okresem używanym w tym dokumencie (i w Semantyce i liście
składni OWL) dla podstawowych części składowych aksjomatów
klasy (nieformalnie nazwanych definicją klasy w Przeglądzie i Przewodniku).
Opis klasy opisuje klasę OWL, albo przez nazwę klasy, albo przez
wyszczególnienie rozszerzenia nienazwanej anonimowej klasy.
OWL odróżnia sześć typów opisów klasy:
- identyfikator klasy (referencja URI)
- wyczerpujące wyliczenie indywiduów,
które razem tworzą instancje klasy
- ograniczenia własności
- koniunkcja dwóch lub więcej
opisów klasy
- suma dwóch lub więcej opisów
klasy
- dopełnienie opisu klasy
Pierwszy typ jest specjalny w sensie, że opisuje klasę przez
nazwę klasy (składniowo reprezentowane jako referencja URI). Innych
pięć typów klasy opisy opisują anonimową klasę
ograniczenia miejsca na rozszerzeniu klasy.
Opisy klas typu 2-6 kolejno, klasa, która zawiera dokładnie wymienione
indywidua (2-gi typ), klasa wszystkich indywiduów, które
spełniają szczególne własności, ograniczenia (3-ci typ) lub
klasa, która spełnia kombinacje boolowskie opisów klas (4-ty, 5-ty i
6-ty typ). Koniunkcja, suma i dopełnienie może być odpowiednio
zobaczona jako logiczne operatory AND, OR i NOT. Cztery ostatnie opisy typów klas
prowadzą do zagnieżdżania się opisów klas i ten
sposób w teorii prowadzi do arbitrażowego opisu
złożoności klas. W praktyce poziom zagnieżdżania
się zwykle jest ograniczony.
Opis klasy typu pierwszego jest reprezentowany składniowo jako nazwana instancja
owl:Class, podklasy rdfs:Class:
<owl:Class rdf:ID="Human"/>
To zapewni trójkę "ex:Human rdf:type owl:Class.", gdzie
ex: jest przestrzenią nazw bieżących ontologii.
UWAGA: W OWL Lite i OWL DL, owl:Class (lub
owl:Restriction, patrz dalej) musi zostać użyty dla wszystkich
opisów klasy.
UWAGA: owl:Class jest zdefiniowany jako podklasa
rdfs:Class. Powody dla posiadania oddzielnej budowy klas OWL
leżą w ograniczeniach OWL DL (i zatem również na OWL
Lite),które sugerują, że nie wszystkie klasy RDFS są legalną
klasą OWL DL. W OWL Full te ograniczenia nie istnieją i dlatego
owl:Class i rdfs:Class są równoważnikami w
OWL Full.
Pozostałe pięć form opisów klas składają się
ze zbioru trójek RDF, w których pusty węzeł reprezentuje
opisywaną klasę. Ten pusty węzeł ma własność
rdf:type, która ma wartość owl:Class.
UWAGA: Jeżeli dostarcza to identyfikator RDF dla opisów
klasy typu wyliczenie, koniunkcja, suma lub dopełnienie, to nie jest to traktowane
jako opis klasy, ale jako specjalny rodzaj aksjomatu klasy dla kompletnych klas. Bardziej
szczegółowe informacje znajdziesz w Rozdział
3.2.3
UWAGA: W tym dokumencie czasami używamy dla celów
czytelności skrótu "opisu klasy", który odnosi się do "klasa
opisana przez opis klasy". ściślej mówiąc, są one
różne w przypadku opisów klas typu 2-6: klasa jest reprezentowana
przez odpowiedni pusty węzeł; opis klasy jest reprezentowany przez
trójki, które mają taki pusty węzeł jako swój
temat.
Dwa identyfikatory klasy OWL są predefiniowane, mianowicie klasy owl:Thing i
owl:Nothing .
Rozszerzenie klasy owl:Thing jest zbiorem wszystkich indywiduów.
Rozszerzenie klasy owl:Nothing jest zbiorem pustym. W konsekwencji,
każda klasa OWL jest podklasą owl:Thing i
owl:Nothing jest podklasą każdej klasy (dla znaczenia relacji
podklasy, zobacz rozdział rdfs:subClassOf).
Opis klasy rodzaju "wyliczenie" jest
zdefiniowany własnością owl:oneOf
Wartość tej wbudowanej własności OWL musi być listą
indywiduów, które są instancjami klasy. To
umożliwia opis klasy za pomocą wyczerpującego wyliczenia jej instancji.
Rozszerzenie klasy przez opis klasy z owl:oneOf zawierającym
dokładnie wymienione indywidua, nie mniej, nie więcej. Lista indywiduów
jest typowo reprezentowana za pomocą konstrukcji RDF
rdf:parseType="Collection", które dostarczają dogodnych
skrótów do dopisania zbioru elementów listy. Na przykład
następująca składnia RDF/XML definiuje klasę wszystkich
kontynentów:
<owl:Class>
<owl:oneOf rdf:parseType="Collection">
<owl:Thing rdf:about="#Eurasia"/>
<owl:Thing rdf:about="#Africa"/>
<owl:Thing rdf:about="#NorthAmerica"/>
<owl:Thing rdf:about="#SouthAmerica"/>
<owl:Thing rdf:about="#Australia"/>
<owl:Thing rdf:about="#Antarctica"/>
</owl:oneOf>
</owl:Class>
Składnia RDF/XML <owl:Thing rdf:about="..."/> odnosi się
do niektórych indywiduów (zapamiętaj: wszystkie indywidua są
instancjami definicji owl:Thing).
W rozdziale o typach danych zobaczymy inne użycie konstrukcji
owl:oneOf, mianowicie do definiowania wyliczenia wartości danych.
UWAGA: Wyliczenie nie jest częścią OWL Lite
Własność ograniczenia jest specjalnym rodzajem opisu klasy. Opisuje
on anonimową klasę, czyli klasę wszystkich indywiduów,
które spełniają warunki ograniczenia. OWL rozróżnia dwa
rodzaje ograniczeń własności: ograniczenie wartości i
ograniczenie mocy zbioru.
Ograniczenie wartości kładzie ograniczenia
na zakresie własności kiedy odnosi się do tego szczególnego
opisu klasy. Na przykład, moglibyśmy zechcieć odnieść
się do tego indywiduum, którego wartość własności
adjacentTo powinna być jakimiś Region, i wtedy
użyć tego w aksjomacie klasy, może nawet aksjomat klasy dla samego
Region. Zauważ, że jest to inne niż
rdfs:range, które odnosi się do wszystkich sytuacji, w
których własność jest użyta.
Ograniczenia mocy zbioru kładzie
ograniczenia na liczbę wartości, które własność
może przyjąć, w kontekście tego szczególnego opisu
klasy. Na przykład moglibyśmy zechcieć powiedzieć, że
dla drużyny piłki nożnej hasPlayer
własność posiada 11 wartości. Dla zespołu koszykówki
ta sama własność miałaby tylko 5 wartości.
OWL również wspiera ograniczony zbiór konstrukcji do definiowania
globalnej mocy zbioru własności, mianowicie owl:FunctionalProperty i owl:InverseFunctionalProperty (patrz rozdział o
własnościach).
Ograniczenia własności mają następującą
ogólną formę:
<owl:Restriction>
<owl:onProperty rdf:resource="(some property)" />
(precisely one value or cardinality constraint, see below)
</owl:Restriction>
Klasa owl:Restriction
jest definiowana jako podklasa owl:Class. Klasa
ograniczenia powinna mieć dokładnie jedną trójkę
łączącą ograniczenie do określonej własności,
używając owl:onProperty
własności. Klasa ograniczenia powinna również mieć
dokładnie jedną trójkę do reprezentacji ograniczeń
wartości c.q. ograniczenie mocy zbioru na własności obecnie
rozważane, np., że moc zbioru własności ma
dokładnie wartość 1.
Ograniczenia własności mogą zostać stosowane dla obu własności typu danych (własności, dla
których wartość jest formalną daną) i własności obiektu (własności, dla
których wartość jest indywiduum). Aby uzyskać więcej
informacji o tym rozróżnieniu, zobacz rozdział własności.
Ograniczenie wartości owl:allValuesFrom
jest wbudowaną własnością OWL, która łączy
klasę ograniczeń z jedną z dwóch: opisem klasy lub zakresem danych.
Ograniczenie zawierające owl:allValuesFrom ograniczenie jest
użyte, by opisać klasę wszystkich indywiduów, dla
których wszystkie wartości własności obecnie rozważanych
są albo elementem rozszerzenia klasy opisu klasy, albo wartościami danych w
wyszczególnionym zakresie danych. Innymi słowy, definiuje to klasę
indywiduów x, która oznacza, że jeśli para (x, y) jest
instancją P (własność przechodnia), wtedy y powinien być
instancją opisu klasy lub zakresu wartości danych.
Prosty przykład:
<owl:Restriction>
<owl:onProperty rdf:resource="#hasParent" />
<owl:allValuesFrom rdf:resource="#Human" />
</owl:Restriction>
Ten przykład opisuje anonimową klasę OWL wszystkich indywiduów,
dla których hasParent własność ma tylko
wartości klasy Human. Zauważ, że ten opis klasy nie
stwierdza, że własność zawsze ma wartości z tej klasy; jest
to prawdziwe tylko dla indywiduów, które należą do rozszerzenia
klasy ograniczenia anonimowej klasy .
UWAGA: W OWL Lite jedynym dozwolonym typem opisu klasy dla obiektu
owl:allValuesFrom jest nazwa klasy.
Ograniczenie owl:allValuesFrom jest
analogiczne do uniwersalnego kwantyfikatora logiki predykatów, dla każdej
instancji klasy, która jest opisywana, każda wartość P musi
spełnić ograniczenie. Również zauważ, że
zgodność owl:allValuesFrom z
uniwersalnym kwantyfikatorem oznacza, że owl:allValuesFrom ograniczenie dla własności P
jest trywialnie spełnione dla indywiduum, które nie ma żadnych
wartości dla własności P. Aby zobaczyć dlaczego tak jest
zauważ, że owl:allValuesFrom
ograniczenia żądania dla wszystkich wartości P powinny być typu
T, i jeżeli żadne takie wartości nie istnieją, ograniczenie jest
trywialnie prawdziwe.
Ograniczenie wartości owl:someValuesFrom
jest wbudowaną własnością OWL, która łączy
klasę ograniczeń z opisem klasy lub zakresem danych. Ograniczenie zawierające
owl:someValuesFrom opisuje klasę wszystkich indywiduów, dla
których co najmniej jedna wartość interesującej nas
własności jest instancją opisu klasy lub wartości danych w zakresie
danych. Innymi słowy, to definiuje klasę indywiduów x, dla
których jest co najmniej jeden y (instancja opisu klasy albo wartość
zasięgu danych) taki, którego para (x, y) jest instancją P. To nie
wyklucza, że są inne instancje (x, y')P dla których y' nie
należy do opisu klasy lub zasięgu danych.
Następujący przykład definiuje klasę indywiduów,
które mają co najmniej jednego rodzica który jest lekarzem:
<owl:Restriction>
<owl:onProperty rdf:resource="#hasParent" />
<owl:someValuesFrom rdf:resource="#Physician" />
</owl:Restriction>
Ograniczenie owl:someValuesFrom jest
analogiczne do uniwersalnego kwantyfikatora logiki predykatów, dla każdej
instancji klasy, która jest definiowana, istnieje co najmniej jedna
wartość P, która spełnia ograniczenie.
UWAGA: W OWL Lite jedynym dozwolonym typem opisu klasy obiektu
owl:someValuesFrom jest nazwa klasy.
Ograniczenie wartości owl:hasValue
jest wbudowaną własnością OWL, która łączy
klasę ograniczeń do wartości V, która może być
either własnością lub wartością danych. Ograniczenia zawierają
owl:hasValue ograniczenie opisuje klasę wszystkich indywiduów,
dla których co najmniej jedna wartość semantycznie
równa jest V (może mieć również inne
wartości).
UWAGA: dla typu danych "semantycznie równy" oznacza, że
leksykalna reprezentacja literału sporządza mapę do tej samej
wartości. Dla indywiduów oznacza to, że albo mają ten sam
odnośnik URI lub są zdefiniowane jako to samo indywiduum (patrz owl:sameAs).
UWAGA: ograniczenie wartości owl:hasValue nie jest
zawarte w OWL Lite.
Poniższy przykład opisuje klasę indywiduów, które
mają odniesienie do indywiduum Clinton jako ich rodzica:
<owl:Restriction>
<owl:onProperty rdf:resource="#hasParent" />
<owl:hasValue rdf:resource="#Clinton" />
</owl:Restriction>
W OWL, jak w RDF, zakłada się, aby każda instancja klasy mogła
mieć arbitralny numer (zero lub więcej) wartości dla szczególnej
własności. Aby ustanowić wymaganą własność (co
najmniej jedną), należy pozwolić tylko określonemu numerowi
wartości dla danej własności lub żądać, aby
wartość nie pojawiła się, ograniczenia mocy zbioru mogą
zostać użyte. OWL dostarcza trzech konstrukcji dla ograniczania mocy zbioru
własności lokalnie w kontekście klasy.
UWAGA: OWL Lite zawiera użycie wszystkich trzech typów
ograniczeń mocy zbioru, ale tylko kiedy użyty z wartościami "0" lub
"1".
Ograniczenie mocy zbioru owl:maxCardinality
jest wbudowaną własnością OWL, która łączy
klasę ograniczeń z wartościami danych należącymi do
przestrzeni wartości typów danych XML Schema
nonNegativeInteger. Ograniczenie zawierające
owl:maxCardinality opisuje klasę wszystkich indywiduów,
które mają najwyżej N semantycznie odmiennych wartości
(indywidua lub wartości danych) interesujących wartości, gdzie N jest
wartością ograniczenia mocy zbioru. Składniowo, ograniczenie mocy zbioru
jest reprezentowane jako własność elementu RDF z odpowiednimi cechami
rdf:datatype.
Następny przykład opisuje klasę indywiduów, które
mają najwyżej dwóch rodziców:
<owl:Restriction>
<owl:onProperty rdf:resource="#hasParent" />
<owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">2</owl:maxCardinality>
</owl:Restriction>
Typy danych RDF są omówione bardziej szczegółowo w Rozdziale 6.
Ograniczenie mocy zbioru owl:minCardinality
jest wbudowaną własnością OWL, która łączy
klasę ograniczeń z wartościami danych należącymi do
przestrzeni wartości typów danych XML Schema
nonNegativeInteger. Ograniczenie zawierające
owl:maxCardinality (opis ograniczeń) ograniczenie opisuje klasę
wszystkich indywiduów, które mają co najmniej N semantycznie
odmiennych wartości (indywidua lub wartości danych) interesujących
wartości, gdzie jest N wartością ograniczenia mocy zbioru.
Składniowo, ograniczenie mocy zbioru jest reprezentowane jako
własność elementu RDF z odpowiednimi cechami
rdf:datatype.
Następny przykład opisuje klasę indywiduów, które
mają co najmniej dwóch rodziców:
<owl:Restriction>
<owl:onProperty rdf:resource="#hasParent" />
<owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">2</owl:minCardinality>
</owl:Restriction>
Zauważ, że jedno lub więcej owl:minCardinality
oznacza, że wszystkie instancje klasy muszą mieć wartość
dla własności.
Ograniczenie mocy zbioru owl:cardinality
jest wbudowaną własnością OWL, która łączy
klasę ograniczeń z wartościami danych należącymi do
przestrzeni wartości typów danych XML Schema
nonNegativeInteger. Ograniczenie zawierające
owl:cardinality (opis ograniczeń) ograniczenie opisuje klasę
wszystkich indywiduów, które mają dokładnie N
semantycznie odmiennych wartości (indywidoów lub wartości danych)
interesujących wartości, gdzie jest N wartością ograniczenia mocy
zbioru. Składniowo, ograniczenie mocy zbioru jest reprezentowane jako
własność elementu RDF z odpowiednimi cechami
rdf:datatype.
Ta konstrukcja jest w zasadzie nadmiarowa, ponieważ zawsze może
zostać zastąpiona przez parę owl:minCardinality i owl:maxCardinality ograniczonych przy pomocy tej
samej wartości. Zawiera to dogodny skrót dla użytkownika.
Następny przykład opisuje klasę indywiduów, które
mają dokładnie dwóch rodziców:
<owl:Restriction>
<owl:onProperty rdf:resource="#hasParent" />
<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">2</owl:cardinality>
</owl:Restriction>
Trzy typy opisów klasy w tym rozdziale reprezentują bardziej zaawansowane
konstrukcje budowy klasy, które są użyte w Logice opisu. Mogą
zostać one zbadane, ponieważ reprezentują operatory AND, OR i NOT w
klasach. Te trzy operatory zapewniają standardowe nazwy zbiór-operator:
koniunkcja, suma i dopełnienie. Te konstrukcje języka również
dzielą się charakterystycznie tak, że zawierają
zagnieżdżone opisy klas albo jednej (dopełnienie) albo większej
ilości (suma, koniunkcja).
Własność owl:intersectionOf
łączy klasę z listą opisów
klasy. Stwierdzenie owl:intersectionOf opisuje klasę, dla
której rozszerzenie klasy zawiera dokładnie te indywidua, które
są elementami rozszerzenia klasy wszystkich opisów klasy na liście.
Przykład:
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class>
<owl:oneOf rdf:parseType="Collection">
<owl:Thing rdf:about="#Tosca" />
<owl:Thing rdf:about="#Salome" />
</owl:oneOf>
</owl:Class>
<owl:Class>
<owl:oneOf rdf:parseType="Collection">
<owl:Thing rdf:about="#Turandot" />
<owl:Thing rdf:about="#Tosca" />
</owl:oneOf>
</owl:Class>
</owl:intersectionOf>
</owl:Class>
W tym przykładzie wartość owl:intersectionOf jest
listą opisów dwóch klas, mianowicie dwóch wyliczeń, oba
opisują klasy z dwoma indywiduami. Wynikową koniunkcją jest klasa z jednym
indywiduum, mianowicie Tosca., ponieważ to jest jedyne indywiduum,
które jest wspólne dla obu wymienień.
UWAGA: Zakłada to, że wszystkie trzy indywidua są
różne. Prawdę mówiąc, w OWL nie jest to prawdziwe w
świetle definicji . Różne odnośniki URI mogą odnosić
się do tych samych indywiduów, ponieważ OWL nie ma
założonych "unikalnych nazw". W Rozdziale 5
można znaleźć konstrukcje języka OWL do tworzenia
ograniczeń równości i różności
indywiduów.
UWAGA: W przykładzie używamy wyliczeń, aby
wyjaśnić jakie znaczenie ma ta konstrukcja języka. Więcej
typowych przykładów znajdziesz w Przewodniku OWL [OWL Przewodnik].
UWAGA: OWL Lite jest ograniczony w użyciu
owl:intersectionOf. Jest to omówione w kolejnych rozdziałach
tego dokumentu, patrz Rozdział 3.2.3
owl:intersectionOf może być postrzegane jako analogiczne do
logicznej koniunkcji.
Własność owl:unionOf
łączy klasę z listą opisów
klasy. Stwierdzenie owl:unionOf opisuje anonimową klasę, dla
której rozszerzenie klasy zawiera te indywidua, które występują
w co najmniej jednym z rozszerzeń klasy opisów klasy na liście.
Przykład:
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Class>
<owl:oneOf rdf:parseType="Collection">
<owl:Thing rdf:about="#Tosca" />
<owl:Thing rdf:about="#Salome" />
</owl:oneOf>
</owl:Class>
<owl:Class>
<owl:oneOf rdf:parseType="Collection">
<owl:Thing rdf:about="#Turandot" />
<owl:Thing rdf:about="#Tosca" />
</owl:oneOf>
</owl:Class>
</owl:unionOf>
</owl:Class>
Ten opis klasy opisuje klasę, dla której rozszerzenie klasy zawiera trzy
indywidua, mianowicie Tosca, Salome i Turandot
(zakładamy, że wszystkie są różne).
UWAGA: owl:unionOf nie jest częścią OWL
Lite.
owl:unionOf jest analogiczne do logicznej
rozłączności.
Własność owl:complementOf
dołącza klasę do dokładnie jednego opisu
klasy. Stwierdzenie owl:complementOf opisuje klasę, dla
której rozszerzenie klasy zawiera dokładnie te indywidua, które
nie należą do rozszerzenia klasy opisu klasy, który to jest
przedmiotem stwierdzenia. owl:complementOf jest analogiczny do logicznej
negacji: rozszerzenie klasy składa się z tych indywiduów, które
NIE są elementami rozszerzenia klasy klasy dopełnienia.
Jako przykład użycia dopełnienia, wyrażenia "nie mięso"
może zostać zapisane jako:
<owl:Class>
<owl:complementOf>
<owl:Class rdf:about="#Meat"/>
</owl:complementOf>
</owl:Class>
Rozszerzenie tego opisu klasy zawiera wszystkie indywidua, które nie
należą do klasy Meat.
UWAGA: owl:complementOf nie jest częścią
OWL Lite.
Opisy klasy tworzą części składowe dla definiowanych klas
poprzez aksjomaty klasy. Najprostsza forma aksjomatu klasy jest opisem klasy typu 1.
Stwierdza to jedynie istnienie klasy, używając owl:Class z identyfikatorem klasy.
Na przykład następny aksjomat klasy oznajmia odniesienie URI
#Human będące nazwą klasy OWL.
<owl:Class rdf:ID="Human"/>
To jest poprawny OWL, ale nie mówi nam wiele na temat klasy Human.
Aksjomaty klasy typowo zawierają dodatkowe komponenty, które
zakładają konieczną i/lub wystarczającą charakterystykę
klas. OWL zawiera trzy konstrukcje języka, aby połączyć opisy klasy
z aksjomatami klasy:
rdfs:subClassOf pozwala, by
powiedzieć, że rozszerzenie klasy opisu klasy jest podzbiorem rozszerzenia
klasy innego opisu klasy.
owl:equivalentClass pozwala, by
powiedzieć, że opis klasy ma dokładnie to samo rozszerzenia klasy co
inny opis klasy.
owl:disjointWith pozwala, by
powiedzieć, że rozszerzenie klasy opisu klasy nie ma żadnych
elementów wspólnych z rozszerzenie innego opisu klasy.
Składniowo te trzy konstrukcje językowe są własnościami,
które mają opis klasy jako zarówno dziedzina, jak i zakres. Omawiamy
te własności bardziej szczegółowo w następnych
podrozdziałach.
Ponadto OWL pozwala aksjomatom klasy, w których opis klasy wyliczeń lub
typu zbiór-operator nadawać nazwy. Aksjomaty klasy semantycznie
równoważne aksjomatom klas ze stwierdzeniem
owl:equivalentClass będą omówione szerzej w
następnym podrozdziale (patrz Rozdział 3.2.3
"Aksjomaty dla kompletnych klas bez użycia owl:equivalentClass").
SCHEMAT AKSJOMATU: opis klasy rdfs:subClassOf
opis klasy
Konstrukcja rdfs:subClassOf definiowana jest jako część
RDF Schema [RDF Słownictwo]. Jego
znaczenie w OWL jest dokładnie tym samym: jeżeli opis klasy C1 jest
zdefiniowany jako podklasa opisu klasy C2, wtedy zbiór indywiduów w
rozszerzeniu klasy C1 powinien być podzespołem zbioru indywiduów w
rozszerzeniu klasy C2. Klasa jest z definicji podklasą dla siebie samej (jako
podzbiór może być kompletnym zbiorem).
Przykład:
<owl:Class rdf:ID="Opera">
<rdfs:subClassOf rdf:resource="#MusicalWork" />
</owl:Class>
Ten aksjomat klasy deklaruje relację podklasy między dwiema klasami OWL,
które są opisane przez ich nazwy (Opera i
MusicalWork). Relacje podklas dostarczają koniecznych warunków
dla przynależenia do klasy. W tym przypadku, aby być operą indywiduum
musi również być dziełem muzycznym.
UWAGA: W OWL Lite parametr stwierdzenia rdfs:subClassOf musi
być identyfikatorem klasy. Obiekt musi być albo identyfikatorem klasy albo
ograniczeniem własności.
Dla każdej klasy może być jakakolwiek liczba aksjomatów
subClassOf. Na przykład moglibyśmy dodać następny aksjomat o
klasie Opera:
<owl:Class rdf:about="#Opera">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasLibrettist" />
<owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
Ten aksjomat klasy zawiera ograniczenie własności. Przykład stwierdza,
że Opera jest podklasą anonimowej klasy OWL (zapamiętaj:
owl:Restriction jest podklasą
owl:Class) która ma jako rozszerzenie klasy zbiór wszystkich
indywiduów, dla których własność
hasLibrettist ma co najmniej jedną wartość. A zatem opery
powinny mieć co najmniej jedno libretto.
Aksjomaty klas mogą być bardziej złożone, gdy opisy klasy
są zagnieżdżone. Na przykład ograniczenia własności
stwierdzenia owl:allValuesFrom lub owl:someValuesFrom mogą wskazywać na
jakikolwiek opis klasy. Rozważ następny przykład:
<owl:Class rdf:ID="TraditionalItalianOpera">
<rdfs:subClassOf rdf:resource="#Opera"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasOperaType"/>
<owl:someValuesFrom>
<owl:Class>
<owl:oneOf rdf:parseType="Collection">
<owl:Thing rdf:about="#OperaSeria"/>
<owl:Thing rdf:about="#OperaBuffa"/>
</owl:oneOf>
</owl:Class>
</owl:someValuesFrom>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
Przykład ten pokazuje użycie konstrukcji owl:oneOf. Aksjomat
klasy definiuje tradycyjną włoską operę jako podklasę klasy
oper, które są typu opera albo opera seria albo opera buffa
(bez dodatkowego ograniczenia mocy zbioru, mogłoby to mieć
właściwie obie wartości).
Więcej przykładów można znaleźć w Przewodniku
[OWL Przewodnik]. Aksjomaty podklasy
dostarczają nam częściowe definicje: reprezentują konieczne, ale
nie wystarczające warunki dla ustanawiania członkostwa klasy indywiduum. W
następnym podrozdziale zobaczymy, że definiowania koniecznych i
wystarczających warunków OWL dostarcza konstrukcja owl:equivalentClass. Jako szczebel do takiego
aksjomatu rozważ następny przykład:
<owl:Class rdf:ID="Operetta">
<rdfs:subClassOf rdf:resource="#MusicalWork"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasLibrettist" />
<owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
</owl:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Class>
<owl:complementOf rdf:resource="#Opera"/>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
Aksjomat tej klasy stwierdza, że operetka jest dziełem muzycznym,
które ma co najmniej jedno libretto i nie jest operą. Użycie relacji
podklasy zostawia możliwość, że są inne dzieła
muzyczne, które mają libretto i nie są operami. Jeżeli
zechcielibyśmy powiedzieć, że operetki są dokładnie
tymi dziełami muzycznymi, które mają libretto, ale nie są operami,
musielibyśmy użyć konstrukcji owl:equivalentClass.
SCHEMAT AKSJOMATU: opis klasy owl:equivalentClass
opis klasy
Aksjomat klasy może zawierać (wielokrotne) wyrażenia owl:equivalentClass.
owl:equivalentClass jest wbudowaną własnością,
która dołącza opis klasy do innego opisu klasy. Znaczenie takiego
aksjomatu klasy jest takie, że dwa opisy klasy złączone ze sobą
mają to samo rozszerzenie klasy (oba rozszerzenia klasy zawierają
dokładnie ten sam zbiór indywiduów).
W jego najprostszej formie aksjomat equivalentClass stwierdza
równoważność (pod względem ich rozszerzenia klasy)
dwóch nazywanych klas. Przykład:
<owl:Class rdf:about="#US_President">
<equivalentClass rdf:resource="#PrincipalResidentOfWhiteHouse"/>
</owl:Class>
UWAGA: Użycie owl:equivalentClass nie oznacza
równości klasy. Równość klas oznacza, że klasy
mają to samo zamierzone znaczenie (oznaczają to samo pojęcie). W
przykładzie powyżej, pojęcie "Prezydent US" jest pokrewne, ale nie
równe, pojęciu głównego mieszkańca pewnej
posiadłości. Prawdziwa równość klasy może tylko
zostać wyrażona konstrukcją owl:sameAs. Ponieważ wymaga to traktowania klas jako
indywiduów, równość klasy może zostać
wyrażona tylko w OWL Full.
Aksjomaty z owl:equivalentClass mogą również
zostać użyte, by zdefiniować wymienioną klasę przez
połączenie 1 typu opisu klasy (identyfikator klasy) do 2 typu opisu klasy
(wyliczenie). Przykład:
<owl:Class rdf:ID="DaPonteOperaOfMozart">
<owl:equivalentClass>
<owl:Class>
<owl:oneOf rdf:parseType="Collection">
<Opera rdf:about="#Nozze_di_Figaro"/>
<Opera rdf:about="#Don_Giovanni"/>
<Opera rdf:about="#Cosi_fan_tutte"/>
</owl:oneOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
Ten aksjomat klasy definiuje klasę oper, które razem reprezentują
"Trans Ponte operas of Mozart", (popularny temat w muzykologii). Przez użycie
konstrukcji equivalentClass możemy określić konieczne i
wystarczające warunki dla liczebności klasy, w tym przypadku
składającej się z wymienionych trzech indywiduów, nie mniej, nie
więcej.
UWAGA: OWL DL nie nakłada żadnych ograniczeń na typy
opisów klasy, które mogą zostać użyte, jako temat i
obiekt stwierdzenia owl:equivalentClass. W OWL Lite temat musi być
nazwą klasy i obiekt musi być albo nazwą klasy albo ograniczeniem
własności.
UWAGA: Chociaż w zasadzie różne typy opisów
klasy są dozwolone jako temat stwierdzenia equivalentClass, w praktyce zazwyczaj
jest to jakiś identyfikator klasy. To jest również prawdziwe dla
przykładów w tym rozdziale.
Możliwe jest posiadanie wielu aksjomatów equivalentClass w tej samej
klasie. Jakkolwiek to wymaga ostrożności. Oba aksjomaty muszą
prowadzić do tego sam rezultatu, dokładnie tego samego rozszerzenia klasy. Na
przykład alternatywny aksjomat equivalentClass dla "Da Ponte operas" Mozarta
mógłby być następujący:
<owl:Class rdf:about="#DaPonteOperaOfMozart">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="#hasComposer"/>
<owl:hasValue rdf:resource="#Wolfgang_Amadeus_Mozart"/>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasLibrettist"/>
<owl:hasValue rdf:resource="#Lorenzo_Da_Ponte"/>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
To stwierdza, że rozszerzenie klasy opera Da Ponte Mozarta odpowiada
dokładnie tym operom, które były skomponowane przez Mozarta i dla
których libretto jest napisane przez Da Ponte (uwaga: koniunkcja = "i"). Ten
aksjomat w rzeczy samej definiuje klasę z dokładnie tą samą
instancją jak poprzedni aksjomat.
UWAGA: Jeżeli chcieliśmy "zaktualizować" aksjomat
formy "A subClassOf B" do "A equivalentClass B" (oznacza to, że rozszerzenie klasy
A nie jest tylko jakimś podzbiorem, ale jest faktycznie tym samym zbiorem
rozszerzenia klasy B), moglibyśmy dodać drugi aksjomat formy subClassOf (B
subClassOf A), który z definicji uczyni dwa rozszerzenia klasy
równoważnymi (i w ten sposób uzyskamy to samo znaczenie dla "A
equivalentClass B"). Takie "cykle" subClassOf są jawnie dozwolone. Ponieważ
OWL jest użyteczny w rozprowadzonym środowisku, może być to
przydatną cechą.
SCHEMAT AKSJOMATU: nazwa opis klasy typu 2 (z
owl:oneOf) lub typu 4 - 6 (z owl:intersectionOf,
owl:unionOf lub owl:complementOf
OWL pozwala użytkownikom zdefiniować aksjomaty klasy przez nadawanie
nazwy opisom klasy wyliczenia lub typu zbiór-operator. Taki aksjomat klasy
definiuje konieczne i wystarczające warunki dla ustanawiania członkostwa klasy.
Przykład:
<owl:Class rdf:ID="DaPonteOperaOfMozart">
<owl:oneOf rdf:parseType="Collection">
<owl:Thing rdf:about="#Nozze_di_Figaro"/>
<owl:Thing rdf:about="#Don_Giovanni"/>
<owl:Thing rdf:about="#Cosi_fan_tutte"/>
</owl:oneOf>
</owl:Class>
Ten aksjomat klasy powinien zostać zinterpretowany następująco:
rozszerzenie klasy dla klasy DaPonteOperaOfMozart jest dokładnie
zdefiniowane przez wyliczenie.
Ten aksjomat klasy jest semantycznie równoważny pierwszemu
przykładowi opery w poprzednim rozdziale, który zawierał dodatkowo
wyrażenie owl:equivalentClass. Aksjomaty tego typu mogą
również zostać zbudowane z owl:intersectionOf,
owl:unionOf i owl:complementOf. Przykład z sumą
mógłby wyglądać tak:
<owl:Class rdf:ID="LivingBeing">
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Plant"/>
<owl:Class rdf:about="#Animal"/>
</owl:unionOf>
</owl:Class>
Ten aksjomat klasy stwierdza, że rozszerzenie klasy LivingBeing
dokładnie odpowiada sumie rozszerzeń klasy Plant i
Animal.
UWAGA: OWL Lite zawiera tylko aksjomaty klasy tego typu, która
jest zbudowana z własnością owl:intersectionOf.
Wartości listy intersectionOf muszą być identyfikatorami klasy i / lub
ograniczeniami własności. Tak więc aksjomaty "kompletnej klasy"
używające wymienienia, dopełnienia i sumy nie są dozwolone w OWL
Lite.
SCHEMAT AKSJOMATU: opis klasy owl:disjointWith
opis klasy
Aksjomat klasy może zawierać (wielokrotnie) wyrażenia. owl:disjointWith.
owl:disjointWith jest wbudowaną własnością OWL z opisem
klasy jako dziedziną i zakresem. Każdy owl:disjointWith
stwierdzenie zapewnia, że rozszerzenia klasy dwóch opisów klasy nie
mają żadnych wspólnych indywiduów . Jak aksjomaty z
rdfs:subClassOf, deklarujące dwie klasy, aby były
rozłączne w częściowej definicji: to narzuca konieczny ale nie
wystarczający warunek na klasę.
Popularny przykład rozłączności klas.
<owl:Class rdf:about="#Man">
<owl:disjointWith rdf:resource="#Woman"/>
</owl:Class>
To, czy jest to rzeczywiście prawdą, jest problemem decyzyjnym dla
biologów. Następny przykład pokazuje najczęstsze użycie
rozłącznych klas w hierarchiach podklasy:
<owl:Class rdf:about="#MusicDrama">
<owl:equivalentClass>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Opera"/>
<owl:Class rdf:about="#Operetta"/>
<owl:Class rdf:about="#Musical"/>
</owl:unionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:about="#Opera">
<rdfs:subClassOf rdf:resource="#MusicDrama"/>
</owl:Class>
<owl:Class rdf:about="#Operetta">
<rdfs:subClassOf rdf:resource="#MusicDrama"/>
<owl:disjointWith rdf:resource="#Opera"/>
</owl:Class>
<owl:Class rdf:about="#Musical">
<rdfs:subClassOf rdf:resource="#MusicDrama"/>
<owl:disjointWith rdf:resource="#Opera"/>
<owl:disjointWith rdf:resource="#Operetta"/>
</owl:Class>
Tutaj owl:disjointWith stwierdza łączne użycie owl:unionOf aby zdefiniować zbiór wzajemnie
rozłącznych i kompletnych podklas superklasy. W naturalnym języku:
każda MusicDrama jest albo Opera, Operetta
lub Musical (podklasa dzieląca jest kompletna) i indywidua
należące do jednej podklasy, np., Opera, nie mogą
należeć do innej podklasy, np., Musical
(rozłączne lub niepokrywające się podklasy). To jest powszechny
pogląd modelowania używany w wielu notacjach modelowania danych.
UWAGA: OWL Lite nie pozwala na używanie
owl:disjointWith.
OWL rozróżnia dwie główne kategorie własności,
ażeby budowa ontologii mogła je zdefiniować:
- Własności obiektu łączą indywidua z
indywiduami.
- Własności typu danych łączą indywidua z
wartościami danych.
UWAGA: OWL również ma pojęcie własności
adnotacji (owl:AnnotationProperty) i własności ontologicznych
(owl:OntologyProperty). Potrzebują one w OWL DL semantycznych przyczyn.
Patrz Rozdział 7 i OWL Semantyka i lista składni
[OWL S&AS].
Własność postaci jest zdefiniowana jako instancja wbudowanej klasy
OWL owl:ObjectProperty
. Własność typu danych jest zdefiniowana jako przykład wbudowanej
klasy OWL owl:DatatypeProperty.
Obie owl:ObjectProperty i owl:DatatypeProperty są
podklasami klasy RDF rdf:Property (patrz Załącznik
B).
UWAGA: W OWL Full, własności obiektów i
własności typów danych są nierozłączne. Ponieważ
wartości danych mogą zostać potraktowane jako indywidua,
własności typów danych są skutecznymi podklasami
własności obiektu. W OWL Full owl:ObjectProperty jest
równoważny do rdf:Property W praktyce głównie ma
to konsekwencje dla użycia z owl:InverseFunctionalProperty. Zobacz
także charakteryzacja OWL Full w Rozdziale 8.1.
Aksjomat własności definiuje cechy charakterystyczne własności.
W jego najprostszej formie, aksjomat własności definiuje tylko istnienie
własności, na przykład:
<owl:ObjectProperty rdf:ID="hasParent"/>
To definiuje własność z ograniczeniem, że jego wartości
powinny być indywiduami.
Często aksjomaty własności definiują dodatkowe cechy
charakterystyczne własności. OWL wspiera następujące konstrukcje
dla aksjomatów własności:
- konstrukcja RDF Schema:
rdfs:subPropertyOf, rdfs:domain i
rdfs:range
- relacje wobec innych własności:
owl:equivalentProperty i
owl:inverseOf
- globalne ograniczenia mocy zbioru:
owl:FunctionalProperty i
owl:InverseFunctionalProperty
- logiczne cechy charakterystyczne własności:
owl:SymmetricProperty i owl:TransitiveProperty
W następnych podrozdziałach różne typy aksjomatów
własności są omówione w szczegółach.
UWAGA: W tym rozdziale używamy terminu "rozszerzenie
własności" w podobnym stylu do "rozszerzenia klasy". Rozszerzenie
własności jest zbiorem instancji to jest zrzeszonych z
własnością. Instancje własności nie są pojedynczymi
elementami, ale parami podmiot-obiekt stwierdzającymi własność. W
relacyjnych bazach danych termin własności instancji nazywałby się
"krotką" binarnej relacji (własności).
Konstrukcje w tym rozdziale omówione są szczegółowo w RDF
Schema [RDF Słownictwo]. Opis w tym
rozdziale dostarcza streszczenia tych konstrukcji oraz pewnych specyficznych
aspektów OWL i przykładów.
Aksjomat rdfs:subPropertyOf definiuje, że
własność jest podwłasnością jakiejś innej
własności. Formalnie oznacza to, że jeśli P1 jest
podwłasnością P2, to rozszerzenie własności P1 (zbiór
par) powinno być podzbiorem rozszerzenia własności
P2(również zbiór par).
Przykład:
<owl:ObjectProperty rdf:ID="hasMother">
<rdfs:subPropertyOf rdf:resource="#hasParent"/>
</owl:ObjectProperty>
Oznacza to, że wszystkie instancje (pary), które zawarły jako
rozszerzenie własności "hasMother" są również
członkami jako rozszerzenie własności "hasParent".
Aksjomaty podwłasności mogą odnosić się do obu
własności typów danych i własności obiektów.
UWAGA: W OWL DL temat i obiekt wyrażenia podwłasności
musi być albo obojgiem własności typu danych albo obiema
własnościami obiektu.
Dla tej własności można zdefiniować (wielokrotne) aksjomaty
rdfs:domain. Składniowo, rdfs:domain jest wbudowaną
własnością, która włącza własność
(pewna instancja klasy rdf:Property) do własności klasy. Aksjomat rdfs:domain
wymaga, aby temat takich wyrażeń własności musiał
należeć do rozszerzenia klasy wskazanego opisu klasy.
Wielokrotne aksjomaty rdfs:domain są dozwolone i powinny
zostać zinterpretowane jako dołączenie ich ograniczenia dziedziny
własności do tych indywiduów, które należą do
koniunkcji opisów klasy. Jeżeli chcemy powiedzieć, że
wielokrotne klasy mogą służyć jako dziedzina, należy wtedy
użyć opisu klasy w formie owl:unionOf. Na przykład jeżeli chcemy
powiedzieć, że dziedzina własności hasBankAccount
może być albo Person lub Corporation,
musielibyśmy powiedzieć coś podobnego do tego (coś w tym
stylu):
<owl:ObjectProperty rdf:ID="hasBankAccount">
<rdfs:domain>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Person"/>
<owl:Class rdf:about="#Corporation"/>
</owl:unionOf>
</owl:Class>
</rdfs:domain>
</owl:ObjectProperty>
UWAGA: W OWL Lite wartości rdfs:domain muszą
być identyfikatorem klasy.
Dla tej własności można zdefiniować (wielokrotne) aksjomaty
rdfs:range. Składniowo, rdfs:range jest wbudowaną
własnością, która włącza własność
(pewna instancja klasy rdf:Property) albo do opisu klasy albo do zakresu danych.
Aksjomat rdfs:range wymaga, aby wartości takich własności
musiały należeć do rozszerzenia klasy wskazanego opisu klasy lub do
wartości danych w określonym zakresie danych.
Wielokrotne ograniczenia zakresu są zinterpretowane jako stwierdzanie, że
zakres własności jest koniunkcją wszystkich zakresów
(tzn., koniunkcja rozszerzenia klasy opisów klasy m.in. koniunkcja danych
zakresu). Podobny do rdfs:domain, wielokrotne
alternatywne zakresy mogą zostać skonkretyzowane przez użycie opisu
klasy w formie owl:unionOf (patrz poprzedni
podrozdział).
Zauważ, że w przeciwieństwie do jakiegokolwiek z ograniczenia wartości opisanego w rozdziale o opisach
klasy, rdfs:range ograniczenia są globalne. Ograniczenia Wartości
takie jak owl:allValuesFrom użyte w
opisie klasy i są narzucone tylko na własności, jeśli odnoszą
się do tej klasy. W przeciwieństwie, rdfs:range ograniczenia
odnoszą się do własności, niezależnie od klasy do
której się odnoszą. A zatem rdfs:range powinien
zostać użyty ostrożnie.
UWAGA: W OWL Lite jedynym typem opisu klasy dozwolonym jako obiekt
rdfs:range są nazwy klas.
Konstrukcja owl:equivalentProperty
może zostać użyta, by stwierdzić, że dwie
własności mają to samo rozszerzenie własności.
Składniowo, owl:equivalentProperty jest wbudowaną
własnością z rdf:Property jako zarówno jego
dziedzina, jak i zakres.
UWAGA: Własność równoważności nie
jest tym samym co równość własności.
Równoważne własności mają te same "wartości" (tzn. to
samo rozszerzenie własności), ale mogą mieć inne intensional
znaczenie (tzn. oznaczają inne pojęcia). Równość
własności powinna zostać wyrażona konsyrukcją owl:sameAs. Ponieważ to wymaga, aby
własności były traktowane jako indywidua, takie aksjomaty są
dozwolone tylko w OWL Full.
Własności mają kierunek, od dziedziny do zakresu. W praktyce ludzie
często uważają to za przydatne, by zdefiniować relacje w obu
kierunkach: osoby posiadają samochody, samochody są posiadane przez osoby.
Konstrukcja owl:inverseOf
może zostać użyty, by zdefiniować taką odwrotną
relację między własnościami.
Składniowo, owl:inverseOf jest wbudowaną
własnością OWL z owl:ObjectProperty jako dziedziną i
zakresem. Aksjomat formy P1 owl:inverseOf P2 domaga się, aby dla
każdej pary (x, y) w rozszerzeniu własności P1, była para (y, x) w
rozszerzeniu własności P2 i odwrotnie. A zatem owl:inverseOf jest
symetryczną własnością.
Przykład:
<owl:ObjectProperty rdf:ID="hasChild">
<owl:inverseOf rdf:resource="#hasParent"/>
</owl:ObjectProperty>
Własność funkcjonału jest własnością,
która może mieć tylko jedną (unikalną) wartość
y dla każdej instancji x, tzn. nie może mieć dwóch
różnych wartości y1 i y2 takich, że obie pary (x, y1) i (x,
y2) są instancjami tej własności. Zarówno własności
obiektu jaki i własności typu danych mogą być zdeklarowane jako
"funkcjonał". W tym celu OWL definiuje wbudowaną klasę owl:FunctionalProperty
jako specjalną podklasę klasy RDF rdf:Property.
Następny aksjomat stwierdza, że własność
husband jest funkcjonałem tzn., kobieta może mieć
najwyżej jednego męża (dobry przykład zależności
kultury ontologii):
<owl:ObjectProperty rdf:ID="husband">
<rdf:type rdf:resource="&owl;FunctionalProperty" />
<rdfs:domain rdf:resource="#Woman" />
<rdfs:range rdf:resource="#Man" />
</owl:ObjectProperty>
Jak zawsze, mamy tu składniowe odmiany. Powyższy przykład jest
semantycznie równoważny poniższemu:
<owl:ObjectProperty rdf:ID="husband">
<rdfs:domain rdf:resource="#Woman" />
<rdfs:range rdf:resource="#Man" />
</owl:ObjectProperty>
<owl:FunctionalProperty rdf:about="#husband" />
Jeżeli własność jest zdeklarowana jako odwrotny
funkcjonał, wtedy obiekt własności wyrażenia wyjątkowo
określa przedmiot (jakieś indywiduum). Bardziej formalnie, jeżeli
stwierdzamy, że P jest owl:InverseFunctionalProperty, wtedy wymagamy,
by wartość y mogła być tylko wartością P dla
pojedynczej instancji x, tzn. nie mogą wystąpić dwie różne
instancje x1 i x2 takie, że pary (x1, y) i (x2, y) są instancją P.
Składniowo, odwrotny funkcjonał aksjomatu własności jest
skonkretyzowany przez deklarację własności będących
instancją wbudowanej klasy OWL owl:InverseFunctionalProperty,
która jest podklasą owl:ObjectProperty klasy OWL.
UWAGA: Ponieważ w OWL Full własności typu danych
są podklasą własności obiektu, własności odwrotnego
funkcjonału mogą być zdefiniowane dla własności typu danych. W
OWL DL własności obiektu i własności typu danych są
rozłączne, więc własności odwrotnego funkcjonału nie
mogą być zdefiniowane dla własności typu danych. Patrz także
Rozdział 8.1 i Rozdział 8.2.
Typowy przykład własności odwróconego funkcjonału:
<owl:InverseFunctionalProperty rdf:ID="biologicalMotherOf">
<rdfs:domain rdf:resource="#Woman"/>
<rdfs:range rdf:resource="#Human"/>
</owl:InverseFunctionalProperty>
Ten przykład stwierdza, że dla każdego obiektu z
biologicalMotherOf wyrażenia (jakiś człowiek) powinno
być w stanie wyjątkowo zidentyfikować temat (jakaś kobieta).
Własności odwrotnego funkcjonału przypominają pojęcie klucza w
bazach danych.
Jedna z różnic we własnościach funkcjonałów jast
taka, że dla własności odwrotnego funkcjonału żadne
dodatkowe aksjomaty obiekt-własnośc lub typ danych-własność
nie są wymagane: własności odwróconego funkcjonału są z
definicji własnościami obiektu.
Zauważ, że owl:FunctionalProperty i owl:InverseFunctionalProperty
konkretyzują globalne ograniczenia mocy zbioru. Bez względu na to, do
której klasy własność się odnosi, ograniczenia mocy zbioru
muszą być zachowane. Różni się to od ograniczeń
mocy zbioru zawartych w ograniczeniach własności.
Te drugie są opisami klasy i narzucone są tylko na własności, gdy
odnoszą się do tej klasy.
Kiedy definiujemy własność P jako własnośc
przechodnią, oznacza to, że jeżeli para (x, y) jest instancją P i
para (y,z) jest także instancją P, możemy wnioskować, że
para (x,z) jest także instancją P.
Składniowo własność zdefiniowana jest jako przechodnia poprzez
instancję wbudowanej klasy OWL owl:TransitiveProperty,
która jest zdefiniowana jako podklasa owl:ObjectProperty.
Typowe przykłady własności przechodnich są
własnościami reprezentującymi pewne relacje części
całości. Na przykład moglibyśmy zechcieć powiedzieć,
że własności subRegionOf pomiędzy regionami są
przechodnie:
<owl:TransitiveProperty rdf:ID="subRegionOf">
<rdfs:domain rdf:resource="#Region"/>
<rdfs:range rdf:resource="#Region"/>
</owl:TransitiveProperty>
Tak więc wnioskowanie OWLa powinno doprowadzić nas do tego, że
jeśli ChiantiClassico, Tuscany i Italy
są regionami, i ChiantiClassico jest podregionem Tuscany,
i Tuscany jest podregionem Italy, wtedy
ChiantiClassico jest również podregionem
Italy.
Zauważ, że ponieważ owl:TransitiveProperty jest
podklasą owl:ObjectProperty, następujący wariant
składniowy jest równoważny powyższemu przykładowi:
<owl:ObjectProperty rdf:ID="subRegionOf">
<rdf:type rdf:resource="&owl;TransitiveProperty"/>
<rdfs:domain rdf:resource="#Region"/>
<rdfs:range rdf:resource="#Region"/>
</owl:ObjectProperty>
UWAGA: OWL DL wymaga dla własności przechodnich, aby
żadne lokalne lub globalne ograniczenia mocy zbioru nie były deklarowane na
samej własności lub na jej superwłasnościach ani na
odwrotności własności lub jej superwłasnościach.
Symetryczna własność jest własnością, która
jest zachowana wtedy, jeśli para (x,y) jest instancją P, to para (y,x) jest
również instancją P. Składniowo, własność jest
zdefiniowana jako symetryczna poprzez uczynienie z niej instancji wbudowanej klasy OWL
owl:SymmetricProperty,
podklasą owl:ObjectProperty.
Popularny przykład własności symetrycznej relacji
friendOf :
<owl:SymmetricProperty rdf:ID="friendOf">
<rdfs:domain rdf:resource="#Human"/>
<rdfs:range rdf:resource="#Human"/>
</owl:SymmetricProperty>
Dziedzina i zakres własności symetrycznej są takie same.
Indywidua są zdefiniowane przez indywidualne aksjomaty (również
nazywanymi "faktami"). Omawiamy dwa typy faktów:
- Fakty o członkostwie klasy i wartościach własności
indywiduów
- Fakty o tożsamości indywiduum
Wiele typowych faktów jest stwierdzeniami wskazującymi członkostwo
klasy indywiduów i wartości własności indywiduów. Jako
przykład, rozważ następny zbiór stwierdzeń o instancji
klasy Opera:
<Opera rdf:ID="Tosca">
<hasComposer rdf:resource="#Giacomo_Puccini"/>
<hasLibrettist rdf:resource="#Victorien_Sardou"/>
<hasLibrettist rdf:resource="#Giuseppe_Giacosa"/>
<hasLibrettist rdf:resource="#Luigi_Illica"/>
<premiereDate rdf:datatype="&xsd;date">1900-01-14</premiereDate>
<premierePlace rdf:resource="#Roma"/>
<numberOfActs rdf:datatype="&xsd;positiveInteger">3</numberOfActs>
</Opera>
Ten przykład zawiera kilka faktów o indywiduum Tosca,
instancji klasy Opera. Tosca jest skomponowana przez Giacomo
Puccini. Opera ma trzech pisarzy libretta. Własność
premiereDate łączy operę z dosłownym typem typu danych
XML Schema date. XML Schema XML na danych typu [Typy danych XML Schema ] zawiera istotną
informację o składni i semantyce typu danych.
Aksjomaty indywiduów niekoniecznie muszą być związane z
nazwanymi indywiduami: mogą również odnosić się do
anonimowych indywiduów. Jako przykład, rozważ fragment RDF / XML
znajdujący się poniżej. Przykład definiuje niektóre fakty o
anonimowej instancji klasy Measurement, ilościowa obserwacja, dla
której fakty takie jak obiekt pod obserwacją, obserwowane zjawisko,
wartość i czas obserwacji są wypisane:
<Measurement>
<observedSubject rdf:resource="#JaneDoe"/>
<observedPhenomenon rdf:resource="#Weight"/>
<observedValue>
<Quantity>
<quantityValue rdf:datatype="&xsd;float">59.5</quantityValue>
<quantityUnit rdf:resource="#Kilogram"/>
</Quantity>
</observedValue>
<timeStamp rdf:datatype="&xsd;dateTime">2003-01-24T09:00:08+01:00</timeStamp>
</Measurement>
Ten aksjomat indywiduum zawiera dwa anonimowe indywidua, mianowicie pewien
Measurement i pewien Quantity. W naturalnym języku, dla
tematu Jane Doe zmierzona wartość zjawiska Weight jest
pewną ilością, która ma wartość 59.5 liczoną w
jednostkach kilograma. Czasem pomiaru jest 24 stycznia 2003r., osiem sekund po
dziewiątej rano, w strefie czasu UTC+1 (czas zimowy w Amsterdamie, Berlinie,
Paryżu). Tak, jak przedtem, float i dateTime są
typami danych XML Schema, szczegółami składni i semantyki, które
można znaleźć w stosownych XML Schema [Typy danych XML Schema ].
Wiele języków ma tak zwane założenia "unikalnych nazwy":
różne nazwy odnoszą się do różnych rzeczy na
świecie. W sieci takie założenia nie są możliwe. Na
przykład do tej samej osoby można się odnosić na wiele
różnych sposobów (tzn. z innymi odniesieniami URI). Z tego powodu
OWL nie robi tego założenia. Chyba że wyraźne stwierdzenia
powodują, że dwa odniesienia URI odnoszą się do tych samych lub
różnych indywiduów, narzędzia OWL powinny w zasadzie
założyć, że obie sytuacje są możliwe.
OWL dostarcza trzech konstrukcji dla stwierdzania faktów o
tożsamości indywiduów:
owl:sameAs jest użyty, by stwierdzić, że dwa
odniesienia URI odnoszą się do tych samych indywiduów
owl:differentFrom jest użyty, by stwierdzić, że dwa
odniesienia URI odnoszą się do różnych indywiduów
owl:AllDifferent zapewnia idiom do stwierdzania, że wszystkie
wypisane indywidua są różne.
Własności wbudowane OWLa owl:sameAs
łączą indywidua z indywiduami. Takie stwierdzenie owl:sameAs
wskazuje, że dwa odniesienia URI w rzeczywistości przypisują tą
samą rzecz: indywidua mają tę sam "tożsamość".
Dla indywiduów takich jak "ludzie" pojęcie to jest relatywnnie proste do
zrozumienia. Na przykład moglibyśmy stwierdzić, że
następujące dwa odniesienia URI właściwie odnoszą się do
tych samych osób:
<rdf:Description rdf:about="#William_Jefferson_Clinton">
<owl:sameAs rdf:resource="#BillClinton"/>
</rdf:Description>
Wyrażenie owl:sameAs często jest używane w
definiowaniu przekształceń między ontologiami. Nierealistycznym jest
zakładanie, że każdy użyje tej samej nazwy w odniesieniu do
indywiduum. To wymagałby pewnego wielkiego projektowania, które leży w
przeciwieństwie do ducha sieci.
W OWL Full, gdzie klasy mogą zostać potraktowane jako instancje (meta)klas,
możemy użyć konstrukcji owl:sameAs aby zdefiniować
równość klasy, w ten sposób wskazując, że dwa
pojęcia mają to samo zamierzone znaczenie. Przykład:
<owl:Class rdf:ID="FootballTeam">
<owl:sameAs rdf:resource="http://sports.org/US#SoccerTeam"/>
</owl:Class>
Możnaby wyobrazić sobie ten aksjomat jako część
ontologii sportów europejskich. Dwie klasy są potraktowane tu jako indywidua,
w tym przypadku jako instancje klasy owl:Class. To pozwala nam, by
stwierdzić że klasa FootballTeam w pewnej ontologii
sportów europejskich oznacza tę samą koncepcję co klasa
SoccerTeam w pewnej ontologii sportów amerykańskich.
Zauważ różnicę w stwierdzeniu:
<footballTeam owl:equivalentClass us:soccerTeam />
które stwierdza, że dwie klasy mają to samo rozszerzenie klasy, ale
nie są (koniecznie) tymi samymi koncepcjami.
UWAGA: W celu szczegółowego zestawienia odniesień URI,
zobacz rozdział odniesień URI do RDFa w Koncepcjach RDFa [RDF Koncepcje].
Wbudowane własności OWLa owl:differentFrom
łączą indywidua z indywiduami. Wyrażenie
owl:differentFrom wskazuje, że dwa odniesienia URI odnoszą
się do różnych indywiduów.
Przykład:
<Opera rdf:ID="Don_Giovanni"/>
<Opera rdf:ID="Nozze_di_Figaro">
<owl:differentFrom rdf:resource="#Don_Giovanni"/>
</Opera>
<Opera rdf:ID="Cosi_fan_tutte">
<owl:differentFrom rdf:resource="#Don_Giovanni"/>
<owl:differentFrom rdf:resource="#Nozze_di_Figaro"/>
</Opera>
To stwierdza, że są trzy różne opery.
Dla ontologii, w których założenie unikalnych nazw utrzymuje
się, użycie owl:differentFrom prawdopodobnie prowadzi do bardzo
dużej liczby stwierdzeń, jako wszystkie indywidua będące
zdeklarowane jako pary nierozłączne. W takiej sytuacji OWL dostarcza
specjalnych idiomów w formie konstrukcji owl:AllDifferent.
owl:AllDifferent jest specjalnie wbudowaną klasą OWL, dla
której własność owl:distinctMembers
jest zdefiniowana,
która łączy instancję owl:AllDifferent z listą
indywiduów. Zamierzonym znaczeniem takiego stwierdzenia jest to, że
wszystkie indywidua z listy różnią się od siebie.
Przykład:
<owl:AllDifferent>
<owl:distinctMembers rdf:parseType="Collection">
<Opera rdf:about="#Don_Giovanni"/>
<Opera rdf:about="#Nozze_di_Figaro"/>
<Opera rdf:about="#Cosi_fan_tutte"/>
<Opera rdf:about="#Tosca"/>
<Opera rdf:about="#Turandot"/>
<Opera rdf:about="#Salome"/>
</owl:distinctMembers>
</owl:AllDifferent>
To stwierdza, że wszystkie sześć odniesień URI wskazuje
zupełnie inne opery.
UWAGA: owl:distinctMembers jest specjalną
składniową konstrukcją dodaną dla komfortu i powinna być ona
używana zawsze z owl:AllDifferent indywiduum jako tematem.
6. Typy danych
W kilku miejsc w tym dokumencie zobaczyliśmy pojęcie z zakresu danych wyszczególniające zakres wartości
danych. OWL pozwala na trzy typy specyfikacji zakresu danych:
Minimalny poziom narzędzi wspierających typy danych omówiony jest w
Rozdziale 6.3.
6.1 Typy danych RDF
OWL wykorzystuje typy danych RDF Schema, które dostarcza mechanizmów
odnoszenia się do typów danych XML Schema [Typy danych XML Schema ]. Dla szczegółowych
opisów czytelnik jest odsyłany do dokumentów RDF np.,
[RDF Koncepcje]. Dla wygody czytelnika,
dostarczamy tu streszczeń użycia typu danych RDF.
Wartości danych są instancjami klas RDF Schema rdfs:Literal.
Literały mogą być albo zwykłe (bez typów danych) albo
maszynowe. Typy danych są instancjami klasy rdfs:Datatype. W RDF/XML,
typ literału jest skonkretyzowany przez rdf:datatype cechy,
których wartość najlepiej, żeby była w
następującej postaci:
Semantyka RDF [RDF Semantyka,
Rozdział 5]. poleca użycie poniższego prostego wbudowanego typu danych
XML Schema.
- Podstawowy typ danych
xsd:string,
z dodatkiem następującego typu danych pochodzi od xsd:string: xsd:normalizedString,
xsd:token,
xsd:language,
xsd:NMTOKEN,
xsd:Name i
xsd:NCName.
- Podstawowy typ danych
xsd:boolean.
- Podstawowy typ danych numerycznych
xsd:decimal,
xsd:float i
xsd:double,
z dodatkiem wszystkich typów pochodzących z xsd:decimal ( xsd:integer,
xsd:positiveInteger.
xsd:nonPositiveInteger,
xsd:negativeInteger,
xsd:nonNegativeInteger,
xsd:long,
xsd:int,
xsd:short,
xsd:byte,
xsd:unsignedLong,
xsd:unsignedInt,
xsd:unsignedShort,
xsd:unsignedByte)
- Podstawowe typy danych relacji czasowych:
xsd:dateTime,
xsd:time,
xsd:date,
xsd:gYearMonth,
xsd:gYear,
xsd:gMonthDay,
xsd:gDay, i
xsd:gMonth.
- Podstawowy typ danych
xsd:hexBinary,
xsd:base64Binary,
i xsd:anyURI.
UWAGA: To nie jest nielegalne, chociaż nie polecone, definiowanie
własnych typów danych przez definiowanie instancji
rdfs:Datatype. Takie typy danych są "nierozpoznawane", ale są
traktowane w podobnym sposób jak "niewspierane typy danych" (patrz Rozdział 6.3 w celu znalezienia szczegółów
odnośnie traktowania narzędzi OWL).
Używając typów danych proszę zauważyć, że
nawet jeśli własność jest zdefiniowana na zakresie pewnych
typów danych, RDF/XML ciągle wymaga, żeby typ danych był
wyszczególniany za każdym razem, kiedy własność jest
używana. Przykład mógłby być deklaracją
własności, której użyliśmy wcześniej w
przykładzie Measurement :
<owl:DatatypeProperty rdf:about="#timeStamp">
<rdfs:domain rdf:resource="#Measurement"/>
<rdf:range rdf:resource="&xsd;dateTime"/>
</owl:DatatypeProperty>
<Measurement>
<timeStamp rdf:datatype="&xsd;dateTime">2003-01-24T09:00:08+01:00</timeStamp>
</Measurement>
6.2 Wyliczenia typu
danych
Dodatkowo do typów danych RDF, OWL zapewnia jedną dodatkową
konstrukcję dla definiowania zakres wartości danych, mianowicie wyliczenia
typu danych. Format tych typów danych używa konstrukcji
owl:oneOf, co również jest używane do opisania wyliczenia klas. W przypadku wyliczenia typu danych temat
owl:oneOf jest pustym węzłem klasy owl:DataRange a obiekt jest listą
literałów. Niestety nie możemy użyć idiomu
rdf:parseType="Collection" do wyszczególnienia listy
literałów, ponieważ RDF wymaga zbioru by być wykazem
elementów węzła RDF. Dlatego musimy skonkretyzować wykaz
wartości danych z podstawowymi listami konstrukcji rdf:first,
rdf:rest i rdf:nil.
UWAGA: Wyliczone typy danych nie stanowią części OWL
Lite.
Poniższy przykład specyfikuje zakres własności
tennisGameScore będących listą wartości liczb
całkowitych {0, 15, 30, 40}:
<owl:DatatypeProperty rdf:ID="tennisGameScore">
<rdfs:range>
<owl:DataRange>
<owl:oneOf>
<rdf:List>
<rdf:first rdf:datatype="&xsd;integer">0</rdf:first>
<rdf:rest>
<rdf:List>
<rdf:first rdf:datatype="&xsd;integer">15</rdf:first>
<rdf:rest>
<rdf:List>
<rdf:first rdf:datatype="&xsd;integer">30</rdf:first>
<rdf:rest>
<rdf:List>
<rdf:first rdf:datatype="&xsd;integer">40</rdf:first>
<rdf:rest rdf:resource="&rdf;nil" />
</rdf:List>
</rdf:rest>
</rdf:List>
</rdf:rest>
</rdf:List>
</rdf:rest>
</rdf:List>
</owl:oneOf>
</owl:DataRange>
</rdfs:range>
</owl:DatatypeProperty>
6.3 Wsparcie wnioskowania o typach
danych
Narzędzia mogą zmienić sposób w jaki wspierają
wnioskowanie o typach danych. Jako minimum, narzędzia muszą wspierać
wnioskowanie o typach danych dla typów danych xsd:string i
xsd:integer w XML Schema. Narzędzia OWL Full muszą także
wspierać rdf:XMLLiteral. Dla niewspieranych typów danych,
literały leksykalnie identyczne powinny być traktowane jako równe
podczas, gdy wiadomo, że leksykalnie różne literały nie powinny
być uznane ani za równe, ani za nierówne. Nierozpoznane typy danych
powinny być potraktowane w ten sam sposób jak niewspierane typy danych.
7.1 Adnotacje
OWL Full nie kładzie żadnych ograniczeń na adnotacje w ontologii.
OWL DL pozwala na adnotacje w klasach, własnościach, indywiduach i
nagłówkach ontologii, ale tylko pod następnymi warunkami:
Pięć własności adnotacji jest predefiniowanych przez OWL,
mianowicie:
owl:versionInfo
rdfs:label
rdfs:comment
rdfs:seeAlso
rdfs:isDefinedBy
Oto przykład prawnego użycia własności adnotacji w OWL DL:
<owl:AnnotationProperty rdf:about="&dc;creator"/>
<owl:Class rdf:about="#MusicalWork">
<rdfs:label>Musical work</rdfs:label>
<dc:creator>N.N.</dc:creator>
</owl:Class>
Przykład zakłada &dc; i dc: jako odpowiednio
URI Dublin Core i przestrzeń nazw. W ten sposób użycie
własności Dublin Core jako własności adnotacji w OWL DL
wymaga wyraźnego typu trójki. To zapewnia, że adnotacje są
prowadzone w semantycznie poprawnym stylu przez wnioskowanie OWL DL (patrz Semantyka i
lista składni [OWL
S&AS]).
Kiedy definiujemy dc:creator jako własność adnotacji,
OWL DL NIE pozwala aksjomatom własności na takie ograniczenie zakresu:
<-- This is illegal in OWL DL -->
<owl:AnnotationProperty rdf:about="&dc;creator">
<rdfs:range rdf:resource="&xsd;string"/>
</owl:AnnotationProperty>
Zauważ, że to może nadal wyszczególnić typ
wartości literału w stwierdzeniu adnotacja-własność:
<Opera rdf:about="#Tosca">
<dc:creator rdf:datatype="&xsd;string">Giacomo Puccini</dc:creator>
</Opera>
Dokument opisujący ontologię typowo zawiera informację o samej
ontologii. Ontologia jest zasobem, więc może być opisana przy
użyciu własności z OWL i innych przestrzeni nazw, np. :
<owl:Ontology rdf:about="">
<owl:versionInfo> ... </owl:versionInfo>
<rdfs:comment>...</rdfs:comment>
<owl:imports rdf:resource="..."/>
</owl:Ontology>
To jest zwykle nazywane nagłówkiem ontologii i typowo jest umiejscowione
na początku dokumentu RDF / XML. Linia
<owl:Ontology rdf:about="">
stwierdza, że ten fragment opisuje aktualną ontologię.
Dokładniej, określa to aktualną bazę identyfikatorów URI
instancji klasy owl:Ontology. Zaleca się, aby baza URI była
definiowana przy użyciu atrybutu xml:base w członie
<rdf:RDF> na początku dokumentu.
Przykład nagłówka ontologii mógłby wyglądać w
ten sposób:
<owl:Ontology rdf:about="">
<owl:versionInfo>v 1.17 2003/02/26 12:56:51 mdean</owl:versionInfo>
<rdfs:comment>An example ontology</rdfs:comment>
<owl:imports rdf:resource="http://www.example.org/foo"/>
</owl:Ontology>
Następne rozdziały opisują różne typy stwierdzeń,
które są typowo używane w nagłówkach.
UWAGA: Konstrukcja ontologia-import owl:imports i konstrukcje ontologia-kontrola'wersji' owl:priorVersion, owl:backwardCompatibleWith i owl:incompatibleWith są zdefiniowane w słownictwie
OWL jako instancje wbudowanej klasy OWL owl:OntologyProperty. Instancje
owl:OntologyProperty muszą mieć klasę
owl:Ontology jako ich dziedzinę i zakres. Dozwolone jest, by
definiować inne instancje z owl:OntologyProperty. W OWL DL dla
własności ontologii obowiązują te same ograniczenia jak te
określone dla własności adnotacji w Rozdziale
7.1.
owl:imports
odniesienia stwierdzenia innej ontologii OWL zawierają definicje, których
znaczenie jest rozważane jako część znaczenia importującej
ontologii. Każde odniesienie składa się z wyszczególnionych URI,
gdzie ontologia ma być importowana. Składniowo, owl:imports jest
własnością klasy owl:Ontology jako swojej dziedziny i
zakresu.
Wyrażenie owl:imports jest przechodnie, to jest, jeżeli
ontologia A importuje B, i B importuje C, wtedy A importuje B i C. Importowanie
ontologii do siebie samej jest uważane za pustą akcję, więc
jeśli ontologia A importuje B i B importuje A, wtedy rozważane są one
jako równoważne.
Zauważ, że tak czy inaczej narzędzie OWL musi
załączyć importowaną ontologię w zależności od
celu narzędzia. Jeżeli narzędzie wnioskuje kompletnie
(włączając w to kompletne sprawdzenie zgodności), wtedy musi
załączyć wszystkie importowane ontologie. Inne narzędzia, takie jak
proste edytory i niekompletne wnioskowania, mogą woleć
obciążyć tylko kilka lub nawet żadnej z importowanych
ontologii.
Chociaż owl:imports i przestrzeń nazw deklaracji mogą być
nadmiarowe, właściwie podają inne cele. Deklaracje przestrzeni nazw w
prosty sposób ustawiają skróty dla odniesień do
identyfikatorów. Domyślnie nie zawierają znaczenia dokumentów
umieszczonych w URI. Z drugiej strony, owl:imports nie dostarcza żadnej notacji
skrótu dla odnoszenia od importowanego dokumentu. Dlatego wspólnym jest
odpowiadanie deklaracji przestrzeni nazw na jakąś ontologię,
która jest importowana.
UWAGA: owl:imports jest instancją
owl:OntologyProperty.
Generalnie wyrażenie owl:versionInfo
ma jako swój obiekt ciąg znaków dający informacje o tej wersji,
na przykład RCS / CVS słowa kluczowe. To stwierdzenie nie przyczynia się
do logicznego znaczenia ontologii inaczej niż podany przez RDF(S) teoretyczny
model.
Chociaż ta własność jest typowo używana, by
złożyć oświadczenia o ontologiach, to może
odnieść się do jakiejkolwiek konstrukcji OWL. Na przykład
można by załączyć wyrażenie owl:versionInfo do
klasy OWLa.
UWAGA: owl:versionInfo jest instancją
owl:AnnotationProperty.
Wyrażenie owl:priorVersion
zawiera odnośniki do innych ontologii. To identyfikuje wyszczególnioną
ontologię jako wcześniejszą wersję zawierającą
ontologię. To nie ma żadnego znaczenia w teoretycznym modelu semantycznym
innym niż ten podany przez RDF(S). Jakkolwiek to może zostać
użyte przez oprogramowanie, by zorganizować ontologie przez wersje.
owl:priorVersion jest wbudowaną własnością OWL z
klasą owl:Ontology jako dziedziną i zakresem.
UWAGA: owl:priorVersion jest instancją
owl:OntologyProperty.
Wyrażenie owl:backwardCompatibleWith
zawiera odniesienia do innej ontologii. To identyfikuje określoną
ontologię jako poprzednią wersję bieżącej ontologii i dalej
oznacza, że jest to wstecznie znią kompatybilne. W
szczególności, wskazuje to, że wszystkie identyfikatory z poprzedniej
wersji mają te same zamierzone interpretacje w nowej wersji. W ten sposób,
jest to wskazówka dla autorów dokumentów, że mogą
bezpiecznie zmieniać swoje dokumenty, doprowadzając je do nowszej wersji
(przez zwyczajne uaktualnianie przestrzeni nazw deklaracji i wyrażenia owl:imports do odniesienia się do URLa nowej
wersji). Jeśli owl:backwardCompatibleWith nie jest zdeklarowane dla
dwóch wersji, wtedy zgodność nie powinna zostać
założona.
owl:backwardCompatibleWith nie ma żadnego znaczenia w teoretycznym
modelu semantycznym innym niż ten podany przez RDF(S).
owl:backwardCompatibleWith jest wbudowaną własnością
OWL z klasą owl:Ontology jako dziedziną i zakresem.
UWAGA: owl:backwardCompatibleWith jest instancją
owl:OntologyProperty.
Wyrażenie owl:incompatibleWith
zawiera odniesienia do innej ontologii. To wskazuje, że zawierająca ontologia
jest poprzednią wersją referowanej ontologii, ale nie zawiera kompatybilnego
podłoża z nią. Zasadniczo, to jest dla użytku autorów
ontologii, którzy chcą jasno wypowiedzieć, że dokumenty nie
mogą być ulepszane, do używania w nowej wersji bez sprawdzenia, czy
są wymagane zmiany.
owl:incompatibleWith nie ma żadnego znaczenia w teoretycznym
modelu semantycznym innym niż ten podany przez RDF(S).
owl:incompatibleWith jest wbudowaną własnością OWL z
klasą the class owl:Ontology jako dziedziną i zakresem.
UWAGA: owl:backwardCompatibleWith is an instance of
owl:OntologyProperty.
Dezaprobata jest cechą
zwykle używaną w kontroli wersji oprogramowania (patrz przykłady w
języku programowania Java) aby wskazać, że szczególna cecha
jest zachowana dla celów wstecznej kompatybilności, ale może nie
być używany w przyszłości. Tu mówi się, że
określony identyfikator jest typu owl:DeprecatedClass
lub owl:DeprecatedProperty,
gdzie owl:DeprecatedClass jest podklasą rdfs:Class i
owl:DeprecatedProperty jest podklasą rdf:Property. Przez
dezaprobatę terminu mamy na myśli, że termin nie powinien być
używany w nowych dokumentach przekazanych do ontologii. To pozwala ontologii
zachować wsteczną kompatybilność podczas łączenia ze
starym słownictwem (wprawdzie ma to tylko sens, gdy używamy dezaprobaty w
połączeniu ze wsteczną kompatybilnością). W rezultacie,
łatwiej jest starym danym i aplikacjom migrować do nowej wersji i w ten
sposób zwiększać poziom adaptacji nowej wersji. To nie ma
żadnego znaczenia w teoretycznym modelu semantycznym innym niż ten podany
przez RDF(S). Jakkolwiek, autorskie narzędzia mogą użyć tego, by
ostrzec użytkowników kiedy sprawdzane są znaczniki OWL.
Przykładem dezaprobaty jest:
<owl:Ontology rdf:about="">
<rdfs:comment>Vehicle Ontology, v. 1.1</rdfs:comment>
<owl:backwardCompatibleWith
rdf:resource="http://www.example.org/vehicle-1.0"/>
<owl:priorVersion rdf:resource="http://www.example.org/vehicle-1.0"/>
</owl:Ontology>
<owl:DeprecatedClass rdf:ID="Car">
<rdfs:comment>Automobile is now preferred</rdfs:comment>
<owl:equivalentClass rdf:resource="#Automobile"/>
<!-- note that equivalentClass only means that the classes have the same
extension, so this DOES NOT lead to the entailment that
Automobile is of type DeprecatedClass too -->
</owl:DeprecatedClass>
<owl:Class rdf:ID="Automobile" />
<owl:DeprecatedProperty rdf:ID="hasDriver">
<rdfs:comment>inverse property drives is now preferred</rdfs:comment>
<owl:inverseOf rdf:resource="#drives" />
</owl:DeprecatedProperty>
<owl:ObjectProperty rdf:ID="drives" />
We wprowadzeniu krótko omówiliśmy trzy podjęzyki OWLa. W
tymm rozdziale specyfikacja informacyjna pokazuje różnice pomiędzy
tymi trzema "rodzajami" OWLa. Formalny opis różnic podany jest w Semantyce
i liście składni [OWL
S&AS].
OWL Full nie jest właściwie podjęzykiem. OWL Full zawiera wszystkie
konstrukcje języka OWL i dostarcza wolnego, niewymuszonego użycia
konstrukcji RDFa. W OWL Full zasób owl:Class jest
równoważny z rdfs:Class. To odróżnia OWL DL i
OWL Lite, gdzie owl:Class jest właściwą podklasą
rdfs:Class (oznacza to, że nie wszystkie klasy RDF są klasami
OWL w OWL DL i OWL Lite). OWL Full również pozwala na traktowanie klas jako
indywiduów. Na przykład, jest zupełnie legalne w OWL Full posiadanie
identyfikatora "Fokker-100", który czyni obie nazwy klasy (oznaczając
zbiór z samolotami Fokker-100 latającymi dookoła świata) i jako
nazwę indywiduum (np., instancję klasy
AirplaneType).
W OWL Full wszystkie wartości danych są rozważane
również za część dziedziny indywiduum. W rzeczy samej, w
OWL Full uniwersum indywiduów zawiera wszystkie zasoby (owl:Thing
jest równoważne rdfs:Resource). Oznacza to, że
własności obiektu i własności typu danych nie są
rozłączne. W OWL Full owl:ObjectProperty jest
równoważne rdf:Property. Konsekwencją jest to, że
własności typu danych są skuteczną podklasą
własności obiektu. (Zauważ: fakt, że oba
owl:ObjectProperty i owl:DatatypeProperty są podklasami
rdf:Property nie jest sprzeczne z tym).
OWL Full będzie typowo przydatny dla ludzi, którzy chcą
łączyć ekspresywność OWL z elastycznością i
metamodelowanymi cechami RDF. Jakkolwiek, użycie cech OWL Full oznacza
utratę niektórych gwarancji (patrz poniżej),
że OWL DL i OWL Lite mogą dostarczyć wnioskowanie.
UWAGA: Dokumentacja RDF będzie główną w OWL Full,
dopóki nie będą one szczególnie zbudowane w OWL DL lub Lite.
UWAGA: Tak więc, w OWL Full owl:Thing jest
równoważne rdfs:Resource, owl:Class jest
równoważne rdfs:Class, i owl:ObjectProperty jest
równoważne rdf:Property,
OWL DL jest podjęzykiem OWL który umieszcza kilka ograniczeń
użycia konstrukcji języka OWL. W skrócie, te ograniczenia są
następujące:
- OWL DL wymaga rozłącznych par między klasami, typami danych,
własności typów danych, własności obiektu,
własności adnotacji, własności ontologii (m.in. import i
wersje rzeczy), indywidua, wartości danych i wbudowanego słownictwa. Oznacza
to, że na przykład, klasa nie może być w tym samym czasie
indywiduum.
- W OWL DL zbiór własności obiektów i własności
typów danych są nierozłączne. To implikuje następujące
cztery cechy własności:
mogą nigdy nie zostać wyszczególniony dla własności typów danych
- OWL DL wymaga, żeby żadne ograniczenia mocy zbioru (lokalne ani
globalne) nie mogą zostać umieszczone na przechodnich własnościach
lub ich odwrotnościach lub jakichkolwiek z ich superwłasności.
- Adnotacje są dozwolone tylko pod pewnymi warunkami. Patrz Rozdział 7.1.
- Większość słownictwa RDF(S) nie może być
użyte wewnątrz OWL DL. Patrz Semantyka i lista składni OWL
[OWL S&AS].
- Wszystkie aksjomaty muszą być poprawne gramatycznie, bez brakujących
lub dodatkowych komponentów i musi utworzyć drzewopodobną
strukturę.
Ostatnie ograniczenie sugeruje, że wszystkie klasy i własności, do
których się odnosi, są jawnym typem klasy lub własności OWL.
Na przykład, jeżeli ontologia zawiera następujące komponenty:
<owl:Class rdf:ID="C1">
<rdfs:subClassOf rdf:resource="#C2" />
</owl:Class>
wtedy ontologia (lub ontologia importowana do tej ontologii) powinna zawierać
owl:Class triple dla C2.
- Aksjomaty (fakty) na temat równości i różności
indywiduów muszą zawierać nazwy indywiduów.
Te ograniczenia OWL DL mogą wydać się być arbitralnym zbiorem,
ale faktycznie nie są. Ograniczenia są oparte na pracy w obszarze wnioskowania
Logiki Opisu, które wymagają tych ograniczeń w celu dostarczenia
składników ontologii lub użytkowania ze wsparciem rozumowania.
Szczególnie, ograniczenia OWL DL pozwalają na maksymalny podzbiór
przeciwieństw OWL Full, któremu aktualne badanie mogą zapewnić,
że rozstrzygalna procedura rozumowania może znaleźć się
dla wnioskowania OWL.
UWAGA: Załącznik E dostarcza zbioru
praktycznych wskazówek dla konkretyzowania ontologii OWL DL w RDF.
OWL Lite przestrzega wszystkich ograniczeń OWL DL i nakłada użycie
konstrukcji języka OWL. Ponadto, OWL Lite zabrania użycia:
OWL Lite również wymaga, żeby:
- temat trójki
owl:equivalentClass był nazwami klasy i obiekt
trójki owl:equivalentClass był nazwami klasy lub
ograniczeniami,
- temat trójki
rdfs:subClassOf był nazwami klasy i obiekt
trójki rdfs:subClassOf był nazwami klasy lub
ograniczeniami,
-
owl:intersectionOf będzie używane tylko na listach o
długości większej niż jeden, które zawierają tylko
nazwy klasy i ograniczenia;
UWAGA: To jest prototypowy przykład legalnego użycia
owl:intersectionOf w OWL Lite:
<owl:Class rdf:ID="Woman">
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Female"/>
<owl:Class rdf:about="#Human"/>
</owl:intersectionOf>
</owl:Class/>
- obiekt
owl:allValuesFrom i owl:someValuesFrom triples jest
nazwą klasy lub nazwą typu danych;
- obiekt trójki
rdf:type jest nazwą klasy lub
ograniczenia;
- obiekt trójki
rdfs:domain jest nazwą klasy, i
- obiekt trójki
rdfs:range jest nazwami klas lub nazwami
typów danych.
Idea stojąca za ograniczeniami ekspresyjności OWL Lite jest taka, że
dostarczają one minimalnie przydatnych podzespołów cech języka,
które są stosunkowo bezpośrednie dla narzędzi tworzenia wsparcia.
Konstrukcje języka OWL Lite dostarcza podstawowej hierarchii konstrukcji podklasy:
podklasy i własności ograniczeń. Ponadto, OWL Lite pozwala
własnościom być opcjonalnymi lub wymaganymi. Ograniczenia OWL Lite
umieszczają to w niższej klasie złożoności niż OWL
DL. To może mieć pozytywny wpływ na skuteczność kompletnego
wnioskowania OWL Lite.
Programowanie, które wspiera jedynie słownictwo OWL Lite, ale w przeciwnym
razie słabną ograniczenia OWL DL, nie może czynić żadnych
obliczeniowych roszczeń w odniesieniu do zgodności i
złożoności. Jakkolwiek, takie programowanie może być
przydatne w dostarczać współdziałania systemów OWL z
modelami, bazami danych, narzędziami znaczników lub innych
niewnioskujących narzędzi RDFS. Grupa Robocza Ontologii Sieciowej nie
dostarcza nazwy dla tego potencjalnie przydatnego podzespołu.
UWAGA: Ten załącznik zawiera tylko konstrukcje specyficzne dla
OWL. Konstrukcje RDF/RDFS znajdują się w odpowiedniej dokumentacji RDF,
szczególnie w RDF Schema [RDF
Słownictwo].
Załącznik B. RDF Schema w OWL
Patrz Rozdział 1.7 dla opisu celu tego
załącznika. Wersję RDF/XML tego załącznika można
znaleźć tutaj: http://www.w3.org/2002/07/owl
<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
<!ENTITY owl "http://www.w3.org/2002/07/owl#" >
]>
<rdf:RDF
xmlns ="&owl;"
xmlns:owl ="&owl;"
xml:base ="http://www.w3.org/2002/07/owl"
xmlns:rdf ="&rdf;"
xmlns:rdfs="&rdfs;"
>
<Ontology rdf:about="">
<imports rdf:resource="http://www.w3.org/2000/01/rdf-schema"/>
<rdfs:isDefinedBy rdf:resource="http://www.w3.org/TR/2004/REC-owl-semantics-20040210/" />
<rdfs:isDefinedBy rdf:resource="http://www.w3.org/TR/2004/REC-owl-test-20040210/" />
<rdfs:isDefinedBy rdf:resource="http://www.w3.org/TR/2004/REC-owl-features-20040210/" />
<rdfs:comment>This file specifies in RDF Schema format the
built-in classes and properties that together form the basis of
the RDF/XML syntax of OWL Full, OWL DL and OWL Lite.
We do not expect people to import this file
explicitly into their ontology. People that do import this file
should expect their ontology to be an OWL Full ontology.
</rdfs:comment>
<versionInfo>10 February 2004</versionInfo>
</Ontology>
<rdfs:Class rdf:ID="Class">
<rdfs:label>Class</rdfs:label>
<rdfs:subClassOf rdf:resource="&rdfs;Class"/>
</rdfs:Class>
<Class rdf:ID="Thing">
<rdfs:label>Thing</rdfs:label>
<unionOf rdf:parseType="Collection">
<Class rdf:about="#Nothing"/>
<Class>
<complementOf rdf:resource="#Nothing"/>
</Class>
</unionOf>
</Class>
<Class rdf:ID="Nothing">
<rdfs:label>Nothing</rdfs:label>
<complementOf rdf:resource="#Thing"/>
</Class>
<rdf:Property rdf:ID="equivalentClass">
<rdfs:label>equivalentClass</rdfs:label>
<rdfs:subPropertyOf rdf:resource="&rdfs;subClassOf"/>
<rdfs:domain rdf:resource="#Class"/>
<rdfs:range rdf:resource="#Class"/>
</rdf:Property>
<rdf:Property rdf:ID="disjointWith">
<rdfs:label>disjointWith</rdfs:label>
<rdfs:domain rdf:resource="#Class"/>
<rdfs:range rdf:resource="#Class"/>
</rdf:Property>
<rdf:Property rdf:ID="equivalentProperty">
<rdfs:label>equivalentProperty</rdfs:label>
<rdfs:subPropertyOf rdf:resource="&rdfs;subPropertyOf"/>
</rdf:Property>
<rdf:Property rdf:ID="sameAs">
<rdfs:label>sameAs</rdfs:label>
<rdfs:domain rdf:resource="#Thing"/>
<rdfs:range rdf:resource="#Thing"/>
</rdf:Property>
<rdf:Property rdf:ID="differentFrom">
<rdfs:label>differentFrom</rdfs:label>
<rdfs:domain rdf:resource="#Thing"/>
<rdfs:range rdf:resource="#Thing"/>
</rdf:Property>
<rdfs:Class rdf:ID="AllDifferent">
<rdfs:label>AllDifferent</rdfs:label>
</rdfs:Class>
<rdf:Property rdf:ID="distinctMembers">
<rdfs:label>distinctMembers</rdfs:label>
<rdfs:domain rdf:resource="#AllDifferent"/>
<rdfs:range rdf:resource="&rdf;List"/>
</rdf:Property>
<rdf:Property rdf:ID="unionOf">
<rdfs:label>unionOf</rdfs:label>
<rdfs:domain rdf:resource="#Class"/>
<rdfs:range rdf:resource="&rdf;List"/>
</rdf:Property>
<rdf:Property rdf:ID="intersectionOf">
<rdfs:label>intersectionOf</rdfs:label>
<rdfs:domain rdf:resource="#Class"/>
<rdfs:range rdf:resource="&rdf;List"/>
</rdf:Property>
<rdf:Property rdf:ID="complementOf">
<rdfs:label>complementOf</rdfs:label>
<rdfs:domain rdf:resource="#Class"/>
<rdfs:range rdf:resource="#Class"/>
</rdf:Property>
<rdf:Property rdf:ID="oneOf">
<rdfs:label>oneOf</rdfs:label>
<rdfs:domain rdf:resource="&rdfs;Class"/>
<rdfs:range rdf:resource="&rdf;List"/>
</rdf:Property>
<rdfs:Class rdf:ID="Restriction">
<rdfs:label>Restriction</rdfs:label>
<rdfs:subClassOf rdf:resource="#Class"/>
</rdfs:Class>
<rdf:Property rdf:ID="onProperty">
<rdfs:label>onProperty</rdfs:label>
<rdfs:domain rdf:resource="#Restriction"/>
<rdfs:range rdf:resource="&rdf;Property"/>
</rdf:Property>
<rdf:Property rdf:ID="allValuesFrom">
<rdfs:label>allValuesFrom</rdfs:label>
<rdfs:domain rdf:resource="#Restriction"/>
<rdfs:range rdf:resource="&rdfs;Class"/>
</rdf:Property>
<rdf:Property rdf:ID="hasValue">
<rdfs:label>hasValue</rdfs:label>
<rdfs:domain rdf:resource="#Restriction"/>
</rdf:Property>
<rdf:Property rdf:ID="someValuesFrom">
<rdfs:label>someValuesFrom</rdfs:label>
<rdfs:domain rdf:resource="#Restriction"/>
<rdfs:range rdf:resource="&rdfs;Class"/>
</rdf:Property>
<rdf:Property rdf:ID="minCardinality">
<rdfs:label>minCardinality</rdfs:label>
<rdfs:domain rdf:resource="#Restriction"/>
<rdfs:range rdf:resource="&xsd;nonNegativeInteger"/>
</rdf:Property>
<rdf:Property rdf:ID="maxCardinality">
<rdfs:label>maxCardinality</rdfs:label>
<rdfs:domain rdf:resource="#Restriction"/>
<rdfs:range rdf:resource="&xsd;nonNegativeInteger"/>
</rdf:Property>
<rdf:Property rdf:ID="cardinality">
<rdfs:label>cardinality</rdfs:label>
<rdfs:domain rdf:resource="#Restriction"/>
<rdfs:range rdf:resource="&xsd;nonNegativeInteger"/>
</rdf:Property>
<rdfs:Class rdf:ID="ObjectProperty">
<rdfs:label>ObjectProperty</rdfs:label>
<rdfs:subClassOf rdf:resource="&rdf;Property"/>
</rdfs:Class>
<rdfs:Class rdf:ID="DatatypeProperty">
<rdfs:label>DatatypeProperty</rdfs:label>
<rdfs:subClassOf rdf:resource="&rdf;Property"/>
</rdfs:Class>
<rdf:Property rdf:ID="inverseOf">
<rdfs:label>inverseOf</rdfs:label>
<rdfs:domain rdf:resource="#ObjectProperty"/>
<rdfs:range rdf:resource="#ObjectProperty"/>
</rdf:Property>
<rdfs:Class rdf:ID="TransitiveProperty">
<rdfs:label>TransitiveProperty</rdfs:label>
<rdfs:subClassOf rdf:resource="#ObjectProperty"/>
</rdfs:Class>
<rdfs:Class rdf:ID="SymmetricProperty">
<rdfs:label>SymmetricProperty</rdfs:label>
<rdfs:subClassOf rdf:resource="#ObjectProperty"/>
</rdfs:Class>
<rdfs:Class rdf:ID="FunctionalProperty">
<rdfs:label>FunctionalProperty</rdfs:label>
<rdfs:subClassOf rdf:resource="&rdf;Property"/>
</rdfs:Class>
<rdfs:Class rdf:ID="InverseFunctionalProperty">
<rdfs:label>InverseFunctionalProperty</rdfs:label>
<rdfs:subClassOf rdf:resource="&owl;ObjectProperty"/>
</rdfs:Class>
<rdfs:Class rdf:ID="AnnotationProperty">
<rdfs:subClassOf rdf:resource="&rdf;Property"/>
</rdfs:Class>
<AnnotationProperty rdf:about="&rdfs;label"/>
<AnnotationProperty rdf:about="&rdfs;comment"/>
<AnnotationProperty rdf:about="&rdfs;seeAlso"/>
<AnnotationProperty rdf:about="&rdfs;isDefinedBy"/>
<rdfs:Class rdf:ID="Ontology">
<rdfs:label>Ontology</rdfs:label>
</rdfs:Class>
<rdfs:Class rdf:ID="OntologyProperty">
<rdfs:subClassOf rdf:resource="&rdf;Property"/>
</rdfs:Class>
<rdf:Property rdf:ID="imports">
<rdfs:label>imports</rdfs:label>
<rdf:type rdf:resource="#OntologyProperty"/>
<rdfs:domain rdf:resource="#Ontology"/>
<rdfs:range rdf:resource="#Ontology"/>
</rdf:Property>
<rdf:Property rdf:ID="versionInfo">
<rdfs:label>versionInfo</rdfs:label>
<rdf:type rdf:resource="#AnnotationProperty"/>
</rdf:Property>
<rdf:Property rdf:ID="priorVersion">
<rdfs:label>priorVersion</rdfs:label>
<rdf:type rdf:resource="#OntologyProperty"/>
<rdfs:domain rdf:resource="#Ontology"/>
<rdfs:range rdf:resource="#Ontology"/>
</rdf:Property>
<rdf:Property rdf:ID="backwardCompatibleWith">
<rdfs:label>backwardCompatibleWitesh</rdfs:label>
<rdf:type rdf:resource="#OntologyProperty"/>
<rdfs:domain rdf:resource="#Ontology"/>
<rdfs:range rdf:resource="#Ontology"/>
</rdf:Property>
<rdf:Property rdf:ID="incompatibleWith">
<rdfs:label>incompatibleWith</rdfs:label>
<rdf:type rdf:resource="#OntologyProperty"/>
<rdfs:domain rdf:resource="#Ontology"/>
<rdfs:range rdf:resource="#Ontology"/>
</rdf:Property>
<rdfs:Class rdf:ID="DeprecatedClass">
<rdfs:label>DeprecatedClass</rdfs:label>
<rdfs:subClassOf rdf:resource="&rdfs;Class"/>
</rdfs:Class>
<rdfs:Class rdf:ID="DeprecatedProperty">
<rdfs:label>DeprecatedProperty</rdfs:label>
<rdfs:subClassOf rdf:resource="&rdf;Property"/>
</rdfs:Class>
<rdfs:Class rdf:ID="DataRange">
<rdfs:label>DataRange</rdfs:label>
</rdfs:Class>
</rdf:RDF>
Załącznik C. OWL Szybkie Referencje
Klasy w słownictwie OWLa:
Własności w słownictwie OWL:
Załącznik D. Zmiany w DAML+OIL
Ta sekcja podsumowuje zmiany z DAML+OIL [DAML+OIL] do OWL.
- Znacząco zmieniła się semantyka. Nie ubliżając
żadnemu z trzech podjęzyków, semantyka DAML+OIL jest
najbliższa semantyce OWL DL.
- Przestrzeń nazw została zmieniona na http://www.w3.org/2002/07/owl.
- Różne aktualizacje dla RDF i RDF Schema zostały włączone
przez Grupę Roboczą RDF Core,
w szczególności
- cykliczne podklasy nie są dozwolone
- wielokrotne
rdfs:domain i rdfs:range własności
są traktowane jako koniunkcja
- RDF Semantyka [RDF Semantyka]
-
typy danych
- konstrukcja
daml:List używana do reprezentacji zamkniętego
zbioru została w dużej mierze włączona do RDF
- Ograniczenia kwalfikowane zostały usunięte z języka, co w
konsekwencji spowodowało usunięcie następujących
własności:
daml:cardinalityQ
daml:hasClassQ
daml:maxCardinalityQ
daml:minCardinalityQ
- Zostały zmienione nazwy różnych własności i klasy, jak
pokazano w tabeli:
- Dodano
owl:SymmetricProperty.
- Dodano również
owl:AnnotationProperty, owl:OntologyProperty i owl:DataRange.
owl:DatatypeProperty może
być owl:InverseFunctionalProperty w OWL
Full.
- Synonimy dla klas i własności RDF i RDF Schema zostały usunięte
z języka, co spowodowało usunięcie:
daml:comment
daml:domain
daml:label
daml:isDefinedBy
daml:Literal
daml:Property
daml:range
daml:seeAlso
daml:subClassOf
daml:subPropertyOf
daml:type
daml:value
daml:disjointUnionOf zostało usunięte z języka,
ponieważ można efektywnie używać owl:unionOf lub rdfs:subClassOf i owl:disjointWith.
- Nazwa
daml:equivalentTo została zmieniona na owl:sameAs, i nie jest to już
superwłasnością owl:equivalentClass i owl:equivalentProperty,
- Następujące własności i klasy zostały dodane, aby
wspierać kontrolę wersji:
- owl:AllDifferent i owl:distinctMembers zostały dodane, aby odnosić
się do Założeń Nazw Unikalnych.
Załącznik E. Zasada kciuka dla
ontologii w OWL DL
Dokument OWL Semantyka i lista składni [OWL S&AS] zapewnia charakteryzację
ontologii OWL w dziedzinie listy składni, jak również mapowania na
trójkach RDF.
Poniższe zasady dają nieformalnie scharakteryzowane warunki dla
grafów RDF, aby były ontologią DL. Nie ma to zastąpić
charakteryzacji danej przez S&AS, ale zamiast tego dać kilka ogólnych
wskazówek - idea jest taka: jeśli trzymasz się tych wytycznych,
najprawdopodobniej stworzysz ontologię w OWL DL. Ani również
powiedzieć jak zamienić potrójną reprezentację w coś
bliższego liście składni.
Nie mieszaj w słownictwie
Wbudowane własności i klasy nie powinny być
redefiniowane. Ogólnie oznacza to, że rzeczy w przestrzeni nazw OWL, RDF
lub RDFS nie powinny pojawić się jako tematy trójek.
Zapewnienie jasnego typowania
Wszystko powinno mieć typ 1. Jeśli jakakolwiek
referencja URI x jest użyta tam, gdzie jest oczekiwana klasa, graf
powinien zawierać trójkę stwierdzającą, że
x rdf:type owl:Class
Podobnie, jeśli własność p jest użyta tam,
gdzie oczekiwana jest własność obiektu, wtedy powinna być
trójka2
p rdf:type owl:ObjectProperty
Jeśli własność q jest użyta tam, gdzie
spodziewana jest własność danych, wtedy powinna być
trójka
q rdf:type owl:DatatypeProperty
Jeśli własność o jest użyta tam, gdzie
spodziewana jest własność ontologii, wtedy powinna być albo jedna
z wbudowanych własności ontologii (owl:imports,
owl:priorVersion, owl:backwardCompatibleWith i
owl:incompatibleWith) lub trójka:
o rdf:type owl:OntologyProperty
Jeśli własność a jest użyta tam, gdzie
spodziewana jest własność adnotacji, wtedy powinna być albo jedna
z wbudowanych własności adnotacji (owl:versionInfo,
rdfs:label, rdfs:comment, rdfs:seeAlso, i
rdfs:isDefinedBy) lub trójka:
a rdf:type owl:AnnotationProperty
Każde indywidua pojawiające się w ontologii powinny mieć
przynajmniej jeden określony typ, np. dla indywiduum i musi być
trójka:
i rdf:type c
gdzie c jest owl:Class lub owl:Restriction.
Pamiętaj o oddzielnych
nazwach
Referencje URI dla klas i własności (obiekt, typ danych, ontologia i
adnotacja) i indywidua powinny być rozłączne. Zatem nie możemy
mieć rzeczy takich jak:
x rdf:type owl:Class
x rdf:type owl:ObjectProperty
W szczególności oznacza to, że nie możemy użyć
klasy jako instancji, np.
x rdf:type owl:Class
y rdf:type owl:Class
x rdf:type y
to nie jest legalny OWL DL. Ogólną zasadą jest tutaj to, że
jeśli jest węzeł x w grafie z trójką:
x rdf:type owl:Class
wtedy x nie powinno pojawić się jako temat żadnej
innej trójki z predykatem rdf:type.3
Ograniczenia
Jeśli węzeł x ma rdf:type
owl:Restriction wtedy prawdziwe powinno być co następuje:
- Jest to pusty węzeł (tzn. nienazwany).
- To nie jest temat żadnej innej trójki z predykatem
rdf:type3.
- Jest to temat dokładnie jednej trójki z predykatem
owl:onProperty, z obiektem trójki jako
owl:ObjectProperty lub owl:DatatypeProperty.
- Jest to temat dokładnie jednej:
- Trójki z predykatem
owl:someValuesFrom. W tym przypadku typ
własności, którym jest obiekt trójki owl:onProperty
powinien być właściwy. Przez to rozumiemy, ze jeśli obiekt tej
trójki jest typem danych, własnością powinno być
owl:DatatypeProperty. Jeśli obiekt jest opisem klasy,
własnością powinna być owl:ObjectProperty. Te typowe
informacje powinny być przedstawione (w zależności od
ograniczeń wypisanych powyżej).
- Trójka z predykatem
owl:allValuesFrom. Podobne ograniczenia
obowiązują jak dla owl:someValuesFrom
- Trójka z predykatem
owl:hasValue. Jeśli typ
własności zawartej w trójce owl:onProperty jest
owl:ObjectProperty wtedy obiekt tej trójki powinien być
indywiduum. Jeśli typ własności zawarty w trójce
owl:onProperty jest owl:DatatypeProperty, obiekt tej
trójki powinien być literałem danych.
- Trójka z predykatem
owl:minCardinality. Obiekt tej trójki
powinien być literałem danych reprezentującym nieujemne liczby
całkowite.
- Trójka z predykatem
owl:maxCardinality. Ograniczenie jak dla
owl:minCardinality.
- Trójka z predykatem
owl:cardinality. Ograniczenie jak dla
owl:minCardinality.
- Każde inne trójki wktórych
x jest tematem powinny
mieć predykat owl:equivalentClass lub
owl:disjointWith.
Aksjomaty klas
Dla jakiejkolwiek trójki z predykatem rdfs:subClassOf lub
owl:equivalentClass lub owl:disjointWith, zarówno temat
jak i obiekt trójki powinny być owl:Class lub
owl:Restriction, tzn. jeśli mamy:
x rdfs:subClassOf y
wtedy graf musi zawierać jedno:
x rdf:type owl:Class
lub
x rdf:type owl:Restriction.
i jedno
y rdf:type owl:Class
lub
y rdf:type owl:Restriction.
Aksjomaty własności
Dla jakiejkolwiek trójki z predykatem rdfs:subPropertyOf lub
owl:equivalentProperty, zarówno temat, jak i obiekt trójek
powinny mieć ten sam typ, którym powinno być jedno z
owl:ObjectProperty lub owl:DatatypeProperty, tzn. jeśli
mamy:
p owl:equivalentProperty q
wtedy graf musi zawierać albo:
p rdf:type owl:ObjectProperty
q rdf:type owl:ObjectProperty.
lub
p rdf:type owl:DatatypeProperty
q rdf:type owl:DatatypeProperty.
Trójki z predykatem rdfs:domain powinny mieć jako
swój temat owl:ObjectProperty lub owl:DatatypeProperty i
jako ich obiekt owl:Class lub owl:Restriction.
Trójki z predykatem rdfs:range powinny mieć jako temat albo
owl:ObjectProperty albo owl:DatatypeProperty. W przypadku
poprzednim obiekt trójki powinien wtedy być owl:Class lub
owl:Restriction, w przypadku drugim obiekt powinien być albo typem
danych XML Schema, rdfs:Literal, lub owl:oneOf
określającym zakres danych typu owl:DataRange.
Zarówno temat jak i obiekt trójki owl:inverseOf musi
mieć typ owl:ObjectProperty.
Aksjomaty indywiduum
Dla jakiejkolwiek trójki z predykatem owl:sameAs lub
owl:differentFrom, temat i obiekt muszą być indywiduami.
Zauważ, że łączenie dwóch klas przez
owl:sameAs jest czymś innym niż łączenie ich przez
owl:equivalentClass. Poprzedni mówi, że dwa obiekty sa w
zasadzie takie same, jest to aktualnie przykład klasy jako instancji, zatem
wypycha ontologię z OWL DL. Drugi jest zapewnieniem, że rozszerzenie (np.
zbiór członków) klas jest równoważne.
Podobnie, łączenie klas przez owl:differentFrom nie jest takie
samo jak łączenie ich przez owl:disjointWith (jest to znowu
przykład konstrukcji OWL Full). Dwie klasy mogą być różnymi
obiektami, ale w dalszym ciągu dzielić to samo rozszerzenie.
Jeśli węzeł x ma rdf:type
owl:AllDifferent, wtedy prawdziwe powinny być poniższe
stwierdzenia:
- Jest to pusty węzeł (tzn. nienazwany).
- Jest to temat trójki z predykatem
owl:distinctMembers,
którego obiektem powinno być (dobrze sformułowana)
rdf:List, której wszystkie elementy powinny być
indywiduami.
- To nie jest temat (ani obiekt) żadnej innej trójki.
Boolean
wyrażenia klasy
Operatory Boolean'a (and, or, not) są reprezentowane w OWL poprzez użycie
owl:intersectionOf, owl:unionOf i
owl:complementOf.
Temat trójki owl:complementOf musi być
owl:Class, obiekt musi być albo owl:Class albo
owl:Restriction.
Temat trójki owl:unionOf lub owl:intersectionOf musi
być owl:Class, obiekt musi być (dobrze sformułowaną)
rdf:List, której wszystkie elementy są albo
owl:Class albo owl:Restriction. To może być albo
reprezentowane wyłącznie przez użycie rozszerzonej
rdf:Lists, lub jeśli używamy RDF-XML, atrybutu
rdf:parseType="Collection".
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="x"/>
<owl:Class rdf:about="y"/>
</owl:intersectionOf>
</owl:Class>
Jeśli owl:Class jest pustym węzłem (tzn. klasa jest
nienazwana), wtedy to może tylko być tematem jedne trójki z
predykatem owl:intersectionOf, owl:unionOf lub
owl:complementOf. Jeśli klasa jest nazwana, jakakolwiek liczba takich
trójek jest dozwolona.
Wyliczenia
Temat jakiejkolwiek trójki z predykatem owl:oneOf musi być
albo owl:Class albo owl:DataRange. W przypadku poprzednim,
obielt musi być (dobrze sformułowaną) rdf:List,
której wszystkie elementy są indywiduami. W przypadku drugim, obiekt musi
być (dobrze sformułowaną) rdf:List, której wszystkie
elementy są literałami danych. Znowu, jak w przypadku operatorów
boolean'a, możemy użyć rdf:parseType="Collection".
Własności ontologii i
adnotacji
Temat i obiekt jakiejkolwiek trójki z ontologii predykatu powinny być
ontologią, np. węzeł x taki, że jest taka
trójka:
x rdf:type owl:Ontology
Temat jakiejkolwiek trójki z adnotacją predykatu powinien być
nazwaną (tzn. nie-bwęzłem) klasą, własnością
indywiduum, lub ontologią. Obiekt trójki z adnotacją predykatu powinien
być indywiduum, literałem danych lub arbitralnie referencją URI.
Z wyłączeniem predykatów w słownictwie OWL, RDF i RDFS adnotacje
własności są tylko predykaty, które powinny
pojawić się w trójkach z klasą lub własnością
jako tematem.
Własności adnotacji i ontologii same w sobie powinny być typowe i nie powinny objawić się jako temat lub obiekt
trójki inny niż jako temat trójki z predykatem rdf:type
lub adnotacją własności.
Unikanie dzielenia struktur
Generalnie, opis S&AS w OWL nie pozwala na dzielenie struktur w
reprezentacji RDF. W rzeczywistości oznacza to, że anonimowy
węzeł w grafie RDF reprezentujący szczególny opis powinien
pojawić się tylko raz (jako obiekt w trójce). Zatem rzeczy takie
jak:
x1 rdf:type owl:Class
x1 rdfs:subClassOf _:y
x2 rdf:type owl:Class
x2 rdfs:subClassOf _:y
_:y rdf:type owl:Class
_:y owl:complementOf z
powinien być unikany. Jest kilka podchwytliwych przypadków kiedy to
jest dopuszczalne. Generalnie, jakkolwiek, grafy powinny używać
różnych pustych węzłów, kiedykolwiek opis klasy jest
użyty w więcej niż jednym miejscu.
Unikanie osieroconych pustych
węzłów
Generalnie, puste węzły pojawiające się w grafach albo
reprezentują nienazwane indywidua lub powinny być dokładnie
jednym z poniższych:
- Obiekt
rdfs:subClassOf, owl:equivalentClass,
owl:disjointWith, owl:someValuesFrom,
owl:allValuesFrom lub trójka rdf:type.
- Temat trójki
rdf:type z obiektu
owl:AllDifferent.
- Element w
rdf:List.
Osierocone puste węzły, tzn. te, które nie są obiektem
trójki, ogólnie nie są dopuszczone (inaczej niż przypadek
owl:AllDifferent opisany powyżej).
Podstawowe fakty
Ontologie mogą zawierać założenia o faktach podstawowych (np.
trójki, które zakładają własności indywiduów).
Własności używane w tych założeniach muszą być
owl:ObjectProperty lub owl:DatatypeProperty. Tematem
jakiejkolwiek takiej trójki musi być indywiduum (które powinno
być typowe). Obiekt może być albo
referencją do indywiduum (jeśli własność jest
owl:ObjectProperty) lub literałem danych (jeśli
własność jest owl:DatatypeProperty).
OWL Lite
Dokumenty OWL Lite powinny spełniać te same zasady co dokumenty OWL DL z
kilkoma dodatkowymi ograniczeniami, w zasadzie odnoszącymi się do
dopuszczalnego słownictwa. Dokument OWL Lite nie powinien używać
żadnego z następującego słownictwa:
owl:unionOf
owl:complementOf
owl:oneOf
owl:hasValue
owl:disjointWith
Jakiekolwiek obiekty,które są obiektem lub tematem trójki z
predykatem owl:equivalentClass nie powinny być
b-węzłami.
Obiekt jakiejkolwiek trójki z predykatem owl:minCardinality,
owl:maxCardinality lub owl:cardinality powinien być
literałem danych reprezentującym liczbę całkowitą 0 lub 1.
Sytuacja odnosząca się do użycia owl:intersectionOf w
OWL Lite jest trochę bardziej złożona. Predykat nie
powinien być użyty do formowania arbitralnych wyrażeń, ale
jest potrzebny, aby reprezentować kompletne definicje klasy.
Powyższe ograniczenia mówią nam, że temat jakiejkolwiek
trójki z predykatem owl:intersectionOf powinien być
owl:Class. W OWL Lite mamy dalsze ograniczenie, że ta klasa powinna
być nazwana, tzn. temat nie powinien być b-węzłem.
Rozmaitości
Bądź ostrożny przy użyciu owl:Thing. Na
przykład następujący fragment OWL-RDF:
<owl:Class rdf:about="#A">
<rdfs:subClassOf>
<owl:Thing/>
</rdfs:subClassOf>
</owl:Class>
nie opisuje klasy A która jest podklasą
owl:Thing, ale w rzeczywistości opisuje klasę A,
która jest podklasą jakiejś anonimowej instancji
owl:Thing. To jest zatem użycie klasy jako instancji i jest poza OWL
DL. Pożądany efekt podklasy owl:Thing jest zapewniony
poprzez:
<owl:Class rdf:about="#A">
<rdfs:subClassOf>
<owl:Class rdf:about="http://www.w3.org/2002/07/owl#Thing"/>
</rdfs:subClassOf>
</owl:Class>
Bądź ostrożny, aby nie pomylić owl:Class i
rdfs:Class. Następujące nie jest w DL ze
względu na fakt, że c nie jest dane odpowiednim typem.
c rdf:type rdfs:Class
Uwagi
[1] Oczywiście potrzeby do typowania wszystkiego nie stosuje
się do rzeczy z przestrzeni nazw OWL, RDF i RDFS.
[2] Dokładniej mówiąc, jeśli
własność jest zdefiniowana jako owl:TransitiveProperty,
owl:SymmetricProperty lub owl:InverseFunctionalProperty wtedy
nie jest to wymagane.
[3] Wyjątkiem tutaj jest, że możemy mieć:
x rdf:type rdfs:Class
x rdf:type owl:Class
p rdf:type rdf:Property
p rdf:type owl:ObjectProperty
lub
q rdf:type rdf:Property
q rdf:type owl:DatatypeProperty
W dodatku dla ograniczeń możemy mieć:
x rdf:type owl:Restriction
x rdf:type rdfs:Class
x rdf:type owl:Class
Załącznik F. Zmiany w
dzienniku od czasu publikacji poprzedniej wersji
- Usunięto błędną notatkę końcową[4] w
Załączniku E.
- Dodano element rdfs:label do AnnotationProperty i OntologyProperty w
Załączniku B (RDF Schema OWLa) po komentarzu od Jacco van
Ossenbruggen.
- Naprawiono zepsuty rozdział referencji plus poprawiono styl rozdziału
referencji.
- Ustandaryzowano sekcję refencji.
- Edytorska korekta opisu wymagań dla elementu rdf:RDF po komentarzu od Minsu
Jang.
- Kilka zmian edytorskich w odpowiedzi na uwagi Lacy.
- Dodano tekst wyjaśniający do Rozdziału 7.1 o ograniczeniach OWL DL
przy używaniu własności adnotacji po kilku publicznych komentarzach
(np. patrz komentarze Benjamin
Nowack). Dodano również zdanie do Rozdziału 7.2 aby
określić, że te same ograniczenia obowiązują dla
własności ontologii.
- Kilka małych poprawek edytorskich po ostatecznym przeczytaniu przez
redaktora.
- [Przegląd OWL]
- OWL Web Ontology
Language Overview, Deborah L. McGuinness and Frank van Harmelen, Editors,
Rekomendacja W3C, 10 lutego 2004r., http://www.w3.org/TR/2004/REC-owl-features-20040210/
. Ostatnia wersja dostępna na
http://www.w3.org/TR/owl-features/ .
- [Przewodnik OWL]
- OWL Web Ontology
Language Guide, Michael K. Smith, Chris Welty, and Deborah L. McGuinness,
Editors, Rekomendacja W3C, 10 lutego 2004r.,
http://www.w3.org/TR/2004/REC-owl-guide-20040210/ . Ostatnia wersja dostępna na
http://www.w3.org/TR/owl-guide/ .
- [Semantyka i lista
składni OWL]
- OWL Web
Ontology Language Semantics and Abstract Syntax, Peter F. Patel-Schneider,
Patrick Hayes, and Ian Horrocks, Editors, Rekomendacja W3C, 10 lutego 2004r.,
http://www.w3.org/TR/2004/REC-owl-semantics-20040210/ . Ostatnia wersja dostępna na
http://www.w3.org/TR/owl-semantics/ .
- [Test OWL]
- OWL Web Ontology
Language Test Cases, Jeremy J. Carroll and Jos De Roo, Editors, Rekomendacja
W3C, 10 lutego 2004r., http://www.w3.org/TR/2004/REC-owl-test-20040210/ . Ostatnia wersja dostępna na
http://www.w3.org/TR/owl-test/ .
- [Wymagania OWL]
- OWL Web Ontology
Language Use Cases and Requirements, Jeff Heflin, Editor, Rekomendacja W3C, 10
lutego 2004r., http://www.w3.org/TR/2004/REC-webont-req-20040210/ . Ostatnia wersja dostępna na
http://www.w3.org/TR/webont-req/ .
- [Koncepcje RDF]
- Resource
Description Framework (RDF): Concepts and Abstract Syntax, Graham Klyne and
Jeremy J. Carroll, Editors, Rekomendacja W3C, 10 lutego 2004r.,
http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/ . Ostatnia wersja dostępna na
http://www.w3.org/TR/rdf-concepts/ .
- [Składnia RDF]
- RDF/XML
Syntax Specification (Revised), Dave Beckett, Editor, Rekomendacja W3C, 10
lutego 2004r., http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/ . Ostatnia wersja dostępna na
http://www.w3.org/TR/rdf-syntax-grammar/ .
- [Semantyka RDF]
- RDF
Semantics, Pat Hayes, Editor, Rekomendacja W3C, 10 lutego 2004r.,
http://www.w3.org/TR/2004/REC-rdf-mt-20040210/ . Ostatnia wersja dostępna na
http://www.w3.org/TR/rdf-mt/ .
- [Słownictwo RDF]
- RDF Vocabulary
Description Language 1.0: RDF Schema, Dan Brickley and R. V. Guha, Editors,
Rekomendacja W3C, 10 lutego 2004r., http://www.w3.org/TR/2004/REC-rdf-schema-20040210/ .
Ostatnia wersja dostępna na
http://www.w3.org/TR/rdf-schema/ .
- [DAML+OIL]
- DAML+OIL
(March 2001) Reference Description. Dan Connolly, Frank van Harmelen, Ian
Horrocks, Deborah L. McGuinness, Peter F. Patel-Schneider, and Lynn Andrea Stein. W3C
Note 18 grudnia 2001r. Ostatnia
wersja dostępna na
http://www.w3.org/TR/daml+oil-reference.
- [XML-SCHEMA2]
- XML Schema Part 2: Datatypes -
Rekomendacja W3C, World Wide Web Consortium, 2 maja 2001r.
|