[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Atom as citation mechanism?



Right now, an Atom entry provides a metadata-rich shell around some data.  Instead, what if we treated Atom entries more like citations/annotations (I'll just use "citation" in a very generic, possible over-encompassing, sense here).  Bear with my train of thought here...
 
Let's start with the API.  When I want to add an entry to my blog, I primarily work with the bit that goes inside the Atom:content element.  Using Atom, I would wrap that data into an <entry>, which would also contain all sorts of additional information about the data.  Instead, however, suppose that I just dealt with the data by itself.  For instance, when I create the blog entry, all I do is POST (or PUT) the data.  After I have done this, I cite the entry.  The citation is the Atom document, except that <content> just points to the data instead of having it embedded (as mentioned in the "Alternative <content>?" thread).
 
From an API point-of-view, I don't think this process would be very complicated.  Below is an example transaction for creating an entry:
 
Step 1: create the entry.
------
C: POST /path
   Content-Type: text/x.textile
   
   <data>
 
S: 201
   Location: http://...
   X-Atom-Annocitation: http://...
 
Notes:
1) the request was as simple as it gets.
2) the response gave us the new resource URI and also gave us the URI of a "default" citation document that the server has created.
 
 
Step 2: get the associated citation document.
------
C: GET /atom-citation
   Content-Type: application/x.atom+xml
 
S: 200
   
   <atom xml>
 
 
Step 3: update the citation document.
------
C: PUT /atom-citaion
   Content-Type: application/x.atom+xml
 
    <atom xml>
 
S: 204
 
Notes:
1) it may not be necessary to always do step three.  For instance, when updating the entry, the server will likely automatically update some bits (like timestamps) and the rest will not need changing.  Of course, this partly depends on the extent of citation.
2) also, because the citation is available separately, it would be possible to make changes to that without editing the actual entry.
 
 
For the feed, this is nothing more than making the citations available as a collection.  For that matter, most blogs show these same feeds rendered as HTML.  Since these feeds (in whatever form they take) requires the existance of the citation, it wouldn't matter if the content was posted first because it wouldn't show up for access until the citation was created.
 
For intra-blog linking, it would be possible for SiteA to create a citation document for an entry on SiteB (likely using SiteB's own Atom document as a starting point), then point to that with their own entry (likely within the entries own Atom citation document).  When rendered as HTML, the citation to SiteB's entry would likely be combined with the entry, as we are used to seeing.  However, it would also be possible for an Atom-aware tool to traverse the sites by processing the Atom documents alone.
 
Comment could be provided in a similar way.  A person is given limited ability to create an comment document.  Along with it, a citation document is created that also points to the entry document.  Using this approach, comments could be made against comments.  Intra-blog entries could be made against comments, entries, or both.
 
This approach also has the potential to allow sites to add Atom entries (and therefore feeds) to all sorts of existing documents without having to do anything to the documents themselves.
 
Well, I'm sure you all get the general idea...
 
---
Seairth Jacobs (seairth@xxxxxxxxxxx)
Looking: http://www.seairth.com/blog/65