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.
-
Remove Workspaces. An introspection document describes one collection at a time
-
HTTP GET on Collection URI returns the Introspection document
-
How to locate the Collection URI can be left to an "Auto Discovery" I-D like what we have with Atom feeds or using the Introspection link proposed http://www.intertwingly.net/wiki/pie/PaceLinkIntrospection, etc
-
Non-critical Minor style changes to member-type ( modified definition, no IANA registry )
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:
-
"entry" - The collection contains only Atom Entry documents.
-
"media" - The collection contains resources of any media type.
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 = ".+\{.+\}.*" }