Sztuczna Inteligencja -- miniprojekt:
budowa ontologii
-
[przygotowanie]
Zapoznaj się z teorią dotyczącą reprezentacji wiedzy za pomocą ontologii OWL:
-
[10 punktów] Pizza tutorial:
(a) Zapoznaj się z narzędziem Protégé (wersja 5) do pracy z ontologiami OWL
(http://protege.stanford.edu/). Uzyskaj dostęp do działającego systemu:
albo zainstaluj go na własnym komputerze. (Jest również dostępny system
Webprotege, ale rozpoczynanie poważniejszej pracy z tym systemem jest
ryzykowne.)
(b) Zapoznaj się z przewodnikiem/samouczkiem zwanym OWL Pizza Tutorial (wersja
1.3):
http://mowl-power.cs.man.ac.uk/protegeowltutorial/resources/ProtegeOWLTutorialP4_v1_3.pdf
i w szczególności przerób wszystkie ćwiczenia (Exercise 1 do Exercise 60).
(c) Zwróć uwagę na poniższe zagadnienia/hasła:
- określanie klas za pomocą właściwości (object properties), czyli
relacji do innych klas, przez zadawanie warunków koniecznych (SubClassOf) -
klasy prymitywne, lub warunków koniecznych i wystarczających (EquivalentTo)
- klasy zdefiniowane
- hierarchia klas i hierarchia właściwości - dziedziczenie w jednej i
drugiej
- właściwości funkcyjne, przechodnie, zwrotne, i symetryczne
- wyrażenia logiki opisowej (DL - Description Logic) jako synonim klasy
anonimowej - ograniczenia egzystencjalne i uniwersalne
- rola, działanie, i efekty działania reasonera: wykrywanie niespójności
ontologii, i wykrywanie niejawnych (implikowanych) związków między klasami
- efekty definiowania dziedziny i zakresu właściwości obiektowych
(object property domain and range)
- założenie świata otwartego (Open World Assumption/Reasoning), aksjomaty
domknięcia (closure axioms)
- założenie unikalnych nazw (Unique Names Assumption)
- ograniczenia wartości i ograniczenia liczności (cardinality) w
definicjach klas
(d) W raporcie z wykonania zadania podaj numery ćwiczeń z Pizza tutorial, do
których miałeś/aś wątpliwości, bądź nie udało Ci się ich poprawnie wykonać.
(e) Przećwicz odpytywanie ontologii za pomocą wyrażeń logiki opisowej (w
zakładce DL Query). To są wyrażenia, za pomocą których tworzyłeś/aś warunki
ograniczające klasy w panelu Description. W Protégé (tak samo w TopBraid
Composer) wpisywane są one w tzw. notacji Manchester (Manchester syntax),
która opisana jest m.in. w PDF-ie z wykładu. Wykonaj poniższe ćwiczenia:
- Utwórz i przetestuj wyrażenia DL definiujące klasę, dla których można
uzyskać jakiś zwięzły (krótki) niepusty wynik dla kategorii: bezpośrednie
nadklasy, klasy równoważne, bezpośrednie podklasy, i instancje. W raporcie
z wykonania zadania podaj cztery opracowane wyrażenia, oraz uzyskane wyniki.
- Do stworzonej ontologii pizzy dodaj warunek, by każda pizza posiada
dokładnie jedną bazę (PizzaBase). Zresynchronizuj reasoner, żeby sprawdzić,
czy nie wykryje on błędów w ontologii. Podaj utworzone wyrażenie logiczne.
Wyjaśnij dlaczego jest dopuszczalne (i poprawne), że stworzone w ramach
ćwiczeń instancje pizzy nie mają bazy.
- Stwórz klasę MildPizza jako zdefiniowaną podklasę klasy Pizza z
warunkiem stanowiącym, że posiada wyłącznie dodatki łagodne. Postaraj się
stworzyć definicję odporną, to znaczy sformułowaną ogólnie (a nie np. przez
wyliczenie dozwolonych dodatków). Sprawdź, że reasoner zaakceptował
definicję i sklasyfikował przynajmniej PizzaMargherita jako łagodną. Podaj
utworzone wyrażenie definiujące.
(f) Do stworzonej ontologii pizzy dodaj rozmiar dla pizzy: Large, Medium, Small.
Czy lepiej do tego użyć właściwości obiektowych (object property) czy prostych
typów danych (data property)? Wprowadź odpowiednie definicje do ontologii,
sprawdź poprawność reasonerem. Opisz w raporcie jakie jednostki (entities)
stworzyłeś/aś, i podaj charakteryzujące je wyrażenia DL.
(g) Wyszukaj opis pizzy Super Supreme z Pizza Hut (włącznie z danymi o
kaloryczności). Zdefiniuj ją jako pizzę nazwaną (NamedPizza), uzupełniając
ontologię o wszystkie niezbędne elementy. W jaki sposób możemy spowodować
automatyczne określanie kaloryczności pizzy w zależności od jej rozmiaru?
Opisz zastosowane rozwiązane w raporcie i wklej odpowiednie wyrażenia
określające stworzone przez Ciebie byty. Stwórz obiekt (indywiduum) klasy
Super Supreme o rozmiarze Large, oraz drugi obiekt o rozmiarze Small.
(h) Przećwicz odpytywanie ontologii za pomocą SPARQL (w zakładce SPARQL Query).
Stwórz zapytania o:
- indywidua klasy Pizza
- indywidua klasy PizzaMargherita
- indywidua klasy PizzaSuperSupreme
- indywidua dowolnej pizzy, z wartościami kaloryczności, o ile posiadają
Zweryfikuj uzyskane wyniki. Wklej do raportu kompletne zapytania (wraz z
niezbędnymi deklaracjami prefiksów), oraz uzyskanych odpowiedzi, w postaci
tabelki. Wyjaśnij stworzone zapytania oraz otrzymane wyniki.
Następnie znajdź w internecie jakiś ``SPARQL end point, czyli serwis
umożliwiający zadawanie zapytań SPARQL do określonej ontologii. Wystaw swoją
ontologię zapisaną w pliku odpowiedniego formatu na dostępnej Ci stronie
internetowej, i powtórz powyższe zapytania SPARQL. Porównaj uzyskane
odpowiedzi z uzyskanymi lokalnie i opisz wynik w raporcie.
Uwaga: Protégé jest dojrzałym programem open source istniejącym od lat
1980-tych i posiadającym chyba największą bazę użytkowników na świecie.
Ponieważ jednak jest systemem stale rozwijanym, i pojawiają się nowe
standardy, narzędzia, wtyczki, itp., zdarzają się błędy. Dobrą praktyką jest
okresowe zapisywanie opracowanej ontologii na pliku, i kontynuacja pracy po
restarcie Protégé i załadowaniu ontologii z pliku. Oraz ograniczone zaufanie
do operacji Undo.
Istnieje wiele alternatywnych narzędzi do modelowania ontologicznego. Na
przykład, szczególnie polecany jest komercyjny system Top Braid Composer
(istnieje wersja free nadająca się do małych projektów). Zapytania SPARQL
można alternatywnie wykonać za pomocą narzędzia ARQ, które może sprawdzać graf
w podanym pliku lokalnym, ściągnąć plik z podanej lokalizacji w Internecie,
lub przekazać zapytanie do internetowego ``SPARQL end point.