- From: Ibach, Brandon L <brandon.l.ibach@lmco.com>
- Date: Fri, 24 Aug 2007 15:32:44 -0400
- To: John McClure <jmcclure@hypergrove.com>
- Cc: Owl Dev <public-owl-dev@w3.org>
John,
I'm not sure what the reasoner would do with the <rdf:Alt>, but
the generally-accepted way to do this would be something like:
<owl:ObjectProperty rdf:about="#Parent">
<rdfs:range>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Human"/>
<owl:Class rdf:about="#Corporation"/>
</owl:unionOf>
</owl:Class>
</rdfs:range>
</owl:ObjectProperty>
Regarding the rest of your example, other than the
<owl:ObjectProperty> not belonging just inside of the <owl:Class>, I
think you'll find that a Human with more than one Parent will be
considered inconsistent due to Human "inheriting" the 1-Parent
restriction from LegalPerson.
-Brandon :)
-----Original Message-----
From: public-owl-dev-request@w3.org
[mailto:public-owl-dev-request@w3.org] On Behalf Of John McClure
Sent: Friday, August 24, 2007 3:05 PM
To: Owl Dev
Subject: Legal Persons
A Person in US legal contexts is either a Human or a Corporation; every
Human is
a Person, and every Corporation is a Person.
Is the following construct valid? Will or should reasoners be troubled
by
<rdf:Alt> within a <rdfs:range>, and can or should <rdf:Alt> be used
within an
<owl:Restriction>?
<owl:Class rdf:about="#LegalPerson">
<owl:ObjectProperty rdf:about='#Parent'>
<rdfs:range>
<rdf:Alt>
<li><owl:Class rdf:about="#Human"/></li>
<li><owl:Class rdf:about="#Corporation"/></li>
</rdf:Alt>
</rdfs:range>
</owl:ObjectProperty>
<owl:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#Parent"/>
<owl:maxCardinality rdf:value='1'/>
</owl:Restriction>
</owl:subClassOf>
</owl:Class>
<owl:Class rdf:about="#Human">
<owl:subClassOf rdf:resource="#LegalPerson"/>
<owl:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#Parent"/>
<owl:allValuesFrom rdf:about="#Human"/>
</owl:Restriction>
</owl:subClassOf>
<owl:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#Parent"/>
<owl:maxCardinality rdf:value='2'/>
</owl:Restriction>
</owl:subClassOf>
</owl:Class>
<owl:Class rdf:about="#Corporation">
<owl:subClassOf rdf:resource="#LegalPerson"/>
<owl:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#Parent"/>
<owl:allValuesFrom rdf:about="#Corporation"/>
</owl:Restriction>
</owl:subClassOf>
<owl:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#Parent"/>
<owl:maxCardinality rdf:value='1'/>
</owl:Restriction>
</owl:subClassOf>
</owl:Class>
I haven't found examples of this sort in the docs. I understand that an
<rdfs:range> is nothing more than
<!-- alternative specification for rdfs:range-->
<owl:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#Parent"/>
<owl:allValuesFrom>
<rdf:Alt>
<li><owl:Class rdf:about="#Human"/></li>
<li><owl:Class rdf:about="#Corporation"/></li>
</rdf:Alt>
</owl:allValuesFrom>
</owl:Restriction>
</owl:subClassOf>
Maybe there is a better way to model this? Maybe I should be asking this
in
another forum? Thanks for any comments,
John McClure
Received on Friday, 24 August 2007 19:33:07 UTC