- 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