Re: PATCH Use Case and Implemented Proposal

On Sep 9, 2013, at 24:12, James Leigh <james@3roundstones.com> wrote:

> On Sun, 2013-09-08 at 19:03 +0100, Andy Seaborne wrote:
>> On 08/09/13 16:37, David Wood wrote:
>> 
>>> On Sep 7, 2013, at 22:39, Sandro Hawke <sandro@w3.org> wrote:
>>>> 
>>>> On 09/07/2013 09:09 PM, David Wood wrote:
>>>>> 
>>>>> 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" }
>> 
> 
> Every term in the subject position must either be a URI or also appear
> at least once in an object position. So the above would not be accepted.
> However, one could modify a resource identified by a hash URI or blank
> node by pattern, so long as the pattern is connected to either the
> target URI or one of its hash URIs explicitly.


Thanks, James.

Andy, a Callimachus template is processed on the server side and binds ?this to the currently requested URI.  In that context, your query would work.  However, issuing a query directly to the REST API that includes ?this does not bind that variable so it won't satisfy the requirement that every subject term is a URI.

It would be possible to implement the processing of ?this into the requested URI at request time, but we haven't done it.

Regards,
Dave
--
http://about.me/david_wood


> 
> In the below example, ?core is never identified explicitly, but instead
> identified by it's radius within the sun.
> 
> INSERT { ?core :density 150 }
> WHERE { <sun> :hasMember ?core . ?core :radius 182 }
> 
> Regards,
> James
> 
>> 
> 
> 
> 

Received on Monday, 9 September 2013 14:52:13 UTC