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
