- From: <ewallace@cme.nist.gov>
- Date: Tue, 28 Oct 2003 16:10:28 -0500 (EST)
- To: www-webont-wg@w3.org
Mike Smith wrote: >I did try to write a description of the test case. It seemed to be >getting too long, so I backed off. Perhaps it could be explained >by example: > >-------------------------------------------------- >When n is large, alternate approaches can be used to avoid exponential >assertion explosion. One such method is illustrated in the OWL test >suite. > >The illustrated method works as follows. Given the following: > >- The class Reptile is a subclass of things with exactly one > family-name. > >- The class Amphibian is a subclass of Reptile whose members have > family-name 'Amphisbaenidae'. > >- The class Crocodilian is a subclass of Reptile whose members have > family-name 'Crocodylidae'. > >Any member of the class Amphibian cannot also be a member >of the class Crocodialian since their literal family-names are not >equal. By repeating the family-name assertion for each subclass of >Reptile, where each class uses a distinct literal name, we can ensure >that all the subclasses of Reptile are disjoint using only order n >assertions. >-------------------------------------------------- > >Any help appreciated. I have a few of suggestions. 1) Add a bit more about "what you want" before describing how to model it. 2) Have at least three disjoint subtypes in the example. 3) Add a note about reusing class names as discriminator values. Doing this might lead to following slightly modified version of Mike's text. -------------------------------------------------- When n is large, alternate approaches can be used to avoid exponential assertion explosion. One such method is illustrated in the OWL test suite. The illustrated method works as follows. Given a number of subclasses of Reptile such as Amphibian, Crocodilian, and Gecko which are disjoint, one can define the following: - The class Reptile is a subclass of things with exactly one family-name. - The class Amphibian is a subclass of Reptile whose members have family-name 'Amphisbaenidae'. - The class Crocodilian is a subclass of Reptile whose members have family-name 'Crocodylidae'. - The class Gecko is a subclass of Reptile whose members have family-name 'Gekkonidae'. Any member of the class Amphibian cannot also be a member of the class Crocodialian or Gecko since their literal family-names are not equal. By repeating the family-name assertion for each subclass of Reptile, where each class uses a distinct literal name, we can ensure that all the subclasses of Reptile are disjoint using only order n assertions. Note that their is no reason why subclass names cannot have simply been reused as the values for the family-name property, thus this approach is easily automated. -------------------------------------------------- Before peeking at the test case, I also produced the following from Mike's description and the examples in the Guide. <owl:Class rdf:ID="Reptile"> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#family-name"/> <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> </owl:Restriction> </rdfs:subClassOf> </owl:Class> <owl:DatatypeProperty rdf:ID="family-name"> <rdf:domain rdf:resource="#Reptile"/> <rdf:range rdf:resource="&xsd;string"/> </owl:DatatypeProperty> <owl:Class rdf:ID="Amphibian"> <rdfs:subClassOf rdf:resource="#Reptile"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#family-name"/> <owl:hasValue rdf:datatype="&xsd;string">Amphisbaenidae</owl:hasValue> </owl:Restriction> </rdfs:subClassOf> </owl:Class> <owl:Class rdf:ID="Crocodilian"> <rdfs:subClassOf rdf:resource="#Reptile"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#family-name"/> <owl:hasValue rdf:datatype="&xsd;string">Crocodylidae</owl:hasValue> </owl:Restriction> </rdfs:subClassOf> </owl:Class> Couldn't find many string literal examples, obviously. -Evan
Received on Tuesday, 28 October 2003 16:12:43 UTC