- From: Graham Klyne <graham.klyne@zoo.ox.ac.uk>
- Date: Sun, 16 Dec 2012 11:10:30 +0000
- To: David Wood <david@3roundstones.com>
- CC: mike amundsen <mamund@yahoo.com>, Erik Wilde <dret@berkeley.edu>, LDP <public-ldp@w3.org>, W3C provenance WG <public-prov-wg@w3.org>
On 10/12/2012 21:07, David Wood wrote: > Hi all, > > It seems to me that this conversation can benefit from a dose of pragmatism. We > know, for example, that RDF Content-Types are not generally shipped by default > in common Web server configuration files and many people (and organizations) use > service providers to host Web content. Therefore we cannot presume that > (individual or corporate) Web server providers can provide correct Content-Type > headers *even if they are knowledgeable and wish to*. > > On the other hand, providers of Web content can and do often provide link tags > to Linked Data within human-readable HTML pages. I'm all for a dose pragmatism here (if it doesn't drive a coach and horses through architectural principles) - that's what's driving my engagement here. With respect to your specific comment, I'm considering a scenario where there's no HTML involved: just pure application-to-application interactions. #g -- > > The discussion at [1] provides a recent example at Manning, a publisher using > Yahoo! Small Business Web Hosting services. > > Regards, > Dave > > [1] http://lists.w3.org/Archives/Public/public-lod/2012Dec/0035.html > > > On Dec 10, 2012, at 13:22, mike amundsen <mamund@yahoo.com > <mailto:mamund@yahoo.com>> wrote: > >> Graham: >> >> <snip> >> 1. It is overloading the notion of media type to have it be the sole >> determinant of interaction; >> </snip> >> "the sole determinant of interaction" intrigues me. tell me about some other >> "determinant[s] of interaction" that are/can be used in Web interactions. >> >> <snip> >> 2. The distinction between "why a client might use a resource" and "how a >> client might interact with a resource" is not (as you also indicate) entirely >> clear cut, making it unsuitable as a dogmatic basis for choosing format over >> link relation for driving an interaction >> </snip> >> "unsuitable as a dogmatic basis " - would it be suitable for a non-dogmatic >> basis? >> As to "choosing format over link relation for driving an interaction", what >> are possible reasons to choose one *over* the other and is choosing just one >> required? >> >> <snip> >> 3. Link relations appear in content as well as in link headers (and other >> protocol-level structures) >> </snip> >> what are the "other protocol-level structures" you refer to here? >> >> <snip> >> 4. Client implementation is much easier if they can use Link headers (or >> equivalent) to choose between available resources, where such choice may >> depend on the client's interaction capabilities.</snip> >> </snip> >> It would seem that HTML runs counter to your claim here. Am I missing something? >> >> Cheers. >> >> mamund >> +1.859.757.1449 >> skype: mca.amundsen >> http://amundsen.com/blog/ >> http://twitter.com/mamund >> https://github.com/mamund >> http://www.linkedin.com/in/mikeamundsen >> >> >> >> On Mon, Dec 10, 2012 at 12:01 PM, Graham Klyne <GK@ninebynine.org >> <mailto:GK@ninebynine.org>> wrote: >> >> Eric, >> >> Thanks for your earlier response. I've been sitting on this for a while, >> to try and better understand where I stand on the points you raise. I've >> just read through highlights of the thread at >> http://lists.w3.org/Archives/__Public/public-ldp/2012Nov/__0007.html >> <http://lists.w3.org/Archives/Public/public-ldp/2012Nov/0007.html> ("LDP >> would benefit from being RESTful"), so this may be the time to continue >> discussion. >> >> TL;DR: >> 1. It is overloading the notion of media type to have it be the sole >> determinant of interaction; >> 2. The distinction between "why a client might use a resource" and "how a >> client might interact with a resource" is not (as you also indicate) >> entirely clear cut, making it unsuitable as a dogmatic basis for choosing >> format over link relation for driving an interaction >> 3. Link relations appear in content as well as in link headers (and other >> protocol-level structures) >> 4. Client implementation is much easier if they can use Link headers (or >> equivalent) to choose between available resources, where such choice may >> depend on the client's interaction capabilities. >> >> This all leads me to to see plenty of upside and no downside in liberal >> use of link relations to guide interactions. >> >> I also think we lack a common or self-describing way for link relations to >> guide interactions. >> >> ... >> >> For reference: >> [1] http://lists.w3.org/Archives/__Public/public-ldp/2012Nov/__0030.html >> <http://lists.w3.org/Archives/Public/public-ldp/2012Nov/0030.html> >> (full message to which I'm responding) >> [2] >> http://www.ietf.org/mail-__archive/web/apps-discuss/__current/msg07893.html <http://www.ietf.org/mail-archive/web/apps-discuss/current/msg07893.html> >> [3] http://lists.w3.org/Archives/__Public/public-ldp/2012Nov/__0024.html >> <http://lists.w3.org/Archives/Public/public-ldp/2012Nov/0024.html> >> [4] http://lists.w3.org/Archives/__Public/public-ldp/2012Nov/__0007.html >> <http://lists.w3.org/Archives/Public/public-ldp/2012Nov/0007.html> (et seq.) >> [5] http://tools.ietf.org/html/__rfc5988 <http://tools.ietf.org/html/rfc5988> >> >> >> On 18/11/2012 21:17, Erik Wilde wrote: >> > from the web/http level, content types are the way to go, that's how the >> > conversational context is set. it would be interesting to see whether >> profiles >> > could be a way out of the hole RDF has dug itself into, and i think that >> this >> > might actually work. >> >> [...] >> >> >> >> If RDF is to be used for a service/home document, other options that >> >> occur to me are: >> >> (a) use a media type parameter on the base RDF MIME type; e.g. >> >> Content-type: application/rdf+xml;type=(api-__home-document) >> > >> > this could be based on the profile concept (which recommends that media >> types >> > with an extension model might want do allow profile parameters). >> >> I originally indicated that I don't favour this, but I might be persuaded. >> Part of my concern is that once you start adding parameters to media >> types, they become more difficult to process, and some client libraries >> might make it harder or impossible to access the information they convey. >> >> >> >> (b) use a different media type linked to RDF (like the +xml family of >> >> media types?) >> >> Content-type: application/api-home-document+__rdf >> >> (This doesn't handle alternative RDF serializations so cleanly) >> > >> > that would be what the current draft does, it defines the >> application/json-home >> > media type. >> >> >> My reading of REST/HATEOAS principles is that it's OK to use a link >> >> >> relation to guide interaction as well as a media type, but I've never >> >> really had any opportunity to discuss this with experts in this area. >> > >> > while this may be a bit fuzzy, typically link rels and media types serve >> > different needs: >> > >> > - a link rel allows a client to understand why it might want to follow >> some link >> > from a resource ("get a picture of the product here"). >> > >> > - a media type then governs the actual interaction, where client and >> server need >> > to agree on how to interact when the client has made the choice to >> engage in the >> > interaction ("here's an image/gif, because you told me you know how to >> handle >> > this media type"). >> >> This is interesting, and what gave me grounds for thought. >> But in the end, I think it's not entirely helpful, especially when dealing >> with RDF. >> >> I have two difficulties: >> >> >> 1. Overloading of media type >> >> (For what follows, I'm assuming that interaction is linked to document >> semantics.) >> >> Depending on media type to define interaction/semantics is overloading the >> original notion of media type, which was: >> [[ >> A Content-Type header field [...] >> which can be used to specify the media type and subtype >> of data in the body of a message and to fully specify >> the native representation (canonical form) of such >> data. >> ]] >> -- http://tools.ietf.org/html/__rfc2045 >> <http://tools.ietf.org/html/rfc2045> (section 1) >> >> Note here the purpose of specifying *representation*, not *interaction* >> (or semantics). >> >> This was fine in the days when data formats tended to correspond 1:1 with >> their semantics. Even with XML, despite there being a common underlying >> lexical and syntactic structure, each document type is really a distinct >> syntax, and it can make sense to treat each as a distinct MIME type (hence >> the +xml convention). >> >> But RDF changes the game quite fundamentally by being an "open world" >> format (or, as Dan Brickley once put it, "missing isn't broken"): there is >> a truly common syntax that carries any or all kinds of data semantics. In >> particular, a document following RDF syntax can combine different >> semantics, by design. So in some cases, one can't claim that a document >> supports or specifies a single interaction, as it may depend on what parts >> of the document one chooses to follow. >> >> So I think that attempting to use a single media type to indicate >> interaction semantics with an RDF document is doomed to be problematic: a >> single document may serve for multiple independent kinds of interaction. >> >> >> 2. "why?" and "how?" >> >> Your description suggests (to me) that: >> - link relations indicate why an application might wish to interact with a >> document >> - the media type covers the "how" >> >> I think this is a useful starting point, but falls short as the whole >> story (partly for reasons above about overloading the media type), but >> also the distinction between why? and how? can be indistinct - client >> capabilities may drive the choice of one resource over another. >> >> A particular problem I'm facing is accessing information for which there >> is a simple REST API and/or a SPARQL endpoint. I think it's reasonable >> (and much easier on the client) to have different link relations for >> these, and then provide supplementary detail in a service description. >> But your response suggests this isn't the right thing to do. If the only >> reason for this is the "why?" and "how?" distinction, then I think that's >> not a good enough reason, especially if it leads to more complex client >> code or delayed detection of inability to interact (which I think it may). >> >> ... >> >> Where does this lead? The starting point for this discussion was a >> question about using RDF or something else for describing a service >> endpoint. Reading the thread about LDP and REST, I find that I disagree >> with your position about RDF not being a suitable form of hypertext for >> driving interactions. More precisely, I do agree with Kingsley Idehen's >> position: >> [[ >> RDF isn't RESTFul at all. It's just a webby entity relationship model >> endowed with explicit entity relationship semantics. Thus, an RDF >> serialization isn't implicitly RESTful. >> >> RDF based Linked Data is RESTful, in the basic sense. >> ]] >> -- http://lists.w3.org/Archives/__Public/public-ldp/2012Nov/__0019.html >> <http://lists.w3.org/Archives/Public/public-ldp/2012Nov/0019.html> >> >> That is, as I see it, RDF alone isn't sufficient to be RESTful (after all, >> it's just a format), but it makes a pretty good basis for hypermedia that >> can drive RESTful application state. What it needs is some vocabulary to >> describe the desired interactions. >> >> And here, I come back to Link relations: as far as I see them, Link: >> headers are (or can be) just another syntax, carried at HTTP protocol >> level, for RDF relations. I would expect a link relation URI to convey >> the same information when used as an RDF property or a Link: header >> relation with the same (subject,object) or (context,target) values >> respectively. Why would anyone choose to do otherwise? >> >> Which all leads me to think that separating link relations from content >> isn't entirely helpful. RFC 5988 may not mention RDF explicitly, but it >> does say: >> [[ >> The Link entity-header field provides a means for serialising one or >> more links in HTTP headers. It is semantically equivalent to the >> <LINK> element in HTML, as well as the atom:link feed-level element >> in Atom [RFC4287]. >> ]] >> -- http://tools.ietf.org/html/__rfc5988#section-5 >> <http://tools.ietf.org/html/rfc5988#section-5> >> >> This establishes the idea that Link: headers are just another way of >> expressing links that are otherwise expressible in content. It seems to >> me to be a small step to include RDF alongside HTML and Atom. >> >> I am seeing here a duality between formats and interactions: formats can >> describe interactions and interactions can process formats. Isn't the >> point of HATEOAS to push as much as possible of interaction description >> into the format? Then, it seems to me, to exclude link relations from a >> role in describing interactions isn't helping. >> >> I offer an alternative perspective on your "Why?"/"How?" separation: >> - Link headers (and other protocol-level link relations) help an >> application to make a choice or selection from available resources to access >> - Media types, along with an understanding of how to interpret the media >> content presented (including any vocabularies used, where applicable), >> tell an application how to interact with a resource. >> >> Typed links (identified by link relation URIs) can appear in both, and may >> variously be used to guide selection and/or direct interactions. >> >> What's missing, it seems, is a self-describing way to associate link >> relations with interactions. >> >> #g >> >> >>
Received on Sunday, 16 December 2012 13:14:17 UTC