- From: Pat Hayes <phayes@ihmc.us>
- Date: Sat, 12 Apr 2008 01:49:20 -0500
- To: Michaeljohn Clement <mj@mjclement.com>, wangxiao@musc.edu
- Cc: "www-tag@w3.org WG" <www-tag@w3.org>, noah_mendelsohn@us.ibm.com, Jonathan Rees <jar@creativecommons.org>, Phil Archer <parcher@icra.org>, "Williams, Stuart (HP Labs, Bristol)" <skw@hp.com>
- Message-Id: <p06230902c425f61e3e79@[192.168.1.2]>
Reading this exchange (below), I think I might be able to make Xiaoshu's case for him. (Xiaoshu, if I have misrepresented you at all, please forgive (and correct) me. But I got to this point from your recent emails (on and off list), so even if Im wrong, you have to bear some of the responsibility :-) The central point is that now that we have the technology and ideas of the semantic web available, we have a wider range of ways of representing, and a richer notion of what words like ''metadata" mean. If we are willing to take fuller advantage of this new richness, we make available new ways to do semantic things within the same overall design of the pre-semantic web. In particular, awww:represents is a very narrow sense of 'represents'. Perhpas we can allow a wider sense of representation here. The REST story was always that URIs identify resources, and that the http response is a representation of the resource. Nobody has ever been able to say what exactly counts as a 'resource'. We already have accepted the idea that a given resource may have many awww:representations, to be resolved by content negotiation. Now, take that story exactly as expressed, but let the word 'identify' mean simply denote or name, and allow that the resource can be something entirely unconnected to the Internet (such as, say, me), and allow 'representation' to include not just the awww:representation relationship between a byte stream and something like an html web page, but more generally any kind of representation of a thing, so that an image of me can be a representation of me, and an RDF description can be another representation of me, and my home page can be yet another representation of me - remember, here the resource in question is me, not some information resource. So, what follows from this vision? Well, it means that your insistence that the RDF and a JPEG image must be different resources is misplaced. Not that its false, but it misses the point. Their role here is not as resources, but as representations. And seen in this light, it seems quite natural that one might use conneg to decide which of them is most appropriate. Now, of course, this is not how 'representation' has traditionally been used in Webarch discussions. It is not awww:representation. But it is a perfectly good usage of the word 'representation': in fact, somewhat better than the traditional webarch sense, which is so special and peculiar as to almost be a distortion. It requires us to generalize the 'classical' webarch story to allow a broader sense of 'representation' and a broader sense of 'resource' and a broader sense of 'identify'. And I think Xiaoshu's main point is, let us try doing that, indeed, and see what happens; and in fact, one gets a coherent, rational story about how Web architecture should work. It isn't the REST model any more: it generalizes it to include a much wider range of possibilities. (We might call it REST++.) It is a Web much more infused with semantics and descriptions than the current Web, one which uses its own formalisms (RDF) more architecturally than the current Web. In this vision, the semantic Web isn't simply an application layer built on top of the pre-semantic Web, but instead is something more like an architectural generalization of the pre-semantic Web, with semantic technology built into its very architecture all the way down. So, here's a typical Web transaction. A URI U identifies a resource R, and when U is given to http, the Web delivers a representation S of R. Typical classical case: R is a website (or a webpage or a server or an http endpoint, or... but anyway, its something Internettish), U+http is a route to R and S is a awww:representation of R, which is typically a byte-for-byte copy of a file which comprises the bulk of R. Alternative case using the more general senses: R is me, U denotes R and S is an RDF graph describing R, using FOAF. Describing is one way of representing. Another alternative sense: R is me, U denotes R and S is a JPEG image of R. Picturing is another way of representing. Now, these representations aren't awww:representations of me, of course; but they couldn't possibly be, since I'm not the kind of thing that can possibly have an awww:representation. So if we want to run the classical story with things like me - non-information resources - as R, then we must generalize the classical notion of 'representation'. What these alternative cases have in common, and where they both differ from the traditional one, is that the Web 'thing' that is located by U+http and which returns the representation S simply isn't mentioned. Its not part of the story at all: it's not the resource, S doesn't represent it, and its not what the URI identifies/denotes. Its just part of the Web machinery, a computational thing whose task is to transmit S when requested to do so. It has a relationship to R, of course, but rather an indirect one: it is a thing that delivers representations of R, using http. We might call it a storyteller for R. R might have a whole lot of storytellers, each capable of telling different kinds of story about R. The classical case is where R is its own storyteller. This is different from the classical REST/webarch story, indeed: but then, as soon as we allow URIs to identify things that can't be accessed by transmission protocols, the classical story stopped working. We have to broaden our horizons. But notice that it follows the same basic description as the classical story, just using the terminology more broadly. In this view, then, content negotiation is a much wider topic than it has traditionally been. We are dealing with a much wider notion of what a 'resource' is, and a much wider notion of what a 'representation' is. Some resources have all kinds of possible representations. So yes, we have to be prepared to go beyond 'accepted and expected usage'. Who would have thought otherwise? Pat At 7:31 PM -0600 4/11/08, Michaeljohn Clement wrote: >Xiaoshu Wang wrote: >>>> We agree that there are legacy data, yes? Let's make its URI x, whose >>>> owner is Joe. >>>> Case 1. Joe is lazy. >>>> Then, no LINK, no Conneg. Is this fair? >>>> Case 2: Joe is not lazy. >>>> (a) Joe makes LINK(x)=metadata. >>>> (b) Joes make Conneg(x)=metadata (can easily GET x Accept >>>> application/rdf+xml). >>> >>> (b) would be wrong, because the metadata is not an alternative variant >>> of the resource identified by x. >>> >> Why wrong? First define metadata? Say _:x _:b _:y. Is this assertion >> metadata of _:x or _:b or _:y? You assume it is wrong because of an >> arbitrary definition of metadata. > >I object on the basis of my sense of what conneg is for. I don't believe >my definition of "metadata" is relevant. > >Let's stipulate that GET x, for the "x" in your example, returns a PNG >image, and that the metadata in question is some statements about that >image, expressed in RDF. > >Would you not agree that the RDF represents a different resource from >the image? > >Content negotiation would be an appropriate way to serve an alternative >JPEG representation of the same resource, but to return a different >resource would be contrary to accepted and expected usage. > >> In your proposal, any RDF >> transformation is the metadata of an HTML, they should be put in LINK too. > >I'm not proposing that. I am simply suggesting not to use conneg except >to negotiate between different representations of the same resource. > >>> Surely there may be more than one application/rdf+xml resource that >>> might be associated in some way with the resource identified by x, >>> right? It's impossible to distinguish between these by using conneg. >>> >> This is the reason. Perhaps it is not I who have failed to understand >> the <LINK> problem, it is you who have failed to understand Conneg. > >I don't follow your argument here, perhaps you could restate it in >more concrete terms. > >>> If the only purpose of the Link: header would be the same as the >>> purpose of the HTML <link rel=alternate>, then surely (b) would be >>> more relevant, but the Link: header can express other relations as is >>> being discussed here, viz "describedBy". >>> >>> The only way (b) can be correct here is if the result of a GET with >>> Accept: application/rdf+xml is actually just a variant representation >>> of the same resource. >>> >> What do you mean *just* a variant? > >By "just a variant representation of the same resource", I mean >specifically something that is not a representation of a completely >different resource. > >> All representations bound to the >> resource 'x' identifies x. > >They /represent/ x, I'm not sure what you mean by saying that they >"identify" x. > >> It may be of different format, different >> language, but they are all talking about the same resource - that is >> what matters. > >Unless the server is misconfigured, they are all representations of >the same resource. > >That's why I don't understand why you think that conneg can solve the >problem that the Link: header can solve, namely the association in an >HTTP response message of a *different* resource with the one that has >been accessed. > >Michaeljohn -- --------------------------------------------------------------------- IHMC (850)434 8903 or (650)494 3973 home 40 South Alcaniz St. (850)202 4416 office Pensacola (850)202 4440 fax FL 32502 (850)291 0667 cell http://www.ihmc.us/users/phayes phayesAT-SIGNihmc.us http://www.flickr.com/pathayes/collections
Received on Saturday, 12 April 2008 06:49:59 UTC