Subject: PaceUriReferences

From: David Powell <[email-masked]>
Date: Sun, 1 Aug 2004 16:53:08 +0100

I have created a proposal to replace the use of the term "URI" with
the term "URI reference" in various places in atom-format, and also to
require atom:id to be an absolute URI reference.

http://www.intertwingly.net/wiki/pie/PaceUriReferences

== 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

-- 
Dave