- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Fri, 9 Oct 2009 17:14:53 +0000
- To: Steve Harris <steve.harris@garlik.com>
- CC: "public-rdf-dawg@w3.org Group" <public-rdf-dawg@w3.org>
> -----Original Message-----
> From: Steve Harris [mailto:steve.harris@garlik.com]
> Sent: 09 October 2009 17:35
> To: Seaborne, Andy
> Cc: public-rdf-dawg@w3.org Group
> Subject: Re: INSERT/DELETE Update syntax
>
> On 9 Oct 2009, at 16:46, Seaborne, Andy wrote:
>
[snip]
> >> INSERT {
> >> GRAPH <uri1> { <x> <y> ?a }
> >> GRAPH <uri2> { <a> <b> ?b }
> >> }
> >> WHERE {
> >> ?a <foo> ?b
> >> }
> >
> > If ?a is a bnode, what happens? :-)
>
> An obvious option is the same rules as per CONSTRUCT. { ?a <foo> ?b }
> can only match triples from the default graph. I don't remember if
> SPARQL says that it's legal for bNodes to exist in more than one
> graph.
I don't think RDF says whether bNodes can exist across graphs. It doesn't say anything across graphs.
> 4store typically treats the default graph as the union of the
> named graphs, but I've never been quite convinced that that is legal
> per the spec.
?? I thought we'd agreed it was. Several systems do it. And IIRC the spec was specifically worded to allow it, as well as when it's not a union.
I was wondering what your proposal was for the
"GRAPH <uri1> { <x> <y> ?a }" part.
>
> The slightly trickier case is:
>
> INSERT {
> GRAPH <uri1> { <x> <y> ?a }
> GRAPH <uri2> { <a> <b> ?b }
> }
> WHERE {
> GRAPH <uri1> { ?a <foo> ?b }
> }
>
> > I suggest that both renaming bnode labels, and choosing not to, are
> > legal.
>
> Hm, I'm not sure about that. It depends whether INSERT is defined as a
> merge, or a union.
Don’t quite follow. A graph is a set of triples.
>
> Are you proposing leaving it up to the query processor?
Whether it is the same bNode (label) in graph <uri1> and default graph? Yes.
Useful if the bNode (label) is already in graph <uri1> because different INSERT or DELETE operations in the same request can update the same bNode resource.
> >> INSERT {
> >> GRAPH <uri1> { <x> <y> ?a }
> >> GRAPH <uri2> { <a> <b> ?b }
> >> }
> >> WHERE {
> >> ?a <foo> ?b
> >> }
>
> - Steve
Andy
Received on Friday, 9 October 2009 17:15:29 UTC