Abstract
Replace <url> in <author> and <contributor> with <link>. Allow multiple. Allow generic relationship.
Status
Open
Rationale
Generally speaking, URIs are preferred to be in attributes.
While remaining optional, it might prove useful to allow some machine-readable processing of resources related to person constructs. For example: large feed aggregator sites like pubsub or bloglines or syndic8 could extract all the feeds which have foaf resources linked to their authors and then at least make that list available for other foaf-eating services to do as they wont.
<author>
<name>...</name>
<link href="..." rel="resume" type="application/pdf" title="hire me!" />
<link href="http://friendster..." rel="profile" type="text/html" title="date me!" />
<link href="..." rel="blog" type="text/html" title="read me!" />
<link href="..." rel="foaf" type="application/foaf+xml" title="foaf!" />
</author>
The 'allow generic relationship' is to provide the same generic linking functionality of the existing <url> construct, and could be done by simply omitting the 'rel' attribute. Thus this:
<author>
<name>...</name>
<url>....</url>
</author>
would be written as:
<author>
<name>...</name>
<link href="..." />
</author>
It still provides the same meaning - it "conveys a URI associated with the author". Implementations would process it the same as they would have processed <url>. For the occasions where @rel is specified then an implemention could either ignore @rel (treating it the same as the generic <url>), pass it to the user to process (eg. provide a tool-tip that says "[resume]" on the link), or do something special pertaining to that particular @rel value.
Proposal
In section
3.2.2 "atom:url" Element, replace this:
-
The "atom:url" element's content conveys a URI associated with the author. Person constructs MAY contain an atom:url element, but MUST NOT contain more than one. The content of atom:url in a Person construct MUST be a URI [RFC2396].
with this:
-
The "atom:link" element is a Link construct that conveys a URI associated with the person. The nature of the relationship as well as the link itself is determined by the element's content and attributes.
atom:person constructs MAY contain one or more atom:link elements.
The "atom:rel" attribute of atom:link may be empty or absent, indicating that the relationship of the linked resource has an unspecified relevance to the person construct.
Impacts
Would require either enumerating all allowable @rel values, or making @rel extensible.
Fits well with PaceLinkPurpose.
LinkConstruct specification would need to be updated to allow blank or omitted @rel.
Notes
Assuming PaceLinkPurpose, it may be possible to make @rel optional in all <link> elements.
