Re: Declarative limitations of OWL/DAML

lchewhun@dso.org.sg schrieb:
> Hi,
> 
> I'm interested in what CANNOT be represented (declared) in OWL/DAML. Your 
> comments or pointers to papers are much appreciated.
> 
> What I'm hoping to do is to be able to represent constraints (or axioms or 
> rules) in a DAML ontology so that an inferencing engine can check the ontology 
> for consistency.  For instance, if I have
> 
> <age rdf:about="#Tom"> <age_type rdf:about="#child"/> </age>
> <age rdf:about="#John> <age_type rdf:about="#man"/> </age>
> <less rdf:about="#child"> <age_type rdf:about="#man"/> </less>

This is erroneous.  You certainly don't mean that 'Tom' is of type 'age' and 
  if it were so, you cannot embed a subdescription without a "connector" 
predicate (i.e. you must change 'rdf:about' in '<age_type ...' into 
'rdf:resource').  I would define Baby, Child, TeenAger, Youth, Man, Woman, 
OldMan, and OldWoman as subclasses of a class called Person.  The class 
Person has an attribute called 'age' that accepts values of type 
'xsd:nonNegativeInteger' and an attribute called 'youngerThan' which accepts 
instances of Person as value.  One can use daml:Restriction to say a Baby is 
a Person with 0<=age<=2, a Child is a Person with 3<=age<=12, a TeenAger is 
a Person with 13<=age<=19, etc. (I must add that I don't know how I can 
express these ranges in OWL; one way would be to define new datatypes, such 
as zeroToTwo, as subtypes of xsd:nonNegativeInteger and then restrict 'age' 
to only accept values from those subtypes.)  Anyway, this way the rule that 
'a Child has an age less than the age of a TeenAger' need not be defined 
explicitly, but if we did want to, then I don't know how I could!

> in the DAML ontology, I would like to define an axiom <younger> in terms of 
> <age> and <less> in such a way that the additional statement
> 
> <younger rdf:about="#John"> <age_type rdf:about="#Tom"/> </younger>
> 
> would be flagged as inconsistent.

Again, the above XML is not RDF conform, but I must add that I also don't 
know how I can express the following rule in OWL:

	for all instances p1 and p2 from Person
	    if p1 youngerThan p2 then p1.age <= p2.age

-- Saied

Received on Tuesday, 25 March 2003 04:15:50 UTC