Cast Atom collections as WebDAV Ordered Collections, but define GET and POST for interoperation among simple clients. WebDAV compliance is not required.






Problem Statement

Atom Entries and other resources may be members of extremely large collections where collection integrity and membership must be enforced, but Atom implementations may not have the desire or ability to implement sophisticated HTTP and WebDAV functionality.

Normative Text

Simple Example Request and Response

Retrieving the 10 most recently updated resources, out of a set of 47022:

GET /news/
Range: atom -10
Content-Type: application/atom+xml

HTTP/1.1 206 Partial content
Date: Wed, 15 Nov 1995 06:25:24 GMT
Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
Content-Range: atom 47012-47021/47022
Content-Length: ...
Content-Type: application/atom+xml

<col xmlns="" href="">
  <res href="">Human Readable Info 22</res>
  <res href="">Human Readable Info 21</res>
  <res href="">Human Readable Info 20</res>
  <res href="">Human Readable Info 19</res>
  <res href="">Human Readable Info 18</res>
  <res href="">Human Readable Info 17</res>
  <res href="">Human Readable Info 16</res>
  <res href="">Human Readable Info 15</res>
  <res href="">Human Readable Info 14</res>
  <res href="">Human Readable Info 13</res>

Atom Workspaces

Atom Workspaces consist of a set of WebDAV collections that contain the resources that an Atom client manipulates. These collections MUST have distinct roots, but are not required to be members of a WebDAV collection themselves, or even be located on the same server.

[introspection example (see PaceIntrospection)]

Overview of WebDAV Repositories (cribbed from CalDAV-03)

A WebDAV repository is a set of WebDAV collections, containing other WebDAV resources, within a unified URL namespace. For example, the repository "" may contain WebDAV collections and resources, all of which have URLs beginning with "". Note that the root URL "" may not itself be a WebDAV repository (for example, if the WebDAV support is implemented through a servlet or other Web server extension).

Atom Collections

Atom Collections are WebDAV Collections [WWW]RFC 2518, but they MAY NOT be compliant WebDAV collections. Although the preceeding statement sounds contradictory, RFC2518 specifically allows non-compliant collections. This means that a resource is permitted to assert that it is a WebDAV collection without implementing all of the methods required for any level of WebDAV conformance. It does require that the URI-space of the collection be managed in a DAV-compliant manner.

Collection Order

WebDAV Ordered Collections [WWW]RFC3648 ensure that members of a collection are represented in specific order. Atom collections and sub-collections MUST be ordered. Furthermore, members of Atom Entry Collections [see below] are not permitted to be interleaved with members of other sub-collections. That is, Atom Entry Collection resources also act as fence posts.

Example Atom Entry Collection:

                  / | \
                 B  C  D
                /  /|\
               E  F G H

Examples of a valid order for the members of resource A: "A B E C F G H D", "A D B E C F G H", etc. One example of an invalid order is "A B C E F G H D". Other Atom Collections may interleave their results as determined by their order method.

Atom Brief Collection Syntax

Atom Brief Collection syntax (ABC) is an abbreviated syntax for describing DAV collections which conform to the Atom Protocol. ABC covers a limited set of properties for member resources, and this specification does not define a method for the inclusion of additional properties in ABC representations.

A simple ABC document:

<col xmlns="" href="">
  <res href="">Human Readable Info 1</res>
  <res href="">Human Readable Info 2</res>
  <res href="">Human Readable Info 3</res>
  <res href="">Human Readable Info 4</res>

A more complex ABC document:

<col xmlns="" href="">
  <ref to=""
       href="" />
  <sub href="" />
  <res href="">Human Readable Info 1</res>
  <sub href="" />
  <res href="">Human Readable Info 2</res>
  <sub href="" />
  <res href="">Human Readable Info 3</res>
  <res href="">Human Readable Info 4</res>

N.1 atom:col

atom:col represents an Atom Collection. When atom:col is the root element, its contents represent the membership of the resource at the URI given in element's "href" attribute.

N.2 atom:res

atom:res represents a member resource of the containing collection, which is not itself a collection. It MUST have an 'href' attribute, which must begin with the URI-space of the root "col" element. It MUST NOT contain child content.

N.3 atom:sub

atom:sub represents a collection which contains a subset of the membership of the root "col" element. It MUST have an 'href' attribute, which must begin with the URI-space of the root "col" element.

N.4 atom:ref

atom:ref elements represent WebDAV [WWW]Redirect References. It MUST have an 'href' attribute, which must begin with the URI-space of the root "col" element. It MUST have a 'to' attribute, indicating the URI of the resource it redirects to, which MUST begin with the URI-space of the root "col" element.

Atom Ranges

[see PaceEntryQuery]

Atom Requests and Responses

GET requests to Atom Collections with a 'Content-Type' header of application/atom+xml MUST return all DAV compliant resources that are children of the collection, as if a PROPFIND request with "Depth: infinity" was sent.

Atom servers may respond to requests with a 507 status code if the requested range is too large to satisfy.

Design Rationale

WebDAV significantly overlaps with the Atom Protocol, and the Protocol gains many advantages by reusing WebDAV whenever possible. [WWW]WebDAV Advantages.