Specific Language Extension Suggestion

From: Jim Hendler (jhendler@darpa.mil)
Date: 06/12/01

Mike D. - can this go on some appropriate agenda.

Collections as properties:

I would like to make suggest the need for a language feature I'm 
finding comes up often in several applications of DAML and DAML-S 
that I am playing to (alluded to in earlier mail).  I've evaluated 
several long emails Ian sent me with suggestions for how to do things 
in current D+O, but none quite match my need.

What I want to do is have a property of class that can be filled with 
a list of elements (and ideally to be able to express limitations on 
those elements). Currently, I can create a number of instances of a 
given property, thus creating something like what I said, but it is 
not the same.

The problem is I want this to be like any other property -- for 
example, I may wish to say that all proofs have ONE AND ONLY ONE list 
of proof steps.  I could do this with max/min cardinality expressed 
about the property filled by a collection, but can't do it with 
simply a bunch of these properties expressed.

So, in RDF-S, I can say something like

Proof:Body :a rdf:Property;
  rdfs:domain Proof:Proof;
  range [ :collectionOf Proof:Step]

but I'd like to use the daml class and all the associated machinery.

So far, the closest thing anyone has suggested came from Ian

At 10:17 AM +0100 5/27/01, Ian Horrocks wrote:
>There really is no way in DAML to represent a "collection" of DAML
>classes - you have to specify the semantics of the collection, e.g., a
>conjunction, but this probably isn't what you intend. Another way
>would be to build a more complex class called, say,
>ProofStepCollection which consists of a ProofStep and (optionally) a
>hasClass restriction on the property "nextProofStep" with a value
>"ProofStepCollection". This would allow you to build arbitrary lists
>of ProofSteps. You could also play various tricks like making
>nextProofStep transitive (or perhaps defining a transitive
>superProperty "subsequentProofStep") so that you can get at all the
>ProofSteps via a single property link. This would then allow you to
>specify the (non)existence of certain kinds of ProofStep somewhere in
>the list, e.g., you could define the class of proofs such that all
>(none) of the steps in the proof body were of a certain kind.

but that is awfully cumbersome.  I'd be willing to consider a 
language idiom that maps to what Ian proposed, but wonder if anyone 
else has an alternative.  (Dan C., you had sent me something, but I 
lost the email - perhaps send your solution to the group)

Dr. James Hendler		jhendler@darpa.mil
Chief Scientist, DARPA/ISO	703-696-2238 (phone)
3701 N. Fairfax Dr.		703-696-2201 (Fax)
Arlington, VA 22203		http://www.cs.umd.edu/~hendler

This archive was generated by hypermail 2.1.4 : 04/02/02 EST