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, Tomasz dot Kubik at pwr dot wroc dot pl
Politechnika Wrocławska

W3C

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.


Streszczenie

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.

Status tego dokumentu

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/.

Podziękowania

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.

Spis treści


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.

1.5 Notatka o przykładach

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].

1.6 Agregacja danych i prywatność

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

1.7 Załączniki do tego dokumentu

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.

2.1 Istota

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].

2.2 Wbudowany słownik OWL

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.

2.3 Typ MIME

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.

3. Klasy

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.

3.1 Opisy klasy

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:

  1. identyfikator klasy (referencja URI)
  2. wyczerpujące wyliczenie indywiduów, które razem tworzą instancje klasy
  3. ograniczenia własności
  4. koniunkcja dwóch lub więcej opisów klasy
  5. suma dwóch lub więcej opisów klasy
  6. 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).

3.1.1 Wyliczenie

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

3.1.2 Ograniczenia własności

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.

3.1.2.1 Ograniczenia wartości
3.1.2.1.1 owl:allValuesFrom

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.

3.1.2.1.2 owl:someValuesFrom

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.

3.1.2.1.3 owl:hasValue

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>
3.1.2.2 Ograniczenia mocy zbioru

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".

3.1.2.2.1 owl:maxCardinality

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.

3.1.2.2.2 owl:minCardinality

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.

3.1.2.2.3 owl:cardinality

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>

3.1.3 Koniunkcja, suma i dopełnienie

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).

3.1.3.1 owl:intersectionOf

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.

3.1.3.2 owl:unionOf

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.

3.1.3.3 owl:complementOf

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.

3.2 Aksjomaty klasy

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").

3.2.1 rdfs:subClassOf

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.

3.2.2 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ą.

3.2.3 Aksjomaty dla kompletnych klas bez użycia owl:equivalentClass

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.

3.2.4 owl:disjointWith

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.

4. Własności

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).

4.1 Konstrukcja RDF Schema

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.

4.1.1 rdfs:subPropertyOf

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.

4.1.2 rdfs:domain

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.

4.1.3 rdfs:range

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.

4.2 Relacje do innych własności

4.2.1 owl:equivalentProperty

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.

4.2.2 owl:inverseOf

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>

4.3 Globalne ograniczenia mocy zbioru na własnościach

4.3.1 owl:FunctionalProperty

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" />

4.3.2 owl:InverseFunctionalProperty

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.

4.4 Logiczne charakterystyki własności

4.4.1 owl:TransitiveProperty

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.

4.4.2 owl:SymmetricProperty

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.

5. Indywidua

Indywidua są zdefiniowane przez indywidualne aksjomaty (również nazywanymi "faktami"). Omawiamy dwa typy faktów:

  1. Fakty o członkostwie klasy i wartościach własności indywiduów
  2. Fakty o tożsamości indywiduum

5.1 Członkostwo klasy i wartości własności

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 ].

5.2 Indywidualna tożsamość

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.

5.2.1 owl:sameAs

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].

5.2.2 owl:differentFrom

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.

5.2.3 owl:AllDifferent

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:

  • Kanoniczne odniesienie URI do typu danych XML Schema w formie:
           http://www.w3.org/2001/XMLSchema#NAME
        
    
    gdzie "NAZWA" powinna być nazwą prostych typów danych XML Schema built-in, definiowanych w Rozdziale 3 [Typy danych XML Schema ], z klauzulami wymienionymi poniżej.
  • Typy danych odniesienia URI rdf:XMLLiteral. Ten typ danych jest używany do zawarcia istoty XMLa w dokumentacji RDF/OWL. Odniesienia URI tego typu danych:
    
        http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral
      
    
    W celu znalezienia szczegółów tego typu danych patrz Koncepcje RDF [RDF Koncepcje].

Semantyka RDF [RDF Semantyka, Rozdział 5]. poleca użycie poniższego prostego wbudowanego typu danych XML Schema.

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.Adnotacje, nagłówki ontologii, zapożyczenia i informacje wersji.

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:

  • Zbiory własności przedmiotu, własności typu danych, własności adnotacji i własności ontologii muszą być wzajemnie rozłączne. W ten sposób w OWL DL dc:creator nie mogą wystąpić równocześnie własności typu danych i własności adnotacji.
  • Własności adnotacji muszą mieć wyraźny typ trójki w formie:
    
        AnnotationPropertyID rdf:type owl:AnnotationProperty .
      
    
  • Własności adnotacji nie powinny zostać użyte w aksjomatach własności. W ten sposób w OWL DL nie można zdefiniować podwłasności lub dziedziny/zasięgu ograniczeń dla własności adnotacji.
  • Obiekt własności adnotacji musi być albo literałem danych, odniesieniem URI, albo indywiduum.

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>

