- From: <david.celjuska@bt.com>
- Date: Fri, 24 Sep 2004 14:12:47 +0100
- To: <www-rdf-interest@w3.org>
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