W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > July to September 2009

Re: IBM Graph Update Protocol document

From: Simon K Johnston <skjohn@us.ibm.com>
Date: Tue, 14 Jul 2009 13:24:35 -0400
To: "Kjetil Kjernsmo" <Kjetil.Kjernsmo@computas.com>
Cc: public-rdf-dawg@w3.org
Message-ID: <OF50C55927.530659A0-ON852575F3.0046071C-852575F3.005FA25E@us.ibm.com>
Kjetil, thanks for the review, as I had to do some changes in layout and 
formatting I think a few cut and paste errors such as the {graph-store} 
crept in; you are correct in GET, PUT, PATCH, DELETE the {graph-uri} 
should be used and not {graph-store}.

On the first issue:

Our general feeling was that the URI generated by the server is an 
identify for the storage form of the graph, and will often be related to, 
but not the same as the URI for the graph itself. So, we would expect that 
the server base URI would often be different from the base URI of the 
graphs being posted. Thus, the Graph: header is expected to be a URI that 
corresponds to original, and the server can then create URIs of the form:

http://graphs.example.com/graph/http://example.org/data/graph1.rdf
or
http://graphs.example.com/graph?uri=http://example.org/data/graph1.rdf

where the values are suitable URL encoded.

On the second:
The PATCH verb was include in the original 1.0 HTTP specification and 
removed from the 1.1 update with the wording:

   "The PATCH, LINK, UNLINK methods were defined but not commonly
    implemented in previous versions of this specification"

There is plenty of lively debate on PATCH in various communities, I am 
happy to remove this (it is optional), but it would give us no 
reasonable/easy way to specify the update rather than wholesale 
replacement of a graph.

As for the proposed Graph header, it doesn't seem unreasonable for an 
"application-level protocol" (the term used in RFC5023, the Atom 
Publishing Protocol) to add new headers and in fact APP adds the Slug: 
header, which effectively our Graph: header replaces. The alternative is 
to only allow POST to generate identifiers itself and not allow the client 
any control over the generated URI which I think is problematic. 

Thanks,

Simon K. Johnston (skjohn@us.ibm.com) - STSM, Jazz Foundation Services
Mobile: +1 (919) 200-9973
Office: +1 (919) 595-0786 (tie-line: 268-6838)
Blog: http://www.ibm.com/developerworks/blogs/page/johnston 




From:
"Kjetil Kjernsmo" <Kjetil.Kjernsmo@computas.com>
To:
Simon K Johnston/Redmond/IBM@IBMUS, <public-rdf-dawg@w3.org>
Date:
07/14/2009 08:09 AM
Subject:
Re: IBM Graph Update Protocol document


Hi Simon, All,

I think this is a very interesting proposal. I have a few comments.

First, in both replace graph and delete graph, the text says that the 
request should be made against the {graph-store} URI. Is this correct? 
Shouldn't it be the {graph-uri}? It seems to be the latter in the list 
earlier in the document and the following examples, and it seems to be the 
right thing.

I see two main issues with respect to the proposals that have been 
circulating around here.

The largest issue is whether it should be possible to manipulate graphs 
that has a graph-URI which is not dereferenceable on the host of the 
SPARQL endpoint, i.e. if the endpoint is http://example.org/sparql should 
it be possible to manipulate a graph with the URI 
http://graphs.example.com/graph/dahut ?
As far as I can see from your proposal, it would be possible to insert 
such a graph by using the Graph header, but no further manipulation would 
be possible. Is that correct?

This issue seems to be where Simon Schenk and I went in diametrically 
different directions; I feel that manipulating those graphs should be 
time-permitting only, whereas Simon felt we should do only that and that 
the case where the graph-uri can be manipulated directly is not very 
interesting. I suppose he is on vacation and cannot correct me if I 
misrepresent his opinions, if I do it is unintentional.

The other issue you bring to the table, which is new I believe, is the 
PATCH HTTP verb. This never made it into HTTP, did it? I think the ideas 
that have circulated around here is that PUT will insert a graph if it 
doesn't exist and replace if it does. POST will insert if the graph 
doesn't exist, and update if it does.

I think the ideas expressed in your document is well aligned with what the 
group has been discussing previously, except for this, so I'd like to 
bring that to the surface: Do people want to standardise a Graph header 
and a PATCH verb as extensions to HTTP?

I hope that we can reach a consensus very soon on whether we should only 
manipulate graph URIs that can be dereferenced. The other details can be 
dealt with later, but I think it is an interesting topic.

Best,

Kjetil
Received on Tuesday, 14 July 2009 17:25:30 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:15:39 GMT