7.2 Nagłówki ontologii

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.

7.3 Importowanie ontologii

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.

7.4 Wersja informacji

7.4.1 owl:versionInfo

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.

7.4.2 owl:priorVersion

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.

7.4.3 owl:backwardCompatibleWith

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.

7.4.4 owl:incompatibleWith

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.

7.4.5 owl:DeprecatedClass and owl:DeprecatedProperty

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" />

8. OWL Full, OWL DL and OWL Lite

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].

8.1 OWL Full

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,

8.2 OWL DL

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.

8.3 OWL Lite

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.

Załącznik A. Indeks wszystkich elementów języka

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].

[OWL Referencje]
(niniejszy dokument)
[OWL Semantyka]
(normatywny)
[OWL Przewodnik]
(przykłady)
owl:AllDifferent owl:AllDifferent owl:AllDifferent
owl:allValuesFrom owl:allValuesFrom owl:allValuesFrom
owl:AnnotationProperty owl:AnnotationProperty
owl:backwardCompatibleWith owl:backwardCompatibleWith owl:backwardCompatibleWith
owl:cardinality owl:cardinality owl:cardinality
owl:Class owl:Class owl:Class
owl:complementOf owl:complementOf owl:complementOf
owl:DataRange owl:DataRange
owl:DatatypeProperty owl:DatatypeProperty owl:DatatypeProperty
owl:DeprecatedClass owl:DeprecatedClass owl:DeprecatedClass
owl:DeprecatedProperty owl:DeprecatedProperty owl:DeprecatedProperty
owl:differentFrom owl:differentFrom owl:differentFrom
owl:disjointWith owl:disjointWith owl:disjointWith
owl:distinctMembers owl:distinctMembers owl:distinctMembers
owl:equivalentClass owl:equivalentClass owl:equivalentClass
owl:equivalentProperty owl:equivalentProperty owl:equivalentProperty
owl:FunctionalProperty owl:FunctionalProperty owl:FunctionalProperty
owl:hasValue owl:hasValue owl:hasValue
owl:imports owl:imports owl:imports
owl:incompatibleWith owl:incompatibleWith owl:incompatibleWith
owl:intersectionOf owl:intersectionOf owl:intersectionOf
owl:InverseFunctionalProperty owl:InverseFunctionalProperty owl:InverseFunctionalProperty
owl:inverseOf owl:inverseOf owl:inverseOf
owl:maxCardinality owl:maxCardinality owl:maxCardinality
owl:minCardinality owl:minCardinality owl:minCardinality
owl:Nothing owl:Nothing owl:Nothing
owl:ObjectProperty owl:ObjectProperty owl:ObjectProperty
owl:oneOf owl:oneOf owl:oneOf
owl:onProperty owl:onProperty owl:onProperty
owl:Ontology owl:Ontology owl:Ontology
owl:OntologyProperty owl:OntologyProperty
owl:priorVersion owl:priorVersion owl:priorVersion
owl:Restriction owl:Restriction owl:Restriction
owl:sameAs owl:sameAs owl:sameAs
owl:someValuesFrom owl:someValuesFrom owl:someValuesFrom
owl:SymmetricProperty owl:SymmetricProperty owl:SymmetricProperty
owl:Thing owl:Thing owl:Thing
owl:TransitiveProperty owl:TransitiveProperty owl:TransitiveProperty
owl:unionOf owl:unionOf owl:unionOf
owl:versionInfo owl:versionInfo owl:versionInfo

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:

rdfs:Class
owl:AllDifferent
owl:AnnotationProperty
owl:Class
owl:DataRange
owl:DatatypeProperty
owl:DeprecatedClass
owl:DeprecatedProperty
owl:FunctionalProperty
owl:InverseFunctionalProperty
owl:Nothing
owl:ObjectProperty
owl:Ontology
owl:OntologyProperty
owl:Restriction
owl:SymmetricProperty
owl:Thing
owl:TransitiveProperty

Własności w słownictwie OWL:

rdf:Property rdfs:domain rdfs:range
owl:allValuesFrom owl:Restriction rdfs:Class
owl:backwardCompatibleWith owl:Ontology owl:Ontology
owl:cardinality owl:Restriction xsd:nonNegativeInteger
owl:complementOf owl:Class owl:Class
owl:differentFrom owl:Thing owl:Thing
owl:disjointWith owl:Class owl:Class
owl:distinctMembers owl:AllDifferent rdf:List
owl:equivalentClass owl:Class owl:Class
owl:equivalentProperty rdf:Property rdf:Property
owl:hasValue owl:Restriction
owl:imports owl:Ontology owl:Ontology
owl:incompatibleWith owl:Ontology owl:Ontology
owl:intersectionOf owl:Class rdf:List
owl:inverseOf owl:ObjectProperty owl:ObjectProperty
owl:maxCardinality owl:Restriction xsd:nonNegativeInteger
owl:minCardinality owl:Restriction xsd:nonNegativeInteger
owl:oneOf owl:Class rdf:List
owl:onProperty owl:Restriction rdf:Property
owl:priorVersion owl:Ontology owl:Ontology
owl:sameAs owl:Thing owl:Thing
owl:someValuesFrom owl:Restriction rdfs:Class
owl:unionOf owl:Class rdf:List
owl:versionInfo

