Link subjects and targets

Dan mentioned:

> What we would like is some extension of the URLs to specify this location
> within a document.  Since URLs in general don't have this, other than
> marginally for http URLs, we could generalize the specification from
> a simple URL to a (URL, locator) pair.  I'll just call it "annotation"
> below.

My plan is to define the Link header field in HTTP as including a new
attribute for identifying the link anchor within the source document
(or the entire URL if the link is being defined by a third party).
An anchor would be identified by the fragment, as in

      #name             (for NAMEd elements)
      #id=n8734987      (for elements with an ID attribute)
      #bytes=24-48      (for byte ranges)
      #page=12          (for page-based resources)

The #fragment syntax would be based on the media type of the entity.
For example, #name and #id= make sense for text/html, but not text/plain.
Likewise, #page=12 makes sense for PDF, but not HTML.  Anyway, the exact
syntax of the fragments are less important than the notion that we
will be able to identify specific anchors within source and destination
documents without the need to change those documents.

> In addition, we want to allow multiple targets, as has been suggested
> by a few people (my draft mentioned it too), but do we do this with
> multiple (annotation, target) pairs, or is it a tuple of 
> (annotation, target1, target2, ...)?  They are logically equivalent,
> so far.

And maybe (annotation, target_regular_expression) and/or
(annotation, target_prefix).

> In addition, we want to allow each (annotation, target) pair to have
> a different relationship.  This relationship is independent of the
> annotation itself because the same annotation may have a different
> relationship with another target.  E.g. an agreement with one a
> disagreement with another.  Thus we have several triples:
> (annotation, target, relationship).  Or it could be (annotation,
> (target1, rel1), (target2, rel2), ...)

That should be relationships -- a single annotation/target pair may
reflect more than one relationship.

> In addition, we want the "link" represented by this triple to be an
> object itself, with an identifier, and it may be the target of another
> link or annotation triple.  

Something like:

   Link: <target-URL>; rel="Next TOC"; anchor="source-URL"; name="link59"

maybe?  What are the semantics of a link traversal whose target is
another link?  I am guessing redirection.  Note that the above is not
intended to advocate a particular syntax, since

   Link: {forward {name "link59"}
                  {tail "source-URL"}
                  {head "target-URL"}
                  {relationships Next TOC}}

is an equally expressive syntax.  Actually, this is really a concern for
the link working group -- we should just include the generic requirement
that such link referencing is necessary to support annotations, and assume
that the anchor reference is part of the URI.