Abstract
Replace the term "URI" with the term "URI reference". State that atom:id elements cannot contain relative URI references.
This proposal is based on the text of http://www.ietf.org/internet-drafts/draft-ietf-atompub-format-01.txt together with the changes proposed by PaceXmlBaseEverywhere
Status
Open
Rationale
Where the format specification currently uses the term "URI", in many cases it should be using the term "URI reference" in order to allow relative URIs to be used in Atom. The use of relative URI references has already been implied by the use of XML Base in Atom.
The use of relative URI references in atom:id creates extra complexity with comparatively little benefit however, so this Pace also proposes that atom:id should only contain absolute URI references. One of the concerns is that if relative URI references are used in ids, then this could cause entries to have multiple aliases if the feed can be accessed from multiple locations, which is a property that Atom disallows.
Because it is common for fragments to be used in identifiers, especially in RDF, this Pace proposes that atom:id should be an absolute URI reference, rather than an absoluteURI.
This proposal only replaces the term "URI" with "URI reference" when it is used to refer to a syntactic component in the specification, the term URI is retained when it is used to refer to the meaning of the URI that the reference ultimately refers to.
Proposal
In section 3.2.2 replace:
-
The content of atom:uri in a Person construct MUST be a URI [RFC2396].
with:
-
The content of atom:uri in a Person construct MUST be a URI reference [RFC2396].
In section 3.4.2 replace:
-
it MAY be used as a hint to determine the type of the representation which should be returned when the URI in the href attribute is dereferenced.
with:
-
it MAY be used as a hint to determine the type of the representation which should be returned when the URI conveyed by the href attribute is dereferenced.
In section 3.4.3 replace:
-
The "href" attribute contains the link's URI. Link constructs MUST have a href attribute, whose value MUST be a URI [RFC2396].
with:
-
The "href" attribute conveys the link's URI. Link constructs MUST have a href attribute, whose value MUST be a URI reference [RFC2396].
In section 4.2.6 replace:
-
The content of this element, when present, MUST be a URI.
with
-
The content of this element, when present, MUST be a URI reference [RFC2396]. This URI reference MUST be absolute, and MAY contain a fragment identifier.
absolute-URI-reference = absoluteURI [ "#" fragment ]
In section 4.2.7 replace:
-
The atom:generator element MAY have a "uri" attribute whose value MUST be a URI. When dereferenced, that URI SHOULD produce a representation that is relevant to that agent.
with
-
The atom:generator element MAY have a "uri" attribute whose value MUST be a URI reference [RFC2396]. When dereferenced, the URI SHOULD produce a representation that is relevant to that agent.
In section 5.5 replace:
-
The content of this element MUST be a URI.
with
-
The content of this element MUST be a URI reference [RFC2396]. This URI reference MUST be absolute, and MAY contain a fragment identifier.
absolute-URI-reference = absoluteURI [ "#" fragment ]
In section 5.12 replace:
-
The content of this element MUST be a URI.
with
-
The content of this element MUST be a URI reference [RFC2396].
Impacts
This proposal only addresses the usage of relative relative URI references in Atom Format. The use of relative URI references in Atom Publishing Protocol is more complex and may need to be addressed separately.
Unfortunately there is no term explicitly defined in RFC2396 for an absoluteURI with optional fragment so the absolute-URI-reference construct has to be created. However RFC2396bis does define the term "URI" to fit this need, so if RFC2396bis is accepted for use in Atom, then the definition of absolute-URI-reference can be removed and its usage replaced with the term "URI".
Additionally, if Atom chooses to use IRIs instead of URIs, then that proposal must replace the usage of "URI" and "URI reference" with "IRI" and "IRI reference".
Notes
See also:
PaceXmlBaseEverywhere PaceIri PaceUriOrItsSuccessor