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

Re: INSERT/DELETE Update syntax

From: Steve Harris <steve.harris@garlik.com>
Date: Fri, 9 Oct 2009 09:26:10 +0100
Cc: "public-rdf-dawg@w3.org Group" <public-rdf-dawg@w3.org>
Message-Id: <B1BA48A6-2FF4-4415-9A3D-6A483C7BD803@garlik.com>
To: Ivan Mikhailov <imikhailov@openlinksw.com>
On 8 Oct 2009, at 22:09, Ivan Mikhailov wrote:

> Steve,
>
> I like your idea, despite that we've implemented INSERT INTO <uri>
> syntax already.
>
> My reasons are
> 1) it makes construction templates more similar to patterns
> 2) Why not permit CONSTRUCT { GRAPH <uri> ... } then to make NQuads/ 
> TriG
> at the output ? :)

That one's a little tricky, there's no syntax in the W3C standards  
track (that I know of) which can represent quads/graphs. It would be  
convenient though, doing:

CONSTRUCT { GRAPH ?g { ?s ?p ?o } }
WHERE { GRAPH ?g { ?s ?p ?o } }

Would be a very handy dump of all the named graphs, which currently  
requires a loop over all the graphs in the application layer, so is  
quite inefficient.

> 3) With federation, it may become INSERT { SERVICE <endpoint-uri>
> { ... } } in a natural way
> 4) I can write INSERT { GRAPH `expression-for-iri` { ... }}

Those are very good points that I hadn't considered.

> So I'd vote for support of both syntax variants.
>
> In addition, I'd like to keep INSERT DATA for statements without WHERE
> clause and probably without any expressions, static data only. This  
> will
> permit the use of very long INSERT DATA statements without the use of
> the optimizing compiler (even without the complete parsing of the  
> whole
> statement before first triple is inserted)

Oh, sorry, I think I misused the INSERT syntax. But yes, that's a good  
idea.

- Steve

> On Thu, 2009-10-08 at 13:17 +0100, Steve Harris wrote:
>> Reflecting on the update syntax I'm just wondering why the syntax
>> looks like:
>>
>> INSERT DATA INTO <uri> {
>>   ... some triples ...
>> }
>>
>> rather than:
>>
>> INSERT {
>>    GRAPH <uri> { ... some triples ... }
>> }
>>
>> which seems like a more obvious parallel to SPARQL 1.0, and allows
>> inserts to multiple graphs in a single insert block, with GRAPH you
>> would be able to write:
>>
>> INSERT {
>>    GRAPH <uri1> { <x> <y> ?a }
>>    GRAPH <uri2> { <a> <b> ?b }
>> }
>> WHERE {
>>    ?a <foo> ?b
>> }
>>
>> which would be less verbose than using the draft syntax, and arguably
>> easier to understand. c.f.
>>
>> INSERT DATA INTO <uri1> {
>>    <x> <y> ?a
>> }
>> WHERE {
>>    ?a <foo> ?b
>> }
>> INSERT DATA INTO <uri2> {
>>    <a> <b> ?b
>> }
>> WHERE {
>>    ?a <foo> ?b
>> }
>>
>> - Steve
>>
>

-- 
Steve Harris
Garlik Limited, 2 Sheen Road, Richmond, TW9 1AE, UK
+44(0)20 8973 2465  http://www.garlik.com/
Registered in England and Wales 535 7233 VAT # 849 0517 11
Registered office: Thames House, Portsmouth Road, Esher, Surrey, KT10  
9AD
Received on Friday, 9 October 2009 08:26:43 GMT

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