There is a question I have been asking myself since I first got confronted with ontology modeling. My first attempt to learn OWL was through the famous Pizza tutorial and it occurred to me that there was a clear difference between the two concepts PizzaTopping and MozarellaTopping, the first one still being very generic and abstract, and the second one not so much. If I had to model this situation, I would have naturally used a class for PizzaTopping and an individual for MozarellaTopping (with a type PizzaTopping)... and yet they are both classes in the tutorial. Why ?
I understand why this is correct (or valid) to do it that way, but I can't find a reason why it would be a good way of doing it.
Is there any good practices that apply to most cases ?
 I replaced CheeseTopping by MozarellaTopping to clarify the example.
A better example might be the book "The Road" which we'll call
...well, not necessarily. If you were in a library (or a bookstore, etc.), you might have several copies of
Conversely, if you were making an ontology for a book review site, you're indifferent to that level of granularity. Any copy of the "The Road" is the same, so you can call
In other words, as per the other answers, the choice between class and individual is often contextual, and application-dependent.
answered 31 Jan '12, 13:36
To some degree it is just common sense where you make the distinction and where you make the distinction may vary depending on your domain. Typically if something can encompass multiple individuals with different characteristics it should be a class but YMMV
In terms of your specific example cheese is still a very generic term - if I go to the supermarket to buy cheese there are hundreds of varieties to choose form (less so if you live in the US where it is all plastic and orange ;-) ) and each variety has very different characteristics in terms of color, taste, smell etc. Equally if I order pizza I can often choose pizzas with a variety of different cheeses used as toppings.
So CheeseTopping IMO is most definitely a class because it encompasses a wide variety of things, whereas something like MozzarellaTopping would be an individual since it is specific enough to refer to just one thing
answered 31 Jan '12, 12:25
Rob Vesse ♦
I haven't seen the ontology, but a better analogy would have something like MeatTopping as a subClassOf a PizzaTopping - i.e a more specific class of topping,. Some individuals of this class might include pepperoni (my favourite), ground beef and chicken, actually a poultry, but under most Pizza menus, comes under meat toppings. I can't also comment on whether its a good or bad ontology, but the point is, specifying like this lets you create other classes like PizzasSuitableForVegetarians (owl restrictions excluding any toppings that are MeatToppings or complement thereof). You probably need to spend more time discussing this with a real Pizza domain expert. Maybe it would also help trying a few pizzas at a few different restaurants.
answered 31 Jan '12, 12:24