Re: Re: Cardinality Reasoning

Hi Luke,

I think you're still a long way from what you want.  For a start, you
probably want to give your <test:hasColor> property a domain of
<test:Printer>, since it currently doesn't have and particular
relationship to that class, except for its use with
<urn:test:printer1>.

On 8/17/06, Luke Steller <Luke.Steller@infotech.monash.edu.au> wrote:
> I changed it slightly - theres one class called 'HasAtLeastOneColor'
> which printer1 is an instance of, then i have created one called
> 'DoesNotHaveAtLeastOneColor' which is its complement. Then
> 'Everything' is the union of the two.
>
> If 'Everything' contains every instance, and ''HasAtLeastOneColor'
> contains only printer1, then why doesn't 'DoesNotHaveAtLeastOneColor'
> contain printer2 and all the colour instances? Shouldn't complement
> specify every individual that is not in the set specified by the
> complement class?

If printer1 were a member of HasAtLeastOneColor then it would be
restricted to having at least one color.  But since it isn't declared
to be a member of that class, then you can make no such assumption.
Since you can't know if printer1 is in or out of HasAtLeastOneColor,
then you can't know if it falls into the complement of that class
either.

The same goes for all the colors and printer2.  hasColor has no
defined domain, so it could be applied to the colors in the open world
(that doesn't make sense to you and I, but it is consistent with your
current OWL).  Similarly, printer2 could have any number of colors
that you don't know about.

> This is probably actually a question about complements themselves,
> because even when I take out the cardinality restrictions, if i make
> printer1 an instance of HasAtLeastOneColour, its complement class
> doesnt not contain all other instances. Why is this?

By making printer1 part of this class you've confirmed that printer1
has at least one color (which you already knew because you'd declared
4 colors).

Incidentally, you've referred to 4 colors, but remember that they
could be the same things with different names.  Declaring them as
owl:allDifferent would be useful here, particularly if you want to
declare a class like HasAtLeastFourColors.

Also, if you want to see printer1 and printer2 in complementary (or
disjoint) classes, then you should either declare this explicitly, or
allow for the possibility by making them owl:differentFrom each other.

Regards,
Paul

P.S.  You're at Monash, so should we be saying "Colour" rather than
"Color"?  :-)

Received on Thursday, 17 August 2006 15:42:49 UTC