W3C home > Mailing lists > Public > public-owl-dev@w3.org > April to June 2009

Re: Inverse property on classes

From: Pavel Klinov <pklinov@cs.man.ac.uk>
Date: Fri, 15 May 2009 10:19:21 +0100
Message-ID: <4A0D3399.5040808@cs.man.ac.uk>
To: Cédric Thiébault <cedric.thiebault@gmail.com>
CC: Pavel Klinov <klinovp@cs.man.ac.uk>, public-owl-dev@w3.org
Cédric Thiébault wrote:
> Thanks for your help Pavel :)
> So even if I use cardinality, it won't be different?
> :Pizza_mozzarella_class :hasTopping exactly 1 :Mozzarella_class
It won't. You're saying that "each instance of Pizza_mozzarella_class 
has exactly 1 instance of Mozzarella_class as topping". But there still 
might be a *lot* more instances of Mozzarella_class then related 
instances of Pizza_mozzarella_class. So the statement is not really 
about Mozzarella_class in general, it only says something about some 
(possibly negligibly small) part of it (which is related to 
> Would you use allValuesFrom 
> <http://www.w3.org/TR/owl-guide/#owl_allValuesFrom> to create this 
> weird pizza class that has all mozzarella as topping?
> :Pizza_mozzarella_class :hasTopping all :Mozzarella_class
No. That's why I said that it wouldn't be that trivial. Here you're 
saying that "all toppings of Pizza_mozzarella_class's instances are 
instances of Mozzarella_class". But you need something else: "any 
instance of  Pizza_mozzarella_class has *all* instances of  
Mozzarella_class as toppings". Do you see the difference? The second 
does imply that *any* instance of Mozzarella_class is a topping of an 
instance of the Pizza_mozzarella_class (provided the latter is 
non-empty) while the first does not.

*Disclaimer*: I'm not saying that such weird pizza class would be of any 
use, I was only trying to give an example of an axiom which claims 
enough about the Mozzarella_class class.

> Actually, I want to use classes and not individuals because I need to 
> reason on them and it seems that reasoners can only work on classes...
I'm not sure what you mean by "it seems that reasoners can only work on 
classes...". It is often a highly non-trivial modeling decision (to use 
classes or individuals to model certain things).
> But it is a lot simpler to  work with properties between instances (at 
> least if we want to use inverse and transitive properties) than 
> between classes.
Well, when working with classes you should keep in mind that you're 
dealing with *sets* of objects (possibly very large or even infinite). 
So the statements that only claim something about some members (or 
subclasses) of a class are normally too weak to imply anything about the 
class in general (other than it's non-empty, of course).

Hope this helps,
> Regards,
> Cedric
> On Wed, May 13, 2009 at 4:40 PM, Pavel Klinov <klinovp@cs.man.ac.uk 
> <mailto:klinovp@cs.man.ac.uk>> wrote:
>     Hello,
>     Cédric Thiébault wrote:
>         Hi,
>     [snip]
>         When I create an individual :Pizza_mozzarella and add a
>         property :hasTopping on :Mozzarella individual, I can work
>         with the inverse property on the topping and I see that
>         :Mozzarella :isToppingOf :Pizza_mozzarella. It works great
>         with individual.
>         But when I try to do the same test with classes:
>         :Pizza_mozzarella_class :hasTopping some :Mozzarella_class
>         But I cannot use the inverse property: :Mozzarella_class does
>         not know anything about :Pizza_mozzarella_class.
>         Is this normal ?
>     Yes. Notice that you are not making any claim here about
>     Mozzarella_class in general. You're only saying that all instances
>     of Pizza_mozzarella_class are related to *some* instance of
>     Mozzarella_class. Imagine a model in which there are 10,000
>     mozarrellas and only one of them is used as a topping on all
>     pizzas (it would be a satisfying model). Would you want to be able
>     to conclude something general about 9,999 mozarellas basing on
>     only one instance?
>         Are inverse properties usable only on individuals ?
>     Well, it depends on what you mean by "using". For example, you can
>     define a class (and an instance) of pizzas which has *all*
>     instances of Mozzarella as toppings (although it's not that
>     trivial). Then, of course, you'll be able to infer that
>     :Mozzarella_class :isToppingOf some :that_weird_pizza_class.
>     Cheers,
>     Pavel
>         Thanks for your help :-)
>         Cedric
Received on Friday, 15 May 2009 09:19:59 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 20:58:18 UTC