Extending properties in sub-class

What is the better way of extending (and modifying) properties inherited
from the super class? To elaborate my question I present a scenario. Think
of a "Person" and "Document" as sub-class of "Entity". Two entities could
have associations between each other, being the source and target, modeled
as below:

<owl:Class rdf:ID="Entity"/>
<owl:Class rdf:ID="#Document">
  <rdfs:subClassOf rdf:resource="#Entity"/>
</owl:Class>
<owl:Class rdf:ID="Person">
  <rdfs:subClassOf rdf:resource="#Entity"/>
</owl:Class>

<owl:Class rdf:ID="Association"/>

<owl:ObjectProperty rdf:ID="source">
  <rdfs:range rdf:resource="#Entity"/>
  <rdfs:domain rdf:resource="#Association"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:ID="target">
  <rdfs:range rdf:resource="#Entity"/>
  <rdfs:domain rdf:resource="#Association"/>
</owl:ObjectProperty>


So far so simple, and now the problem! What if I want to have a special case
for association, Authorship, which says the "source" property MUST only be
"Person" instead of any "Entity"

<owl:Class rdf:ID="Author">
  <rdfs:subClassOf rdf:resource="#Association"/>
</owl:Class>

How to modify the property "source" for "Author" to have "Person" in its
"range" so that it doesn't effect the previous general case?


Khalid

Received on Wednesday, 22 June 2005 01:30:32 UTC