Reasoning OWL ontology using inverse property?

2019-02-13 10:11发布

问题:

I'm using Protege v4.3 for making ontologies. I have a question about OWL ontology and DL query.

For instance, in the Pizza ontology, http://owl.cs.manchester.ac.uk/co-ode-files/ontologies/pizza.owl

I can execute the DL query

hasTopping some CheeseTopping

The result is American, AmericanHot, Cajun,.. etc. That's OK.

Now, i tried DL query

isToppingOf some American

But the result is nothing.

Because the property isToppingOf is inverse property of hasTopping, I expected to get the result including FourCheesesTopping, CheeseyVegetableTopping, etc. from that query(by inference). Bud it didn't.

Is there any ways automatic reasoning like that?

回答1:

The class expression

hasTopping some CheeseTopping

is the set of individuals each of which is related to some CheeseTopping by the hasTopping property. In the Pizza ontology, where there are no individuals, you can still get class subclass results for this query because the definition of certain types of Pizzas (e.g., American) are such that any Pizza that is an American must have such a topping.

Now, the similarly-structured query

isToppingOf some American

is the set of individuals each of which is related to some American pizza by the isToppingOf property. However, the Pizza ontology defines no particular individuals, so there aren't any individuals as candidates. But what about classes that might be subclasses of this expression? For instance, you mentioned the FourCheeseTopping. Now, some particular instance of FourCheeseTopping, e.g., fourCheeseTopping23 could be a topping of some American pizza, e.g.:

fourCheeseTopping23 isToppingOf americanPizza72

However, fourCheeseTopping might not have been placed on any particular pizza yet. When we choose an arbitrary individual of type FourCheeseTopping, we can't infer that it is a topping of some American pizza, so we cannot infer that the class FourCheeseTopping is a subclass of

isToppingOf some American

because it's not the case that every instance of FourCheeseTopping must be the topping of some American pizza. For a similar case that might make the logical structure a bit clearer, consider the classes Employer and Person, and the object property employs and its inverse employedBy. We might say that every Employer must have some Person as an Employee (since otherwise they wouldn't be an employer):

Employer ⊑ employs some Person

However, since a person can be unemployed, it is not true that

Person ⊑ employedBy some Employer

even though employs and employedBy are inverses.

What you can do, though, if you want to know whether toppings of a particular type could be placed an pizza of a particular type, is to ask whether

PizzaType ⊓ ∃hasTopping.ToppingType

is equivalent to, or a subclass of, owl:Nothing. For instance, since an American pizza has only toppings of type TomatoTopping, MozzarellaTopping, and PeperoniTopping [sic], the class

American ⊓ ∃hasTopping.MixedSeafoodTopping

is equivalent to owl:Nothing:

On the other hand, since an American pizza must have a MozzarellaTopping, the class

American ⊓ ∃hasTopping.MozzarellaTopping

is equivalent to American:



回答2:

When you ask what are the subclasses of:

isToppingOf some American

you are asking what classes contain toppings that are necessarily used on top of American pizzas. But in the pizza ontology, no such class exists. Consider cheese toppings: Are all cheese toppings on top of some American pizzas? No, some cheese toppings are on top of Italian pizzas. The same holds for all topping classes.