Ontologie dla laików aka poradnik sapera — odcinek #1
Rozważając praktyczne zastosowania Sieci Semantycznej nie da się uciec od problemu definiowania ontologii[1], choćby i w OWL. A ponieważ zagadnienie to jest samo w sobie dosyć skomplikowane (choć nie niewykonalne jak widać np. po SchemaWeb) bardzo łatwo popełnić kilka smutnych w konsekwencjach błędów. Zamierzam w tym i kilku następnych wpisach zanalizować, a przynajmniej zapisać sobie ku pamięci, jakie błędy można popełnić przy definiowaniu ontologii, jeśli „zapomni się” zrzucić bagaż codziennego (przynajmniej dla mnie) myślenia kategoriami, które sprawdzają się w systemach informatycznych, ale zupełnie nie pasują do otwartego świata Semantic Web.
Pierwszym i właściwie najbardziej oczywistym źródłem problemów jest pojęcie klasy. Klasa to słowo w szeroko rozumianej informatyce tak wszędobylskie, że każdy rozumie je na swój sposób w zależności od tego, jakie ma doświadczenia. W kontekście Sieci Semantycznej najbardziej przeszkadzające są doświadczenia ze świata modelowania/programowania obiektowego (wspominałem już o tym).
Chyba najważniejszym problemem związanym z pojęciem klasy jest samo rozumienie jej definicji, czyli tego, co ta definicja mówi. Albo raczej czego nie mówi. Na przykład wyobraźmy sobie fragment ontologii stwierdzający, że faceci i kobiety to dwa rodzaje ludzi (język OWL, zapis w RDF/XML, tak mi chwilowo najwygodniej):
<owl:Class rdf:ID="Czlowiek">
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Mezczyzna" />
<owl:Class rdf:about="#Kobieta" />
</owl:unionOf>
</owl:Class>
Mamy tu definicję klasy Czlowiek
jako „sumę klas” Mezczyzna
i Kobieta
. Dobrze? Intuicja wyniesiona z praktyki systemów obiektowych i baz danych podpowiada, że całkiem ok. Niestety z punktu widzenia ontologii nie jest dobrze. Jest całkiem źle.
Założenie świata otwartego funkcjonujące wszędzie gdzie zbliżamy się do Sieci Semantycznej, a w ontologiach w szczególności, powoduje, że klasy definiowane w OWL z definicji nakładają się. Sam fakt należenia zasobu/obiektu/indywiduum do jakiejś klasy nie wyklucza możliwości należenia równocześnie do innej. Do nieskończonej ilości innych (wspominałem o tym i to pewnie nie raz). Zatem definicja powyższa mówi tylko tyle, że zbiór instancji klasy Czlowiek
jest równy sumie zbiorów instancji klas Mezczyzna
i Kobieta
. Nic ponadto. Innymi słowy: ktoś, kto jest człowiekiem, należy przynajmniej do jednego ze zbiorów mężczyzn i kobiet. Przynajmniej do jednego... a może i do obu.
Powyższa definicja klasy Czlowiek
jest zatem zwyczajnie zła (w sensie biologicznym Update: ok, zgodnie z tym, co wytknął mi boleśnie dosłowny Shot, w sensie biologicznym jest akurat dobra. Ale oczekujemy, że decyzja dotycząca płci jest podejmowana w sposób jasno wskazujący jedną z opcji. I w uproszczonym świecie systemów informatycznych, który do zawiłości biologii może nigdy nie dorosnąć, pozostańmy przy tym, że płeć ma się jedną.). Rozwiązanie problemu jest jednak proste, a nawet jest ich kilka. Na przykład można uzupełnić definicje klas Mezczyzna
i Kobieta
o jawne wskazanie faktu, że jedno to nie drugie:
<owl:Class rdf:ID="Mezczyzna">
<owl:disjointWith rdf:resource="#Kobieta"/>
</owl:Class>
<owl:Class rdf:ID="Kobieta">
<owl:disjointWith rdf:resource="#Mezczyzna"/>
</owl:Class>
I tyle. Od tego momentu reasoner (czy kto tam będzie tę ontologię analizował) uzna obiekt należący równocześnie do klasy Mezczyzna
i Kobieta
za błędny. Ale dopiero od tego momentu, nie wcześniej. Niby drobny szczegół, a jak wiele zmienia...
[1] Choć podtrzymuję wyrażone w pewnym komentarzu ponad miesiąc temu zdanie, że zajmując się Siecią można uciec od problemów inżynierii wiedzy i np. automagicznego pozyskiwania ontologii z prozy.
patrz również:
2006.07.09 | 4 komentarze |
tagi » semantic web, owl
Komentarze
#1 | 2006.07.09 22:10 | Shot
Pewnie się czepiam, ale założenie, że zbiór ludzi jest równy sumie dwóch rozłącznych podzbiorów mężczyzn i kobiet jest błędne. Oczywiście tu się zaczynają ciekawe decyzje, a nie zaczęliśmy jeszcze nawet zahaczać o płeć psychiczną.
#2 | 2006.07.10 07:45 | MiMaS
Oh, nie w tym rzecz... Ile znasz systemów informatycznych, w których w polu płeć do wyboru więcej niż dwie możliwości?
#3 | 2006.07.10 10:21 | Shot
W sensie pytasz, czy w ramach spełniania próśb użytkowników w CiviCRM-ie 1.3 (bodajże) zmieniliśmy istniejący od początku podział Male/Female/Transgender na zestaw edytowalny przez admina? :)
A przyczepiłem się tylko dlatego, że (a) przykład na rozłączność można znaleźć faktycznie rozłączny i (b) tu się akurat faktycznie zaczynają ciekawe decyzje…
#4 | 2006.07.10 10:58 | MiMaS
przykład na rozłączność można znaleźć faktycznie rozłączny
No pewnie można — zaproponuj coś z łaski swojej.
I wybacz mi zbyt tradycyjne/ograniczone postrzeganie świata... Właśnie zauważyłem, że złapałem się na klasyczny przykład — cytat z OWL Web Ontology Language Reference:
This is a popular example of class disjointness:
<owl:Class rdf:about="#Man">
<owl:disjointWith rdf:resource="#Woman"/>
</owl:Class>
Whether this is actually true is a matter for biologists to decide.
;-)
Uwaga: Ze względu na bardzo intensywną działalność spambotów komentowanie zostało wyłączone po 60 dniach od opublikowania wpisu. Jeżeli faktycznie chcesz jeszcze skomentować skorzystaj ze strony kontaktowej.