Re: #foo URI references

On Saturday, September 20, 2003, at 08:53  AM, Al Gilman wrote:
> At 07:53 PM 2003-09-19, Roy T. Fielding wrote:
>> There is no change in reference semantics between this and 2396.
>
> Are you sure?

Yes.

> [I speak as a fool.]

No.

> Under the old regime, if a hyper-document contains a reference by means
> of a fully-qualified URI-reference, that is to say an absolute URI and
> a #fragment clause, the referential semantics would appear to have been
> changed by the current language.

I think referential semantics == it refers to the same resource.
It is not "how does the browser respond to a retrieval request
on this reference", which is subject to a hundred local configuration
items and cache availability criteria that the person making the
reference could not possibly know about.  A same-document reference
has always formed a complete URI with fragment identifier that
identifies the target of the reference (e.g., for bookmarking
or later use).

> In RFC 2396, if the reference contains an absolute URI then the 
> reference is
> never compared with the BASE and the reference is interpreted as to the
> resource identified in the URI without regard for the fact that the 
> current
> DOM is a representation of that resource.  Caching and retrieval 
> behavior
> is undefined.  Whether the User Agent navigates to another node in the 
> currently
> constructed DOM or retrieves the resource afresh from wherever across 
> the net,
> either is regarded as conforming to the referential semantics of the 
> reference.

Yes, though it has long been the case amongst the browsers that the
best practice behavior is to not perform a separate retrieval if the
reference URI == base URI, because that is more efficient and less
likely to lead to trouble if the current page isn't cached or the
computer is off-line or otherwise unable to perform a refresh.

> In the present draft this behavior is tightened so that all references 
> are
> compared to the incumbent BASE for the current DOM and no refresh is 
> performed
> if the reference can be satisfied from the current DOM.  This 
> constitutes a
> tightening of the referential semantics for the case where the 
> URI-reference
> is fully qualified (contains an absolute URI) which happens to agree 
> with the
> BASE.

Exactly. It increases the set of references that will be considered
same-document links during a retrieval action.

> So yes, the behavior is the same as before for #foo references.  But 
> the
> specified behavior and therefore the referential semantics has changed 
> for
> the case of absoluteURI#foo references.  The referential semantics 
> does not
> only include which resource is referred to.  It matters in this case 
> whether
> the reference is to any representation of the resource or locally to 
> the
> representation making the reference.

The specified behavior has certainly changed, hopefully to correspond
more closely to both browser implementations and the needs of 
non-hypertext
processors.  RDF folks requested this change ages ago.

> Admittedly, the specification has been changed in this case to agree 
> with a
> widely-implemented narrowing of the formerly-acceptable behavior, but 
> this
> is a change in what the specification asserts by way of referential 
> semantics.
>
> The semantic change is to extend #foo semantics to BASE#foo 
> URI-references.

That's odd -- I would call that a behavioral change, since the meaning
of the link hasn't changed at all; I only selected one of the ways the
link could be satisfied and made it the standard.  Before it was left
up to the application.

....Roy

Received on Saturday, 20 September 2003 18:37:25 UTC