Załącznik D. Zmiany w DAML+OIL

Ta sekcja podsumowuje zmiany z DAML+OIL [DAML+OIL] do OWL.

  1. 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.
  2. Przestrzeń nazw została zmieniona na http://www.w3.org/2002/07/owl.
  3. 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
      • RDF i OWL używają przestrzeni nazwy XML Schema http://www.w3.org/2001/XMLSchema bardziej niż http://www.w3.org/2000/10/XMLSchema.
      • OWL nie zapewnia wsparcia przy użyciu typów danych jako typów, np.
        <size>
          <xsd:integer rdf:value="10"/>
        
        </size>
        
        Zamiast tego używa
        <size
        rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">10</size>
        
    • konstrukcja daml:List używana do reprezentacji zamkniętego zbioru została w dużej mierze włączona do RDF
      • rdf:parseType="Collection" zastąpiono rdf:parseType="daml:collection"
      • rdf:List, rdf:first, rdf:rest i rdf:nil zastąpiono daml:List, daml:first, daml:rest, i daml:nil
      • daml:item nie jest wspierane. Jako, że ta cecha była typowo używana do tworzenia typowych list, załączamy tutaj przykład tworzenia takiej listy bez użycia daml:item:
        
                <rdfs:Class rdf:ID="OperaList">
                  <rdfs:subClassOf rdf:resource="&rdf;List"/>
                  <rdfs:subClassOf>
                    <owl:Restriction>
                      <owl:onProperty rdf:resource="&rdf;first"/>
        
                      <owl:allValuesFrom rdf:resource="#Opera"/>
                    </owl:Restriction>
                  </rdfs:subClassOf>
                  <rdfs:subClassOf>
                    <owl:Restriction>
                      <owl:onProperty rdf:resource="&rdf;rest"/>
        
                      <owl:allValuesFrom rdf:resource="#OperaList"/>
                    </owl:Restriction>
                  </rdfs:subClassOf>
                </rdfs:Class>
                
        
        Ten przykład definiuje listę, której elementy w większości są operami. Jest to osiągnięte poprzez dwa ograniczenia. Jedno na wartości rdf:first (reprezentowany przez typ elementu listy) i drugie ograniczenie na wartości rdf:rest (które powinno definiować nazwę listy).
  4. 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
  5. Zostały zmienione nazwy różnych własności i klasy, jak pokazano w tabeli:
    DAML+OIL OWL
    daml:differentIndividualFrom owl:differentFrom
    daml:equivalentTo owl:sameAs
    daml:sameClassAs owl:equivalentClass
    daml:samePropertyAs owl:equivalentProperty
    daml:hasClass owl:someValuesFrom
    daml:toClass owl:allValuesFrom
    daml:UnambiguousProperty owl:InverseFunctionalProperty
    daml:UniqueProperty owl:FunctionalProperty
  6. Dodano owl:SymmetricProperty.
  7. Dodano również owl:AnnotationProperty, owl:OntologyProperty i owl:DataRange.
  8. owl:DatatypeProperty może być owl:InverseFunctionalProperty w OWL Full.
  9. 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
  10. daml:disjointUnionOf zostało usunięte z języka, ponieważ można efektywnie używać owl:unionOf lub rdfs:subClassOf i owl:disjointWith.
  11. Nazwa daml:equivalentTo została zmieniona na owl:sameAs, i nie jest to już superwłasnością owl:equivalentClass i owl:equivalentProperty,
  12. Następujące własności i klasy zostały dodane, aby wspierać kontrolę wersji:
  13. 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

  1. Usunięto błędną notatkę końcową[4] w Załączniku E.
  2. Dodano element rdfs:label do AnnotationProperty i OntologyProperty w Załączniku B (RDF Schema OWLa) po komentarzu od Jacco van Ossenbruggen.
  3. Naprawiono zepsuty rozdział referencji plus poprawiono styl rozdziału referencji.
  4. Ustandaryzowano sekcję refencji.
  5. Edytorska korekta opisu wymagań dla elementu rdf:RDF po komentarzu od Minsu Jang.
  6. Kilka zmian edytorskich w odpowiedzi na uwagi Lacy.
  7. 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.
  8. Kilka małych poprawek edytorskich po ostatecznym przeczytaniu przez redaktora.

Referencje

[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.