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:04:06 UTC