- From: Paul Gearon <gearon@ieee.org>
- Date: Fri, 9 Nov 2012 20:29:14 -0500
- To: Richard Cyganiak <richard@cyganiak.de>
- Cc: Olivier Rossel <olivier.rossel@gmail.com>, Semantic Web <semantic-web@w3.org>, "public-lod@w3.org" <public-lod@w3.org>
- Message-ID: <CAGZNPFnX=GSKu8Z4AvOVhAYYFyYN5C-CvYaF_bmTCkCz6=1B_g@mail.gmail.com>
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