DAML-S expressiveness challenge #2

In a DAML-S process description, we need to be able to express the
following sort of restriction:

    the set of things whose property P has values in [Class1, Class2,
... ClassN]

that is,

    the set of things x such that, for each property instance P(x, y), y
is a daml:list whose first element is an instance of Class1, second
element an instance of Class2, ..., and nth element is an instance of
ClassN.

I'm looking for something like this:

    <daml:Restriction> 
      <daml:onProperty rdf:resource="#P"/>
      <daml:toClass>
          WHAT GOES HERE?
      </daml:toClass>
    </daml:Restriction>

For brevity, and because I think the above request is pretty clear (but
correct me if I'm wrong about that :-), I won't give any motivation or
examples related to processes per se in this message.  But I'll be glad
to follow up with such if needed.

Question 1: What's the nicest way to do the above with current DAML+OIL?

Question 2: Could we reasonably easily define a new property (or make it
part of the base language), say "listOfInstancesOf", so that the
following reasonably pretty declaration would be possible:

    <daml:Restriction> 
      <daml:onProperty rdf:resource="#P"/>
      <daml:toClass>
        <listOfInstancesOf rdf:parseType="daml:collection">
          <rdfs:Class rdf:about="#Class1"/>
          .....
          <rdfs:Class rdf:about="#ClassN"/>
        </daml:listOfInstancesOf>
      </daml:toClass>
    </daml:Restriction>

Thanks,

-- David

PS - Thanks to Mark Burstein for doing most of the work that led to the
formulation of this question.

Received on Monday, 16 July 2001 04:51:15 UTC