2013-09-01 9 views
7

Używam Protege v4.3 do tworzenia ontologii. Mam pytanie dotyczące ontologii OWL i zapytania DL.Rozumowanie ontologii OWL za pomocą właściwości odwrotnej?

Na przykład, w ontologii Pizza, http://owl.cs.manchester.ac.uk/co-ode-files/ontologies/pizza.owl

mogę wykonać kwerendy DL

hasTopping some CheeseTopping

Rezultatem jest amerykański, AmericanHot, Cajun, itp .. to jest OK.

Teraz próbowałem DL zapytanie

isToppingOf some American

Ale wynik jest niczym.

Ponieważ właściwość toToppingOf jest właściwością odwrotną hasTopping, Spodziewałem się uzyskać wynik, w tym FourCheesesTopping, CheeseyVegetableTopping itp. Z tego zapytania (przez wnioskowanie). Bud to nie.

Czy istnieją sposoby na automatyczne takie rozumowanie?

+0

Czy AmericanHot, amerykański itp są aksjomaty zamykające? – msc87

Odpowiedz

1

Kiedy zapytać jakie są podklasy:

isToppingOf some American 

jesteś pytając, co zajęcia zawierają dodatków, które muszą być wykorzystane na szczycie amerykańskiego pizze. Ale w ontologii pizzy żadna taka klasa nie istnieje. Rozważ ser: Czy wszystkie rodzaje sera są na wierzchu niektórych amerykańskich pizz? Nie, niektóre sery są na wierzchu włoskiej pizzy. To samo dotyczy wszystkich zajęć na toppingu.

+1

Dzięki, Zimmermann. Ale jak mogę uzyskać listę dodatków używanych do niektórych Pizza? –

5

Klasa wyrażenie

hasTopping niektóre CheeseTopping

jest zbiorem jednostek, z których każda jest związana z pewnym CheeseTopping przez właściwość hasTopping. W ontologii pizzy, w której nie ma osób, nadal można uzyskać wyniki podklasy klasy dla tego zapytania, ponieważ definicja niektórych typów pizz (np. Amerykańskich) jest taka, że ​​każda pizza amerykańska musi mieć takie polewa.

Teraz, podobnie Structured Query

isToppingOf niektóre amerykański

jest zbiorem jednostek, z których każda jest związana z pewnym amerykańskim pizzy przez właściwość isToppingOf. Jednak ontologia pizzy nie definiuje konkretnych osób, więc nie ma żadnych osób jako kandydatów. Ale co z klasami, które mogą być podklasami tego wyrażenia? Na przykład wspomniałeś o FourCheeseTopping. Teraz, niektóre szczególne przypadki FourCheeseTopping, np. FourCheeseTopping23 mogą być dodatkami do niektórych amerykańskich pizz, np.:

fourCheeseTopping23 isToppingOf americanPizza72

Jednak fourCheeseTopping może nie zostały umieszczone na danym pizzy jeszcze. Kiedy wybrać dowolną jednostkę typu FourCheeseTopping, nie możemy wnioskować, że jest to polewa z jakiegoś amerykańskiego pizzy, więc nie możemy wywnioskować, że FourCheeseTopping klasa jest podklasą

isToppingOf niektóre amerykański

ponieważ nie jest tak, że każde wystąpienie FourCheeseTopping musi być zwieńczeniem amerykańskiej pizzy. W przypadku podobnej sytuacji, która może sprawić, że struktura logiczna będzie nieco jaśniejsza, należy rozważyć klasy Pracodawca i Osoba, a własność obiektu zatrudnia i jej odwrotność stosuje się. Możemy powiedzieć, że każdy pracodawca musi mieć jakąś osobę jako pracownika (ponieważ w przeciwnym razie nie byłby pracodawcą):

Pracodawca i sqsubseteq; Zatrudnia niektórych osoba

Jednakże, ponieważ dana osoba może być bezrobotnym, to nie prawda

Person & sqsubseteq; employedBy niektóre Pracodawca

choć zatrudnia i employedBy są odwrotne.

Co można zrobić, chociaż, jeśli chcesz wiedzieć, czy polewy określonego typu mógłby znajdować się pizzę danego typu, jest pytanie, czy

PizzaType ⊓ ∃ hasTopping.ToppingType

jest odpowiednikiem lub podklasą, owl: Nic. Na przykład, ponieważ amerykański pizzy ma tylko dodatków typu TomatoTopping, MozzarellaTopping i PeperoniTopping [sic], klasy

amerykańskiej ⊓ ∃ hasTopping.MixedSeafoodTopping

jest równoznaczne z owl: Nothing:

american pizzas don't have mixed seafood toppings

z drugiej strony, ponieważ amerykański pizzy moszczu posiada MozzarellaTopping klasa

amerykański ⊓ ∃ hasTopping.MozzarellaTopping

jest równoznaczne z American:

american pizzas do have mozzarella toppings

Powiązane problemy