Hector Coscia
Hector Coscia

Reputation: 11

'max' and 'exactly' cardinality restrictions in the context of the OWA

In first place i have to apologize for my very, very poor english.

I've been studying the representation of knowledge in the context of design of experts systems trough ontologies. In particular, i've been using protégé as an OWL ontology editor.

After a large number of fails, finally i've started to realize the huge impact of the OWA on the process of inference and reasoning, mainly when i try to performance some automatic classification task.

I've solve many of the basic problems about that but, going deeper on the idea of making more and more specific classifications, i ran into the need for use cardinality restrictions. (which, at first, i tought that i cleary understand, but in the end, i realize that i'm nowhere close it)

Well, so far i've made a mess. Only a very few classification has been working as i spected. I guess that, as usual, i've been losing sight of the OWA.

Mi concrete doubt is this: What's the point on creating a restriction over an object property with a 'max' and, specially, 'exactly' cardinality in a context where we assume that the world is open?

I bring to you this simple example, based on the Pizza Tutorial, since many concepts can be extrapolated from there: Suppose that i want to define the class of pizzas named "FourChessePizza" and i want that, in principle, any individual that has four "ChesseTopping", i.e., four relationships along the "hasTopping" property with individuals of class "CheeseTopping", are inferred as belonging that class.

So i create an individual and, in "types", i assert this:

hasTopping some MozzarellaToping
hasTopping some ParmesanTopping
hasTopping some FontinaTopping
hasTopping some BlueChesseTopping

All the fillers are disjoints.

(The names of each chesse are merely demostrative; i don't know which cheeses are used)

So far, the reasoner have no way to say that that individual belongs to "FourChessePizza" since, although it has four relationships, the OWA considers the possibility that it can have more relations that might not have been "said". No 'max' or 'exactly' cardinality restriction can be applied since the uncertainty about "how much relations" really have the individual.

So, with only this information i can't found any restriction to my "FourCheesePizza" that clasify this simple individual as own.

Beyond this particular example, my question is more general about the generic process of "counting" asserted relationships with the less possible information.

¿Is there any solution to this kind of problems?¿What is what i'm not thinking in the rigth way to solve this and similar problems?

Thank you very much in advance for your time and your good will.

Cheers!

Upvotes: 1

Views: 232

Answers (1)

Antoine Zimmermann
Antoine Zimmermann

Reputation: 5515

This is a surprisingly intricate problem! At first sight, it looks like what you need is simply a "closure axiom", something that is describe in the Protégé tutorial with the Pizza ontology. There, the concept of a Margherita pizza is at first described as a pizza that has some mozzarella topping and some tomato topping. But even if you know a pizza has mozzarella and tomato, it is not sufficient to classify it as a Margherita pizza, because other kinds of pizzas have mozzarella and tomato. So the solution is to say that a Margherita pizza only has mozarella and tomato toppings.

Similarly, it would be possible to say that your example pizza only has Mozzarella, Parmesan, Fontina, and Blue Cheese toppings. But would this be sufficient to qualify as a FourCheesePizza? Well, it depends how you define 4 cheese pizzas. If a FourCheesePizza is one that has at least 4 cheese toppings, then yes. But we don't want to have 5-cheese pizzas classified as 4-cheese pizzas, right?

A simple conceptualisation of 4-cheese pizzas would be that it has exactly 4 cheese toppings:

FourCheesePizza subClassOf hasTopping exactly 4 CheeseToppings

So, it means that for any instance of FourCheesePizza, there exists x1, x2, x3, x4 four distinct instances of CheeseTopping. The problem is, the four instances could be all distinct instances of MozzarellaTopping.

In the case of Hector Coscia's example, if we have:

FourCheesePizza subClassOf (
    hasTopping some MozzarellaTopping and
    hasTopping some ParmesanTopping and
    hasTopping some FontinaTopping and
    hasTopping some BlueChesseTopping and
    hasTopping only (MozzarellaToping or ParmesanTopping or FontinaTopping or BlueChesseTopping)

then it is possible that there are 2 mozzarella toppings, 5 parmesan toppings, 16 fontina toppings, and 42 blue cheese toppings. And yet, this woud arguably be fine as a 4-cheese pizza because what matters is that it uses exactly 4 types of cheeses. But how to express that a pizza only has 4 types of toppings?

In OWL, it is not possible to restrict the number of classes used in a definition. For instance, it is not possible to say: the instances that are member of only 2 classes. Even if it was possible, it would be useless, because every instance X belongs to infinitely many classes: it belongs to the singleton class {X}, it belongs to every superclass of this singleton, and it belongs to the union of {X} with all the classes that are disjoint from {X}.

So the only option is to change the modelling pattern: to make TypeOfCheese a class, and to make Mozzarella, Parmesan, Fontina, Blue Cheese instances of this class. Then it is possible to restrict how many types of cheeses are used. To do so, you may proceed as follows:

  • create a property typeOfCheese that connects instances of CheeseTopping to instances of TypeOfCheese
  • create another propery usesTypeOfCheese that connects pizzas to types of cheeses
  • define a property chain axiom that says: hasTopping o typeOfCheese subPropertyOf usesTypeOfCheese
  • define FourCheesePizza as the subclass of usesTypeOfCheese exactly 4 TypeOfCheese
  • define the instances of TypeOfCheese: mozzarella, parmesan, fontina, blueCheese, cancoillotte, etc.
  • define MozzarellaTopping subClassOf typeOfCheese value mozzarella, ParmesanTopping subClassOf typeOfCheese value parmesan, etc.

Upvotes: 2

Related Questions