- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Wed, 15 Jul 2009 17:06:35 +0000
- To: Kjetil Kjernsmo <Kjetil.Kjernsmo@computas.com>, "public-rdf-dawg@w3.org" <public-rdf-dawg@w3.org>
> -----Original Message----- > From: public-rdf-dawg-request@w3.org [mailto:public-rdf-dawg- > request@w3.org] On Behalf Of Kjetil Kjernsmo > Sent: 15 July 2009 11:06 > To: public-rdf-dawg@w3.org > Subject: ACTION-56: RESTful HTTP protocol Updates > > > All, > > > I took an action to summarize the options that are on the table for > RESTful HTTP protocol updates, > http://www.w3.org/2009/sparql/track/actions/56 > and this email is in response to that action. > > I have found it convenient to divide into four options, and I propose to a > strawman poll on each, whether you think it should be > required, time-permitting, don't care or don't want. Overall: let's be clearer where we are just using existing web mechanisms (PUT {graph-uri}) as is and where there is SPARQL-specific update protocol going on. > These are the four options: > > I. Simple HTTP verbs only > > I believe this is the simplest case, just the familiar HTTP verbs to > manipulate graphs where you are priviliged to act on the graph name URI. > In this proposal, we can take the following as a starting point, taking > {graph-uri} as a meta-syntactic variable denoting the URI of the graph. > > POST {graph-uri} > will insert the triples in the message into the {graph-uri} if it does not > exist, if it exists it will add the triples of the message to the graph > > PUT {graph-uri} > will insert the triples in the message into the {graph-uri} if it does not > exist, and replace the graph if it does. > > DELETE {graph-uri} > will drop the graph identified by the {graph-uri}. > > GET {graph-uri} > will return all triples of the graph. > For PUT/DELETE/GET, these are just the normal meanings applied to web resources so we should be clear we are merely documenting normal usage. For POST, it is a specific meaning as POST is used for all sorts or things. "required" for POST {graph-uri} being an accumulation of the triples. > II. Add a graph parameter > > I tried to draw the line on when this is needed in > http://lists.w3.org/Archives/Public/public-rdf-dawg/2009JulSep/0059.html > The short story is that when the client can't be authorized to manipulate > the {graph-uri}, one should be able to provide it to the endpoint to be > able to manipulate the graph using the HTTP verbs above anyway. > This can be done by encoding it in the Request-URI or a header. Having been back over the email trail, I not sure I understand this formulation properly - I see it as a graph store having a named graph which does not derive from the store URI. So the graph in the store is a copy of the graph at {graph-uri} because there may well be a graph at {graph-uri} in the usual way. The test is that if you change the store one, the other will not change, and vice versa. Use cases: store graph under URI <http://example/foo> in graph store <http://myhost/store/> upload this local data under URI <http://example/foo> in graph store <http://myhost/store/> "time-permitting" Because I think we need to engage in a wider discussion than just the WG e.g. use of "Graph:" so time is an important factor. > > III. Deal with round-trip concurrency issues > > The IBM proposal, below, raises the question and proposes a solution to > the problem that a client may GET a graph, and then another client > modifies the content of the graph before first client has the chance to > PUT or POST modified content back to the graph, possibly creating a mess. > We should decide if this a problem we want to address. This is HTTP 1.1 usage of "ETag:"/"If-Match:". The issue I see is whether they are mandated by this WG or not where the operations are the SPARQL update protocol (e.g. case II). I don't want to mandate their use because it's not going to mandated elsewhere. Documenting the use of ETags as a concurrency mechanism as a jolly good idea would be best. > > IV. Adopt the IBM proposal as starting point. > > The IBM proposal, > http://lists.w3.org/Archives/Public/public-rdf-dawg/2009JulSep/att- > 0040/SPARQL-UProtocol-20090707.html > addresses all of the above, although it is not very clear about II. It > also introduces a HTTP PATCH verb (which is in HTTP 1.0, not 1.1) and a > Graph HTTP header to allow more flexible naming of graphs. > Thus, the fourth option is to adopt the IBM proposal as it is as a > starting point for the WG. I don’t want to get into the PATCH issues and I think we need to more widely consult when considering a Graph HTTP header (it's not a purely SPARQL issue). There is an issue around how easily client-side frameworks make it to modify the HTTP header (you can't from an HTML form, for example, as far as I know). It's not all curl and wget. But having a strawman as starting point and an issues list against that strawman is good way to go. +1: adopt. > > Best Regards, > > Kjetil Andy
Received on Wednesday, 15 July 2009 17:08:24 UTC