- From: Michael Daconta <mike@daconta.net>
- Date: Sat, 7 Feb 2004 11:36:13 -0700
- To: <www-rdf-interest@w3.org>
- Message-Id: <20040207183621.LAZV11482.fed1mtao07.cox.net@MIKESOFFICE>
Hi All,
 
I am working on an OWL Wordnet Metamodel that models synsets as classes.
Most of the other work on this models Wordnet with a lexical strategy (types
of words) except for the Web KB 2 project (which is an RDFS model).  My work
will be an extension of the metamodel used in the Web KB project.
 
Here is a sample:
<owl:Class rdf:ID='causal_agent'>
      <rdfs:isDefinedBy>any entity that causes events to
happen</rdfs:isDefinedBy>
      <rdfs:label xml:lang='en'>causal agent</rdfs:label>
      <rdfs:label xml:lang='en'>cause</rdfs:label>
      <rdfs:label xml:lang='en'>causal agency</rdfs:label>
      <rdfs:subClassOf>
            <owl:Class rdf:about='#entity' />
      </rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:ID='person'>
      <rdfs:isDefinedBy>a human being; "there was too much for one
person to do"</rdfs:isDefinedBy>
      <rdfs:label xml:lang='en'>person</rdfs:label>
      <rdfs:label xml:lang='en'>individual</rdfs:label>
      <rdfs:label xml:lang='en'>someone</rdfs:label>
      <rdfs:label xml:lang='en'>somebody</rdfs:label>
      <rdfs:label xml:lang='en'>mortal</rdfs:label>
      <rdfs:label xml:lang='en'>human</rdfs:label>
      <rdfs:label xml:lang='en'>soul</rdfs:label>
      <rdfs:subClassOf>
            <owl:Class rdf:about='#organism' />
      </rdfs:subClassOf>
      <rdfs:subClassOf>
            <owl:Class rdf:about='#causal_agent' />
      </rdfs:subClassOf>
</owl:Class>
 
Ok, so classes and subclasses are the easy part.  Today I tackled the
meronyms (part).  The key problem is that "part" should be a property of a
Class that is allowed multiple times and has a range of other Wordnet
classes.  
Here are the two methods I tried:
 
Method #1
---------
<owl:ObjectProperty rdf:ID='part'>
      <rdf:type rdf:resource="&owl;TransitiveProperty" />
      <rdfs:domain rdf:resource='#cell'/>
      <rdfs:range rdf:resource='#cell_wall'/>
</owl:ObjectProperty>                           
 
<owl:ObjectProperty rdf:ID='part'>
      <rdf:type rdf:resource="&owl;TransitiveProperty" />
      <rdfs:domain rdf:resource='#cell'/>
      <rdfs:range rdf:resource='#cytoplasm'/>
</owl:ObjectProperty>                           
 
Result: Unable to load into protege (duplicate "part").  In OWL Full we are
supposed to be able to model classes as individuals (which I think is what I
want). So, how would I model the above in OWL Full?
 
The other route is to make Part a subclass of Association and create Part
Individuals.  This is method 2.
 
Method #2
---------
 
<owl:Class rdf:ID='Association' />
<owl:ObjectProperty rdf:ID='source'>
      <rdfs:domain rdf:resource='#Association'/>
      <rdfs:range rdf:resource='http://www.w3.org/2002/07/owl#Class'/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:ID='target'>
      <rdfs:domain rdf:resource='#Association'/>
      <rdfs:range rdf:resource='http://www.w3.org/2002/07/owl#Class'/>
</owl:ObjectProperty>
<owl:Class rdf:ID='Part'>
      <rdfs:subClassOf>
            <owl:Class rdf:about='#Association' />
      </rdfs:subClassOf>
</owl:Class>
 
...
<Part rdf:ID='part-1'>
      <source rdf:resource='#cell'/>
      <target rdf:resource='#cell_wall'/>
</Part>
<Part rdf:ID='part-2'>
      <source rdf:resource='#cell'/>
      <target rdf:resource='#cytoplasm'/>
</Part>
 
Result: successfully loads into protege
 
While I can live with Parts as individuals, I would have preferred to model
them as a repeating property of the specific Wordnet Class.
 
Suggestions appreciated,
 
 - Mike
----------------------------
Michael C. Daconta
Chief Scientist, APG, McDonald Bradley, Inc.
www.daconta.net
 
Received on Saturday, 7 February 2004 13:36:25 UTC