# Re: DAML: restricting number of elements in a list

From: Ian Horrocks <horrocks@cs.man.ac.uk>
Date: Sat, 9 Feb 2002 17:36:55 +0000
Message-ID: <15461.24119.161471.721693@cs.man.ac.uk>
To: Steven Gollery <sgollery@cadrc.calpoly.edu>

```On February 6, Steven Gollery writes:
> I'm working on an ontology in DAML that includes some geometric
> concepts. I would like to be able to somehow define a property Vertices
> whose domain is the Polygon class and whose range is ordered collections
> of instances of the Point class, where the length of the ordered
> collection is at least three.
>
> It would be fairly straightforward to say that each Polygon must have at
> least three values of a Vertex property which is restricted to class
> Point, but that would lose the idea the vertices have an order -- the
> order is obviously a fundamental part of the semantics for the polygon.
>
> Does DAML provide any way to restrict the number of elements in a list?
> Or is there some other way to do what I need here?

There is no language construct that supports this - properties of a
DAML class are always unordered. One possible solution is to make the
range of Vertex a more complex structure that describes both the point
and its place in the list. This is not completely satisfactory as it
is difficult to ensure that the list values are sensibly ordered.

Another solution is to define subproperties of Vertex called Vertex1,
Vertex2 etc., each being a unique property (i.e., functional). The
main disadvantage with this method is that the maximum number of
vertices must be decided a priori. Ensuring that values are sensibly
ordered is a little easier in this case because the functionality
already precludes the case where there is more than one vertex with
the same number. Simply asserting, for each n from 2 to the max vertex
number, that the existence of the property Vertexn implies the
existence of the property Vertexn-1 should be enough to ensure that
there are no "gaps" in the list of vertices.

Hope this helps.

Ian Horrocks

>
> Thanks in advance,
>
> Steve Gollery