- From: Andy Seaborne <andy@apache.org>
- Date: Sun, 08 Sep 2013 19:03:34 +0100
- To: public-ldp-patch@w3.org
- Message-ID: <522CBBF6.40309@apache.org>
On 08/09/13 16:37, David Wood wrote: > On Sep 7, 2013, at 22:39, Sandro Hawke <sandro@w3.org > <mailto:sandro@w3.org>> wrote: > >> Thanks for something so concrete, Dave. For myself, much of the >> challenge here is that I've not had time to implement, so it remains >> too abstract. Some questions and thoughts, inline.... >> >> On 09/07/2013 09:09 PM, David Wood wrote: >>> Hi all, >>> >>> The need for a PATCH format for LDP was brought up again in last >>> week's meeting with TimBL [1]. To summarize briefly, Tim made the >>> point that LDP has no generic way to update data without a PATCH >>> format and Arnaud said that the WG wanted one but hadn't yet been >>> able to define it. Arnaud called for a halt on PATCH formats in May [2] >>> >>> The two main approaches would seem to be Andy's proposal [3] which >>> uses basic triple patterns to define what to add or remove from a >>> store and Sandro's TurtlePatch [4]. >>> >> >> I also did a Trig-based patch format, DataPatch: >> http://www.w3.org/People/Sandro/datapatch but like TurtlePatch I >> haven't actually been pushing it. But it was going the direction the >> WG said it wanted to go, using TriG. >> >>> This message suggests a third approach based on a strictly defined >>> subset of SPARQL Update >> >> Isn't that exactly what TurtlePatch was? > > > Yep, sloppy phrasing. Sorry. > > >> True, your subset is somewhat.. >> >>> . Our approach is already implemented in the (Apache 2 licensed) >>> Callimachus Project [5] and documented later in this message. Henry >>> has already mentioned that a subset of SPARQL Update could work [6] >>> for the WG's purposes. >>> >>> A strict subset of SPARQL Update is used in the Callimachus >>> implementation to support the following constructs in a >>> PATCH request. However, each clause can only contain zero or more >>> basic graph patterns and only the default graph can be used. >>> * DELETE DATA >>> * INSERT DATA >>> * DELETE WHERE >>> * INSERT WHERE >>> * DELETE INSERT WHERE >>> >>> Callimachus further restricts the SPARQL Update spec such that all >>> nodes are connected and all URIs, in the subject position, before a >>> '#' (if present), are the same. >>> >> >> What's the reasoning behind this? I've always assumed that a basic >> requirement of Patch was that it be able to patch any RDF graph to >> any other RDF graph (given enough computing resources). Is there >> some other requirement that necessitates this restriction? > > > It seems obvious to me that in the context of a REST API you don't > want to be able to allow the addressing of one resource to be be able > to be used to update another. So, security and the making of > intention concrete are good reasons. Another is that this approach is > easier to validate against the target URI. That makes sense for LDP. Does the format allow finding that resource by pattern, not just with a URI? INSERT { ?this : 123 } WHERE { ?this :InverseFunctionalProperty "key" } > > Regards, > Dave > -- > http://about.me/david_wood > >
Received on Sunday, 8 September 2013 18:04:03 UTC