Subject: RE: More detail on the DAV:bindings property...

From: "Clemm, Geoff" <[email-masked]>
Date: Thu, 13 Dec 2001 02:29:04 -0500

From: Peter Raymond [mailto:[email-masked]]

   In my earlier e-mail I mentioned that I was unsure about the
   contents of the DAV:bindings property.  Here is some more detail
   about why I think it is unclear, also find attached some PowerPoint
   slides which I used to try to understand the bindings property.

   I guess there are two things in the text that mislead me: 

   1) Section 13.1 says that the property "contains a complete list of
      all bindings to that resource", but also says it is necessary to
      select one URI mapping for a collection.  It seems to contradict
      itself, it is not complete because it only contains one URI
      mapping for a collection.

A binding is an named association between a collection and a resource,
where the "name" is a URI segement.  You perhaps are confusing a
"binding" with a "mapping" (where a "mapping" is an association
between a URL and a resource).

   2) It also says you should preferably use the mapping in the
      request-URI of the BIND request.  But I am unclear as to which
      BIND request.

The BIND request that created the binding named "bar" from C1 to R2.

      It is a PROPFIND request which was issued to find
      the DAV:bindings property, not a BIND request.

Yes, but that is not relevant for naming all the bindings
(since the collections containing the bindings are in general
unrelated to the request-URL of the PROPFIND request).

      Perhaps it means
      the last BIND request for that collection or perhaps it means
      the first bind request for the resource in the collection?

No, the BIND request that created the binding that is being identified.

   So using the example in Figure 1 of the bindings document you have the
URI 
   paths: 
   /coll1/bar 
   /coll2/bar 
   /coll3/foo 
   /coll1/ and /coll2/ are the same collection resource but all these
   URIs point to the same resource (R2).

OK.

   Imagine you make a PROPFIND request on /coll2/bar, asking for the
DAV:bindings 
   property...should you get: 
   <bindings> 
   <href>/coll1/</href> 
   <segment>bar</segment> 
   <href>/coll2/</href> 
   <segment>bar</segment> 
   <href>/coll3/</href> 
   <segment>foo</segment> 
   </bindings> 

   That is a "complete" list of all bindings for resource R2...

/coll1/bar and /coll2/bar both identify the same binding (from C1 to R2),
so you shouldn't have both in the dav:bindings list.

   BUT section 13.1 says you should pick only one URI for a given
   collection, so perhaps it should return:

   <bindings> 
   <href>/coll2/</href> 
   <segment>bar</segment> 
   <href>/coll3/</href> 
   <segment>foo</segment> 
   </bindings> 

   Because /coll1/ and /coll2/ are the same collection I have picked
   just one URI mapping for that collection...

Yes.

   in this case I used the URI mapping from the PROPFIND request. 

The URI mapping from the PROPFIND request is not relevant.
What is relevant is whether the binding was created by
  BIND /coll3/foo
  Destination: http://host.com/coll1/bar
or 
  BIND /coll3/foo
  Destination: http://host.com/coll2/bar

In the first case, http://host.com/coll1/bar should be in the
DAV:bindings property for R2, while in the second case,
http://host.com/coll2/bar should be in the DAV:bindings
property for R2.

Cheers,
Geoff