Redundant axiom in Protege's Pizza ontology

Viewed 69

Something just caught my eye in the Protege's Pizza example ontology. With regards to the owl:equivalentClass axiom of the class :VegetarianTopping (amongst others.) It is defined like this (for the relevant bits):

:VegetarianTopping
    rdf:type owl:Class ;
    owl:equivalentClass [
        owl:intersectionOf (
            :PizzaTopping
            [
                rdf:type owl:Class ;
                owl:unionOf (
                    :CheeseTopping
                    :FruitTopping
                    :HerbSpiceTopping
                    :NutTopping
                    :SauceTopping
                    :VegetableTopping
                )
            ]
        ) ;
        rdf:type owl:Class
    ] .

The rdf:comment for it is the following:

An example of a covering axiom. VegetarianTopping is equivalent to the union of all toppings in the given axiom. VegetarianToppings can only be Cheese or Vegetable or....etc.

All the :*Topping classes in the owl:unionOf above are defined as sub-classes of :PizzaTopping, for instance:

:CheeseTopping
    rdf:type owl:Class ;
    rdfs:subClassOf :PizzaTopping .

It then looks to me that the part owl:intersectionOf ( :PizzaTopping ... ) is redundant as all of the classes in the ... already meet that requirement. So I would rather have given the following:

:VegetarianTopping
    rdf:type owl:Class ;
    owl:equivalentClass [
        owl:unionOf (
            :CheeseTopping
            :FruitTopping
            :HerbSpiceTopping
            :NutTopping
            :SauceTopping
            :VegetableTopping
        ) ;
        rdf:type owl:Class
    ] .

I guess I am missing something here? If not, is there any reason why it has been defined like that?

1 Answers

The Protégé tutorial leads you step by step towards using the Protégé tool. It does not tell you how to build a practical application for your pizza business. Moreover, having redundent knowledge is not necessarily a bad thing. Avoiding redundency in knowledge representation may be difficult.

If you say "a vegetarian topping is a topping that consists of either cheese topping, fruit topping, herb spice topping, nut topping, sauce topping (sauces should be vegetarian of course), and vegetable topping", then you are redundent. You should say "a vegetarian topping is something that consits of either etc.". Saying that it is a topping, in addition to the other things, does not harm your knowledge, because it is true!

Adding true knowledge that is redundent may have cost in different ways (size of the ontology, efficiency, understandability, on so forth), but from a knowledge representation point of view, and for most reasoners, it is not a problem. Now, in the specific case of the Pizza ontology and this particular example, I don't know why they added the extra PizzaTopping class, but I suspect it is because of how the Protégé tutorial is designed, leading you gradually to more complicated concepts. There is nothing to worry about.

Related