OWL and real world

Hi All,

I guess a question against our 0-1 logic but that
is when it comes to AI - nothing is clear and
everything is fuzzy.

Lets imagine an OWL-DL ontology of Animals.
Sure one of the concepts/classes will be "Bird".
Then we will have properties about "Animal" - thus
properties with "Animal" as a domain such as:

numberOfLegs <decimal>
canFly	<boolean>
hasFeathers <boolean>
...

and sure one would suggest to have restricions
over those properties for class "Bird" such as:

numberOfLegs 2
canFly true
hasFeathers true

Because we know that birds have two legs, can fly
and have feathers.

Problem: let imagine and chicken. Chicken has
two legs, has weathers but here is exception it
CANNOT fly :( But it is still a bird!

How do go along with this?

Well one might suggested that we need to change
our ontology from Animal <-is_a- Bird to something like:

            FlyingBirds-Eagl
           /           -....
Animal-Birds
           \
            NonFlyingBirds-Chicken

Problem here is that in most cases - we live in our
world which we only try to modelate and classify things
but they are as such not classfied by nature. So this problem
will almost certainly appear with a big ontology. Imagine
you have huge ontology and you had Animal-Bird type in there.
And now you know that you need to put a new individual (chicken
kind of) in there but instead of puting it streight to Bird
you have to split Bird class into two, move the rest into
FlyingBirds and Chicken into NonFlyingBirds. Too much management
and if this is required from a user we are almost sure to run
into trouble - lazyness and so on.

The best solution thus would be to have some kind of
exception construct in OWL telling - this class/individual
inherites the property restriction from its parents but this.

How?

First very very ugly solution is to define a new
property: cannotFly. So we would have two properties:
canFly hasDomain Birds
cannotFly hasDomain Birds

and then restriction:

_:r1 onProperty canFly
Birds subClassOf _:r1
_:r1 hasValue true

and then for the individual chicken we would say:

chicken cannotFly true

Syntacticaly OKAY, semanticaly and human logicaly contraversions,
But we could design an application that would interpret this
just fine. All we need to do is to say that: cannotFly has higher
priority then canFly and thus overwrites it. Again no such construct
exists in OWL as far as I know :(

Ugly ugly ugly I know.

So my qestion at the bottom is how we could handly this
kind of exceptions? Because we know that life is full of
exceptions. Some birds don't fly, same mammals lay eggs
(Platypus is only one of them and to have a special class just
for this pour guy...), and who knows and one can never be sure.

Thank you,

David Celjuska
BTexact Technologies

Received on Friday, 24 September 2004 13:12:32 UTC