2013-09-01 30 views
7

Sto usando Protege v4.3 per creare ontologie. Ho una domanda sull'ontologia OWL e sulla query DL.Ragionamento dell'ontologia OWL utilizzando la proprietà inversa?

Ad esempio, nel dell'ontologia Pizza, http://owl.cs.manchester.ac.uk/co-ode-files/ontologies/pizza.owl

posso eseguire la query DL

hasTopping some CheeseTopping

Il risultato è americana, AmericanHot, cajun, ecc .. Questo è OK.

Ora, ho provato interrogazione DL

isToppingOf some American

Ma il risultato è nulla.

Poiché la proprietà isToppingOf è proprietà inversa di hasTopping, mi aspettavo di ottenere il risultato compreso FourCheesesTopping, CheeseyVegetableTopping, ecc. Da tale query (per deduzione). Bud non l'ha fatto.

C'è qualche modo di ragionamento automatico come quello?

+0

è l'AmericanHot, americani, ecc sono gli assiomi di chiusura? – msc87

risposta

1

Quando si chiede quali sono le sottoclassi di:

isToppingOf some American 

ti stai chiedendo quali classi contengono ingredienti che vengono necessariamente utilizzati in cima pizze americane. Ma nell'ontologia della pizza, non esiste una tale classe. Considera i condimenti al formaggio: tutti i condimenti al formaggio sono in cima a delle pizze americane? No, alcuni condimenti al formaggio sono in cima alle pizze italiane. Lo stesso vale per tutte le classi di topping.

+1

Grazie, Zimmermann. Ma come posso ottenere l'elenco dei condimenti utilizzati per determinate pizze? –

5

L'espressione classe

hasTopping alcuni CheeseTopping

è l'insieme di individui, ciascuno dei quali è relativo a qualche CheeseTopping dalla struttura hasTopping. Nella Pizza ontologia, dove non ci sono individui, è ancora possibile ottenere risultati di sottoclassi di classe per questa query perché la definizione di alcuni tipi di pizze (ad es. Americana) è tale che qualsiasi pizza che è un americano deve avere tale copertura.

Ora, la query in modo simile strutturato

isToppingOf alcuni americano

è l'insieme di individui, ciascuno dei quali è legato a una pizza americana dalla struttura isToppingOf. Tuttavia, la pizza ontologia non definisce particolari individui, quindi non ci sono individui come candidati. Ma che dire delle classi che potrebbero essere sottoclassi di questa espressione? Ad esempio, hai menzionato il FourCheeseTopping. Ora, una particolare istanza di FourCheeseTopping, ad esempio, FourCheeseTopping23 potrebbe essere essere un condimento di alcune pizze americane, ad es.:

fourCheeseTopping23 isToppingOf americanPizza72

Tuttavia, fourCheeseTopping potrebbe non essere stato inserito in qualsiasi pizza particolari ancora. Quando scegliamo un individuo arbitraria di tipo FourCheeseTopping, non possiamo dedurre che si tratta di una guarnizione di una pizza americana, quindi non possiamo dedurre che il FourCheeseTopping classe è una sottoclasse di

isToppingOf alcuni americana

perché non è il caso che ogni istanza di FourCheeseTopping deve essere il condimento di qualche pizza americana. Per un caso simile che potrebbe rendere la struttura logica un po 'più chiara, si considerino le classi Employer e Person, e la proprietà dell'oggetto si impegna e il suo inverso viene impiegato. Potremmo dire che ogni datore di lavoro deve avere una persona come un impiegato (in quanto altrimenti non sarebbe un datore di lavoro):

di lavoro & sqsubseteq; impiega alcuni persona

Tuttavia, dal momento che una persona può essere disoccupata, è non vero che

persona & sqsubseteq; employedBy alcuni lavoro

anche se impiega e employedBy sono inverse.

Cosa si può fare, però, se volete sapere se condimenti di un particolare tipo potrebbero essere collocati un'ottima pizza di tipo particolare, è quello di chiedere se

PizzaType ⊓ ∃ hasTopping.ToppingType

è equivalente a, o una sottoclasse di, gufo: Niente. Per esempio, dal momento che una pizza americana ha solo guarnizioni di tipo TomatoTopping, MozzarellaTopping e PeperoniTopping [sic], la classe

americano ⊓ ∃ hasTopping.MixedSeafoodTopping

è equivalente a gufo: Niente:

american pizzas don't have mixed seafood toppings

D'altra parte, dal momento che una pizza americana must hanno un MozzarellaTopping, la classe

americano ⊓ ∃ hasTopping.MozzarellaTopping

è equivalente ad American:

american pizzas do have mozzarella toppings