Re: Current agreement upon named graphs

On Fri, Nov 9, 2012 at 12:20 PM, Richard Cyganiak <richard@cyganiak.de>wrote:

> On 9 Nov 2012, at 15:44, Paul Gearon wrote:
> > The exception to this is for those triples that contain a blank node. In
> that case it may be possible to have equivalent triples in different
> graphs, but not the same triple. What I mean is that the blank nodes will
> be different
>
> That's actually an (incredibly common!) misconception. The same blank node
> may occur in different graphs.
>
> I have myself written W3C Recommendations under the impression that blank
> nodes cannot be shared between graphs, so even being a member of the RDF
> Working Group does not grant immunity against that misconception!
>
> There is nothing in the RDF specs that forbids sharing blank nodes between
> graphs. The misconception is probably caused by confusion between blank
> node *identifiers* in RDF files (which have file scope) and *blank nodes*
> in the abstract syntax (whose scope is not limited by the specs).
>
> SPARQL Update has forced the issue by allowing blank nodes to be copied
> between different slots in a graph store.
>

So this made me look at the formal model, where I see it is indeed this
way. That led me to check through the WG archives. It turns out that I was
aware of this in November of last year. At the time I commented that I
thought it HAD not been like that (blank nodes are unique to graphs), but
that it had subsequently changed (blank nodes may be shared). I don't know
if I was correct in it being the other way at any time, but there was
certainly discussion on it. Andy responded by pointing out that:

"If it's not the same blank node, then

  DELETE { GRAPH <g1> { ?x :p ?v } } WHERE { ?x :p ?v }

will not work for blank nodes."

I recall now that I was very happy with this decision. When the issue was
being discussed I was worried about the implications of having unique nodes
for each graphs, since it would lead to performance problems for
INSERT/WHERE as well as making it very hard to track which blank nodes from
graph A were mapped to blank nodes in graph B if you wanted to perform
inserts from one to the other on more than one occasion.

Sorry for forgetting.

Regards,
Paul

Received on Saturday, 10 November 2012 01:29:43 UTC