- 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