Reasoning OWL ontology using inverse property?

前端 未结 2 1989
[愿得一人]
[愿得一人] 2021-01-05 08:43

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

相关标签:
2条回答
  • 2021-01-05 09:29

    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.

    0 讨论(0)
  • 2021-01-05 09:34

    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:

    american pizzas don't have mixed seafood toppings

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

    American ⊓ ∃hasTopping.MozzarellaTopping

    is equivalent to American:

    american pizzas do have mozzarella toppings

    0 讨论(0)
提交回复
热议问题