rev parameter - LC comment on draft-nottingham-http-link-header-07.txt



    o  Clarified status of 'rev'.

and also

    o  Made 'rev' text a bit less confusing.

I think it's still confusing...

So the grammar in 
lists it as regular link parameter:

    link-param        = ( ( "rel" "=" relation-types )
                      | ( "anchor" "=" <"> URI-Reference <"> )
                      | ( "rev" "=" relation-types )
                      | ( "hreflang" "=" Language-Tag )
                      | ( "media" "=" ( MediaDesc | <"> MediaDesc <"> ) )
                      | ( "title" "=" quoted-string )
                      | ( "title*" "=" enc2231-string )
                      | ( "type" "=" type-name "/" subtype-name )
                      | ( link-extension ) )

On the other hand, 

    The relation type of a link is conveyed in the "rel" parameter's
    value.  Note that the "rev" parameter has also been used by some
    formats, and MAY be accommodated as a link-extension, but its use is
    neither encouraged nor defined by this specification.

So the ABNF defines it as parameter, but the prose claims it's not 
specified, and could be specified later on as extension. Speaking of 
which, how do I define an extension? Standards Track RFC updating this 
one, as there is no registry?

Later on, in the section about HTML4 we find 

    HTML4 also has a "rev" parameter for links that allows a link's
    relation to be reversed.  The Link header does not define a
    corresponding "rev" parameter to allow the expression of these links
    in HTTP headers, due to the confusion this mechanism causes as well
    as conflicting interpretations (briefly, some hold that rev reverses
    the direction of the link, while others that it reverses the
    semantics of the relation itself).

I have to admit that I'm still not sure what *in practice* the 
difference between reversing the link direction and reversing the link 
semantics actually is. (Example?)

RFC 2068 delegates the definition to RFC 1866 (HTML 2) which says 

             same as the REL attribute, but the semantics of the
             relationship are in the reverse direction. A link from A
             to B with REL="X" expresses the same relationship as a
             link from B to A with REV="X". An anchor may have both
             REL and REV attributes.

This does not seem to contradict the latest HTML spec, which has in 

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

    Consider two documents A and B.

    Document A:       <LINK href="docB" rel="foo">

    Has exactly the same meaning as:

    Document B:       <LINK href="docA" rev="foo">

    Both attributes may be specified simultaneously.

So my preference would be to actually define the rev parameter 
consistently with this, and then to discourage it's use due to the other 
good reasons we heard about that (such as HTML authors typing "rev" 
instead of "rel").

Related to that: if processing the anchor attribute was mandatory then 
any use of "rev" (under the definition above) could be rewritten with 
rel and anchor. Given a context IRI of A:

   Link: <B>; rev=foo

should be equivalent to

   Link: <A>; rel=foo; anchor=<B>


Best regards, Julian

Received on Thursday, 21 January 2010 13:32:35 UTC