Wnioskowanie OWL w praktyce (Wine + SWOOP 2.3 + Pellet)
OWL Web Ontology Language Guide oprócz tego, że opowiada o co w ogóle w tych ontologiach chodzi, zawiera konkretny przykład — ontologię Wine (zobacz źródło strony) opisująca wina i dodatkowo Food (zobacz źródło strony) z opisem potraw do wspomnianych win odpowiednich. Ontologia Wine ma kilka cech, które przyczyniły się do jej sławy (niektórzy mówią, że złej sławy):
- po pierwsze jest umieszczona w rekomendacji W3C, co gigantycznie podnosi jej prestiż,
- po drugie zawiera bardzo dużo elementów, których nie spotyka się w większości innych ontologii — korzysta możliwości OWL bez żadnych zahamowań,
- po trzecie jest spora — z Food łącznie 138 klas i 206 instancji.
Taki cechy powodują, że jest ona ciężkostrawna dla mniej wydajnych narzędzi obróbki OWL (czy RDF w ogólności) oraz zabójcza dla słabszych mechanizmów wnioskowania. Postanowiłem sprawdzić jak z tym zadaniem poradzi sobie SWOOP w wersji 2.3 beta2 (SWOOP 2.2 na tym samym sprzęcie w ogóle nie dał rady...).
Strzelając na ślepo (niemalże) w dowolny „individual” trafiłem w wino MariettaCabernetSauvignon
. W treści ontologii napisane jest dosłownie tyle:
<wine:CabernetSauvignon rdf:about="#MariettaCabernetSauvignon">
<wine:hasBody rdf:resource="#Medium"/>
<wine:hasFlavor rdf:resource="#Moderate"/>
<wine:hasMaker rdf:resource="#Marietta"/>
<wine:hasSugar rdf:resource="#Dry"/>
<wine:locatedIn rdf:resource="#SonomaRegion"/>
</wine:CabernetSauvignon>
SWOOP bez włączonego wnioskowania pokazuje dokładnie to samo, i wygląda to tak:
OWL-Individual: MariettaCabernetSauvignon
Instance of: CabernetSauvignon
Object Assertions:
hasBody : Medium
locatedIn : SonomaRegion
hasMaker : Marietta
hasFlavor : Moderate
hasSugar : Dry
Nie ma tutaj żadnej informacji, która nie została by powiedziana wprost, czyli nie ma tutaj jeszcze w ogóle wykorzystania OWL — dokładnie tyle samo możemy powiedzieć za pomocą kawałka RDF-a (albo i dowolnego innego formatu opisu danych). Natomiast ciekawiej sprawa wygląda po uaktywnieniu reasonera Pellet — widzimy do razu znacznie więcej:
OWL-Individual: MariettaCabernetSauvignon
Instance of: CaliforniaWine (Why?)
CabernetSauvignon
Object Assertions:
locatedIn : SonomaRegion
locatedIn : CaliforniaRegion (Why?)
locatedIn : USRegion (Why?)
hasBody : Medium
hasColor : Red (Why?)
hasMaker : Marietta
hasFlavor : Moderate
hasSugar : Dry
hasWineDescriptor : Red (Why?)
hasWineDescriptor : Moderate (Why?)
hasWineDescriptor : Dry (Why?)
hasWineDescriptor : Medium (Why?)
Wszystkie stwierdzenia wywnioskowane przez Pellet są oznaczone w SWOOP linkiem (Why?), pod którym kryje się wyjaśnienie danego wniosku. Np.: skąd wiadomo, że jest to wino czerwone (hasColor : Red
)?
Axioms causing the inference :
1) (MariettaCabernetSauvignon rdf:type CabernetSauvignon)
2) |_(CabernetSauvignon ⊆ (∃hasColor . {Red}))
Po polsku: MariettaCabernetSauvignon
jest typu CabernetSauvignon
, a CabernetSauvignon
ma dla cechy hasColor
dozwoloną jedynie wartość Red
.
A dlaczego Pellet twierdzi, że to wino amerykańskie (locatedIn : USRegion
)?
Axioms causing the inference :
1) (MariettaCabernetSauvignon locatedIn SonomaRegion)
2) |_(CaliforniaRegion locatedIn USRegion)
3) |_(SonomaRegion locatedIn CaliforniaRegion)
4) |_Transitive(locatedIn)
Po polsku: MariettaCabernetSauvignon
pochodzi z regionu SonomaRegion
, który jest zlokalizowany w CaliforniaRegion
, który z kolei znajduje się w USRegion
.
Po prostu coś pięknego ;-)
patrz również:
2005.12.09 | skomentujesz? |
tagi » semantic web, narzędzia, technologie i rozwiązania, owl
Komentarze
Brak komentarzy do tego wpisu.
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.