Confusing DAML+OIL metamodel question

Folks,

let me apologize in advance if this has recently been discussed (I am 
not fully caught up on the mailing list traffic):

I'd like to define a property (preferably in DAML+OIL) whose values are 
restricted to be a certain set of classes. One way of doing this would 
be to define a metaclass and assign this as the rdfs:range of the 
property. So far so good, but anyone can instantiate new classes from 
the metaclass, so I would now like to restrict the membership of the 
metaclass:

<daml:Class rdf:ID="MyMetaClass">
   <daml:oneOf rdf:parseType="daml:collection">
     <MyMetaClass rdf:ID="A"/>
     <MyMetaClass rdf:ID="B"/>
     ...
   <daml:oneOf>
<daml:Class>

This works. Now for my question: What if I wanted to restrict the 
property values to my class A and any of its subclasses? Again, I could 
define a metaclass, make A be an instance of this metaclass, but how to 
restrict the membership of the metaclass? If I say

<daml:Class rdf:ID="MyFunkyMetaClass">
   <daml:oneOf rdf:parseType="daml:collection">
     <MyMetaClass rdf:ID="A"/>
   <daml:oneOf>
<daml:Class>

and then make AA be a subclass of A, weird things happen: Because of the 
above definition AA is not a member of MyFunkyMetaClass, yet this 
somehow goes against what I have always thought of the subclass 
relation...

Or am I just confused? Any ideas?

	- Ora

--
Ora Lassila  mailto:daml@lassila.org  http://www.lassila.org/
Research Fellow, Nokia Research Center

Received on Tuesday, 20 August 2002 21:14:54 UTC