RE: Advanced collections and ordering

The intent of the ordering protocol is to provide basic support for ordering
that is nearly cost-free for the server.  The server is not really doing
anything but blindly follow the instructions of the client for inserting
elements into the ordering, and then responding to PROPFIND according to the
ordering the client set up.  This ordering protocol is really intended for
cases where the server cannot perform the ordering because it is not related
to the value of any property on the resources in the collection.  (It
assumes that for orderings that could be expressed as a sort based on some
property, a DASL search is more likely to be used than a collection

(More comments interspersed)


> -----Original Message-----
> From: Max Rible []
> Sent: Tuesday, March 09, 1999 1:56 PM
> To:
> Subject: RE: Advanced collections and ordering
> At 14:33 3/9/99 +0000, Slein, Judith A wrote:
> >Ordering in the collections specification is completely 
> under the control of
> >the client.  The server does nothing to enforce the 
> "correctness" of the
> >ordering.  
> >The server is required only to insure that, for collections that are
> >ordered, every collection member appears in the ordering 
> exactly once and no
> >resource that is not in the collection appears in its 
> ordering.  Beyond
> >that, it's up to the client to insure that the ordering follows the
> >semantics identified by DAV:orderingtype.
> Are you saying that PROPFIND will always return elements in arbitrary
> order and that the client should take the rules and do the 
> sorting itself?
> This seems at odds with the collection protocol.

No, the server is required to respond to PROPFIND with the elements in the
order specified by the collection ordering.  But it is entirely up to the
client to insert the collection members into that ordering.  If a client
decides to ignore the ordering semantics identified by DAV:orderingtype and
insert a new element in a strange place, that's what the ordering will be,
and that's the order the server is required to use when responding to

> >This should probably be made clearer in the spec.
> I got a *completely* different impression from section 5.1:
> ---
> Collections on a compliant server may be ordered, but need 
> not be.  It 
> is up to the client to decide whether a given collection is 
> ordered and, 
> if so, to specify the semantics to be used for ordering its members.
> ...
> The server is responsible for enforcing these constraints on 
> orderings.

The constraints this is talking about are (1) every member of a collection
must appear in its ordering exactly once and (2) the ordering must not
include any resource that is not in the collection.  These are the only
constraints the server enforces.
> ...
> When responding to a PROPFIND on a collection, the server 
> MUST order the 
> response elements according to the ordering defined on the collection.
> ---
> The DAV:custom ordering is already defined, and that is under control
> of the client as you said above.  The DAV:unordered ordering is also
> defined, and is arbitrary.  However-- at least according to my reading
> of the collections protocol spec-- there is an arbitrary space of 
> other orderings, as yet undefined, that could be applied by 
> the server.  
> I expect it will be common for servers to implement basic 
> notions such 
> as alphabetical sorting by filename or extension, for instance.

There will not be any standard set of semantics defined.

Only one ordering per collection is allowed.

Servers do not order the members of a collection.  Clients do this.  If the
client neglects to specify a position for a new member of an ordered
collection, the server is required to position the new member at the end of
the ordering.
> In those cases, the Position: header could be used in ways that would
> violate the ordering on the collection as I described in my previous
> message.

Yes, that's true.  We are not tasking the server with enforcing compliance
with the semantics the client chose for ordering the collection.

> -- 
> %% Max Rible %% %% 
> %%
> %% "Before 
> enlightenment:  sharpen claws, catch mice.                   %%
> %%  After enlightenment:  sharpen claws, catch mice."         
>    - me   %%

Received on Tuesday, 9 March 1999 16:53:00 UTC