Re: ISSUE-27: rel-ownership - Chairs Solicit Proposals

Toby Inkster, Wed, 16 Dec 2009 12:23:17 +0000:
>> http://www.mnot.net/drafts/draft-nottingham-http-link-header-07.txt
>> 
http://www.mnot.net/drafts/draft-nottingham-http-link-header-07-from-6.diff.html 
> 
> Your new explanation on @rev in HTML4 states:
> 
>> some hold that rev reverses	
>> the direction of the link, while others that it reverses the	
>> semantics of the relation itself

Firstly: This description only creates more confusion. For example, the 
readers will wonder (as I do): What's the difference between reversing 
the link and reversing the semantics of the relation itself? 

Secondly: It misinforms. @rev doesn't "reverse" anymore than @rel 
"relates". Neither @rev nor @rel affect the direction of the link. Both 
@rel and @rev only _informs_. @rel informs about the relationship that 
"the source resource" has to "the destination resource". While @rev 
does the opposite: it inform about what kind of relationship "the 
destination resource" has to "the source resource".

In HTML 4.01, source, destination and direction is the first thing that 
is explained about links in general: [1]

]]
A link has two ends -- called anchors -- and a direction. The link 
starts at the "source" anchor and points to the "destination" anchor, 
which may be any Web resource (e.g., an image, a video clip, a sound 
bite, a program, an HTML document, an element within an HTML document, 
etc.).
[[

And about the anchor element it is said: [2] 

]]
2.	The name attribute names the anchor so that it may be the 
destination of zero or more links (see also anchors with id).
3.	The href attribute makes this anchor the source anchor of exactly 
one link.
[[

The HTML 5 draft shows very little interest in anything related to 
direction w.r.t. links. E.g. it fails to say that an anchor with a 
@name or @id can be the destination anchor of link. And also, it 
doesn't include @rev.

Thus, the literal meaning of @rev - reverse - plays on the important 
concept in HTML 4, that each link as a source anchor and a destination 
anchor.

Now, if we apply @rev to anchor tag, such as in the following example,

<a href="albumpage" rev="image" name="image-1" id="image-1">
	<img src="image" alt="description" />
</a>

then this does not change the fact that it is the anchor's @name/@id 
which represents the  "destination anchor" or that it is the anchor's 
@href which creates a "source anchor". 

What @rev does is that it informs about what kind of relationship the 
destination resource of the a@href has to the source resource of the 
a@name.
 
> The HTML 4.01 Recommendation defines @rel as:
> 
> 	"the relationship from the current document to
> 	 the anchor specified by the href attribute"
> 	<http://www.w3.org/TR/html4/struct/links.html#adef-rel>
> 
> And @rev as:
> 
> 	"a reverse link from the anchor specified by the
> 	 href attribute to the current document"
> 	<http://www.w3.org/TR/html4/struct/links.html#adef-rev>

Note the use of the word "relationship" about @rel, and "reverse link" 
about @rev. In isolation this could make it seem as if @rel defines 
semantics ("relationship") while @rev defines "a reverse link", which 
supposedly is something other than a relationship.

However, HTML 4 also says: [3]

]]
The rel and rev attributes play complementary roles -- the rel 
attribute specifies a forward link and the rev attribute specifies a 
reverse link.
[[

Since @rel and @rev can be used simultaneously in the same <link> or 
<a>, then "specifies" should of course not be interpreted to mean 
"relate" or "reverse" or "create" or any other thing that could make 
anyone think that @rev affects the link in any way.

I think the above could have been reworded to say that "the rel 
attribute specifies the link relationship forwards, while the rev 
attribute specifies the link relationship in the reverse direction".

The point is: @rel and @rev does the same thing, except in opposite 
direction. They do not change anything, however. They only add 
information. 

> Further it illustrates this with an example [ I replaced with a full quote:]

]]
Document A:       <LINK href="docB" rel="foo">
Has exactly the same meaning as:
Document B:       <LINK href="docA" rev="foo">
[[

Again, the text speaks about "meaning". It is simplest to see with a 
real example, such as "next":

Document A:       <LINK href="docB" rel="next">
Has exactly the same meaning as:
Document B:       <LINK href="docA" rev="next">

When it is said that they both have "the same meaning", then it is 
meant that they both speak about the same oneway relationship between 
Document A and Document B - more correctly: from A to B. None of them 
informs about whether Document B has a reciprocal relationship to 
Document A. Document B could in theory appear in another web site - 
another context - than Document A. It could be without any link to 
Document A, except for the link that Document A itself "feels" that i 
has to Document B.

> The earlier 4.0 Recommendation has word-for-word identical definitions
> and examples. 3.2 is similar <http://www.w3.org/TR/REC-html32#link>.
> 
> I don't doubt that some people are confused by @rev. (If you look hard
> enough, you can find people confused about almost anything.) But given
> that all the relevant recommendations are quite clear in stating that
> @rev reverses the *direction* of the link, it seems disingenuous to
> present them as two equally valid interpretations of the definition of
> @rev.

I, again, take exception to the claims that whether @rel or @rev 
changes whether the direction or the semantics. What they both do is 
that they _inform_ about the semantics of the link. It is just a fact 
of life that a link has a direction, and that semantic information is 
applied to either the source-to-destination relationship (@rel). Or to 
the destination-to-source relationship. The use of @rev or @rel informs 
about the direction the semantics is applied.

> I'd suggest changing the wording to something like:
> 
> 	while rev is defined to reverse the direction of
> 	the link, some have implemented it as if it reversed
> 	the semantics of the link type

I don't know who has implemented this. I would like to see it so I can 
understand what is meant.

A more relevant rewording could be:

   While rev is defined to inform about the reverse relationship of the 
link".

However, I think much more info need to be added, yes, indeed that the 
@rev specification of HTML 4 should be included and, eventually, 
clarified. Who needs to know that some are confused?

> Though, that having been said, although I've seen a handful of examples
> where people have mistakenly used @rev instead of @rel, either through
> ignorance or the slip of a finger, I can't remember seeing any which
> *rely* on the mistaken interpretation of it reversing the semantics of
> the link type. For example, I've never seen a page which used, say,
> rel="author" to link to the author and rev="author" to link to people
> who did not contribute to the document.

+1 

[1] http://www.w3.org/TR/html4/struct/links.html#h-12.1
[2] http://www.w3.org/TR/html4/struct/links.html#h-12.2
[3] http://www.w3.org/TR/html4/struct/links.html#h-12.3.1
-- 
leif halvard silli

Received on Wednesday, 16 December 2009 17:09:16 UTC