again with TurtlePatch

I thought a little more and cleaned up TurtlePatch in a couple ways.

1.  I realized allowing single-use blank nodes in the DELETE clause 
gives us the wildcard functionality I really want, so I can say:

   PREFIX x: <something...>
   DELETE DATA {
        x:me x:name []
   }
   INSERT DATA {
        x:me x:name "John Smith"
   }

That is, I can set a value without needing to know the old value.

2.  People didn't like how I used Con-Neg for requesting Skolemization, 
so I changed it to a Prefer header, "blank-nodes=use-genid".   I think 
this makes more sense in a lot of ways.

Reminder about the advantages of TurtlePatch

1.  Can be fed directly to any SPARQL 1.1 Update processor, and 
understood by anyone who knows SPARQL.
2.  Also easy to understand and implement, if you don't do SPARQL.
3.  Semantics already specified by SPARQL, and simple
4.  Worse case performance is linear in the size of the patch (plus the 
number of triples deleted if you're using wildcards)
5.  Could be trivially extended to handle Dataset patches by not 
forbidding the GRAPH keyword

I know the WG didn't like the genid trick, but for every application I 
think of, this looks like a really nice approach.

https://www.w3.org/2001/sw/wiki/TurtlePatch

        -- Sandro

Received on Sunday, 27 July 2014 15:12:40 UTC