UserPreferences

PaceIntrospectOneCollectionAtATime


Abstract

Eliminates Workspaces from the the core. The Atom Publishing Protocol defines how to publish content to individual collections. The minimum requirement for introspection is discovering information about individual collections. How an application chooses to arrange collections is orthogonal to the core protocol and should be considered out of scope.

Status

Withdrawn. Replaced by PaceReworkProtocolModel, PaceReworkCollectionMembership and PaceReworkCollectionListing

Rationale

The core APP protocol defines methods for interacting with individual collections, one at a time. Applications may choose to arrange collections in a variety of ways. For the core protocol spec, it is best for us to focus on introspection of individual collections than to try to come up with some format capable of describing how collections are going to be arranged in the wild. This eliminates workspaces altogether and defines that any description of how collections are arranged is out of scope.

Proposal

(replace existing Section 7 in -06)

7. Introspection

Before a client can publish to a collection, it must first retrieve metadata that describes the collection, and the types of resources it may contain, by sending a GET to the Collection's URI.

7.1 Example

GET /collection-uri HTTP/1.1
Host: example.org
HTTP/1.1 200 OK
Date: Fri, 25 Mar 2005 12:12:12 GMT
Content-Length: nnnn
Content- Type: application/atomserv+xml

<?xml version="1.0" encoding="utf-8"?>
<collection xmlns="http://purl.org/atom/app#" 
  title="My Blog Entries"
  href="http://example.org/collection-uri">
  <member-type>entry</member-type>
  <list-template>http://example.com/{index}</list-template>
</collection>

7.2 Element Definitions

7.2.1 The 'app:collection' Element

The app:collection element contains information elements that describe properties of the collection and a list-template that may be used to enumerate the members of the collection.

  appCollection = 
    element app:collection {
      appCommonAttributes,
      attribute title {text},
      attribute href {IRI},
      ( appMemberType,
        appListTemplate,
        extensionElement)
    }

7.2.1.1 The 'title' Attribute

The app:collection element MUST contain a 'title' attribute, whose value conveys a human-readable name for the collection. This attribute is Language-Sensitive.

7.2.1.2 The 'href' Attribute

The app:collection element MUST contain an 'href' attribute, whose value conveys the IRI of the collection.

7.2.2 The 'member-type' Attribute

The app:collection element MUST contain one 'member-type' element whose content value specifies the types of resources that can appear in the collection.

  appMemberType = 
    element app:member-type ("entry"|"media"|extensionType)

  extensionType = ( NMTOKEN | IRI)

The specification defines two initial values:

7.2.3 The 'app:list-template' Element

The app:collection element MUST contain one 'app:list-template' element. The element content of app-list-template is an IRI template for a collection.

  appListTemplate =
    element app:list-template {
      appCommonAttributes,
      ( appIRItemplate )
    }

  appIRItemplate = xsd:string { pattern = ".+\{.+\}.*" } 

Impacts

Notes


CategoryProposals