On Mon, May 16, 2011 at 11:33:55AM +0100, Alistair Miles wrote:
> One thought that does occur, as something you could deploy without having to 
> get 
> into debates about media type parameters, perhaps you could invent a new link 
> relation like "atom-content" as you suggest, and use it in a link template 
> which 
> tells a client how to request a variant representation of a feed with a given 
> inline content type. E.g., something like...
> 
> <link-template rel="alternate-content" 
> href="http://example.org/foo?inlinecontenttype={inlinecontenttype}"/>

On reflection, I don't think the link template idea above is a good solution, 
because the client has no way of finding out what inline content types are 
available.

I wonder if a better solution would be to invent three new pieces of machinery:

* a new @inline-type extension attribute for use on atom:link elements

* a new Accept-Inline HTTP header

* a new <accept-inline> element for use within app:collection elements in Atom 
service documents

So, to satisfy your use case, you could publish an Atom feed with links like...

<feed xmlns="http://www.w3.org/2005/Atom";>
  <link rel="alternate" type="application/atom+xml;type=feed" 
inline-type="text/html" href="..."/>
  <link rel="alternate" type="application/atom+xml;type=feed" 
inline-type="application/json" href="..."/>
  <link rel="alternate" type="application/atom+xml;type=feed" 
inline-type="application/rdf+xml" href="..."/>
  ...
</feed>

Also, clients and servers could negotiate about the inline content type when 
making GET requests, e.g, ...

GET /foo
Host: example.org
Accept: application/atom+xml
Accept-Inline: application/rdf+xml

200 OK
Content-Type: application/atom+xml;type=feed
  
<feed xmlns="http://www.w3.org/2005/Atom";>
  <link rel="alternate" type="application/atom+xml;type=feed" 
inline-type="text/html" href="..."/>
  <link rel="alternate" type="application/atom+xml;type=feed" 
inline-type="application/json" href="..."/>
  <link rel="alternate" type="application/atom+xml;type=feed" 
inline-type="application/rdf+xml" href="..."/>
  ...
  <entry>
    <content type="application/rdf+xml">
      <rdf:RDF ...>
      </rdf:RDF>
    </content>
    ...
  <entry>
  ...
</feed>

Also, for editable collections, an Atom server could advertise its intention to 
only accept Atom entries with a particular inline content type within the 
service document, e.g.:

<app:service>
  ...
  <app:workspace>
    <app:collection href="http://example.org/foo";>
      <app:accept>application/atom+xml;type=entry</app:accept>
      <x:accept-inline>application/rdf+xml</x:accept-inline>
    </app:collection>
  </app:workspace>
</app:service>

Just a thought.

Cheers,

Alistair

> 
> ...just a thought, this has probably occurred to you already.
> 
> Cheers,
> 
> Alistair
> 
> On Mon, May 16, 2011 at 10:22:25AM +0100, Alistair Miles wrote:
> > Hi Erik,
> > 
> > On Thu, Apr 28, 2011 at 05:31:10PM -0700, Erik Wilde wrote:
> > > 
> > > hello.
> > > 
> > > on http://dret.typepad.com/dretblog/2011/04/atom-content-negotiation.html
> > > i have posted some thoughts on whether there should eb a way how to
> > > differentiate between "feed variants", so that publishers could link
> > > the HTML feed to the XML feed. any feedback would be very welcome,
> > > both encouraging and critical. commenting on the blog might be
> > > better visible, and i will take the freedom to link back from the
> > > blog to the mailing archive if there are interesting follow-up
> > > mails, unless you don't want me to do so.
> > 
> > Why not just use <atom:link rel='alternate' href='...'/> at both the feed 
> > and 
> > entry levels? 
> > 
> > In our data repository systems (based on AtomPub), both collections and 
> > collection members are content negotiable resources. I.e., you can retrieve 
> > an 
> > Atom, HTML or JSON representation, by specifying different preferences in 
> > the 
> > Accept request header. In addition to this content negotiation at the 
> > collection 
> > or member URI, each variant representation also has a URI, and links are 
> > provided in entry and feed representations to all variant representations 
> > via 
> > the 'alternate' link relation.
> > 
> > E.g., 
> > 
> > GET /foo
> > Host: example.org
> > Accept: application/atom+xml
> > 
> > 200 OK
> > Content-Type: application/atom+xml;type=feed
> > Content-Location: http://example.org/foo?format=atom
> > Vary: Accept 
> > 
> > <atom:feed xmlns:atom="http://www.w3.org/2005/Atom";>
> >   <atom:link rel="self" href="http://example.org/foo"/>
> >   <atom:link rel="alternate" type="text/html" 
> > href="http://example.org/foo?format=html"/>
> >   <atom:link rel="alternate" type="application/json" 
> > href="http://example.org/foo?format=json"/>
> >   ...
> >   <atom:entry>
> >     <atom:link rel="edit" href="http://example.org/foo/bar"/>
> >     <atom:link rel="alternate" type="text/html" 
> > href="http://example.org/foo/bar?format=html"/>
> >     <atom:link rel="alternate" type="application/json" 
> > href="http://example.org/foo/bar?format=json"/>
> >     ...
> >   </atom:entry>
> > </atom:feed>
> > 
> > FWIW, this is implemented using a generic content negotiation plugin for 
> > AtomBeat [1], sorry no documentation as yet.
> > 
> > Cheers,
> > 
> > Alistair
> > 
> > [1] 
> > http://code.google.com/p/atombeat/wiki/ReleaseNotes#configurable_conneg_plugin
> >  
> > 
> > > 
> > > thanks and kind regards,
> > > 
> > > dret.
> > > 
> > > -- 
> > > erik wilde | mailto:[email protected]  -  tel:+1-510-6432253 |
> > >            | UC Berkeley  -  School of Information (ISchool) |
> > >            | http://dret.net/netdret http://twitter.com/dret |
> > > 
> > 
> > -- 
> > Alistair Miles
> > Head of Epidemiological Informatics
> > Centre for Genomics and Global Health <http://cggh.org>
> > The Wellcome Trust Centre for Human Genetics
> > Roosevelt Drive
> > Oxford
> > OX3 7BN
> > United Kingdom
> > Web: http://purl.org/net/aliman
> > Email: [email protected]
> > Tel: +44 (0)1865 287669
> 
> -- 
> Alistair Miles
> Head of Epidemiological Informatics
> Centre for Genomics and Global Health <http://cggh.org>
> The Wellcome Trust Centre for Human Genetics
> Roosevelt Drive
> Oxford
> OX3 7BN
> United Kingdom
> Web: http://purl.org/net/aliman
> Email: [email protected]
> Tel: +44 (0)1865 287669

-- 
Alistair Miles
Head of Epidemiological Informatics
Centre for Genomics and Global Health <http://cggh.org>
The Wellcome Trust Centre for Human Genetics
Roosevelt Drive
Oxford
OX3 7BN
United Kingdom
Web: http://purl.org/net/aliman
Email: [email protected]
Tel: +44 (0)1865 287669

Reply via email to