W3C home > Mailing lists > Public > public-linked-json@w3.org > January 2017

Re: scope of blank node identifiers and multiple graphs

From: Gregg Kellogg <gregg@greggkellogg.com>
Date: Mon, 30 Jan 2017 10:50:35 -0800
Cc: Andy Seaborne <andy@seaborne.org>, public-linked-json@w3.org
Message-Id: <E53329EF-A173-4259-BF78-488C7D08F73A@greggkellogg.com>
To: François-Paul Servant <francoispaulservant@gmail.com>
Blank node scope to the document is true in TriG as well. There are tests for JSON-LD to ensure that nodes identified by the same label within a document identify the same node.

Problems come when people (ahem ... Common Crawl) combine multiple documents (merge datasets) and don't ensure proper bnode scope. 

Gregg Kellogg
Sent from my iPhone

> On Jan 30, 2017, at 10:36 AM, François-Paul Servant <francoispaulservant@gmail.com> wrote:
> 
> Hi Andy,
> 
>> One document parses to produce one RDF dataset and the blank node should be the same where the same identifier is used.
> 
> damned, I thought that the scope of a blank node is the graph, not the dataset (so, I didn’t think it were possible to have the same blank node in 2 graphs). I now have to think about it. And maybe, get back to you on jeva-dev list.
> 
> Thanks
> 
> fps
> 
>> Le 30 janv. 2017 à 18:27, Andy Seaborne <andy@seaborne.org> a écrit :
>> 
>> 
>>> On 30/01/17 16:51, François-Paul Servant wrote:
>>> Hi,
>>> 
>>> the spec
>>> https://www.w3.org/TR/json-ld/#identifying-blank-nodes
>>> says that
>>> "The blank node identifier is scoped to the document in which it is used.”
>>> 
>>> What happens when the same blank node identifier is used within 2 different graphs? There seems to be a conflict (or an ambiguity) with the usual interpretation of blank nodes identifiers in RDF.
>>> 
>>> Here is a test in the playground (2 blank nodes with same identifier _:b0 in different graphs)
>>> 
>>> http://json-ld.org/playground/#startTab=tab-normalized&json-ld=%7B%22%40graph%22%3A%5B%7B%22%40id%22%3A%22_%3Ab0%22%2C%22label%22%3A%22label%20of%20anon%20res%20in%20default%20graph%22%7D%2C%7B%22%40graph%22%3A%5B%7B%22%40id%22%3A%22_%3Ab0%22%2C%22label%22%3A%22label%20of%20anon%20res%20in%20graph%202%22%7D%2C%7B%22%40id%22%3A%22http%3A%2F%2Fex.com%2Fs2%22%2C%22p%3A2%22%3A%7B%22%40id%22%3A%22_%3Ab0%22%7D%7D%5D%2C%22%40id%22%3A%22http%3A%2F%2Fex.com%2Fg2%22%7D%2C%7B%22%40id%22%3A%22http%3A%2F%2Fex.com%2Fs%22%2C%22p%22%3A%22_%3Ab0%22%7D%5D%2C%22%40context%22%3A%7B%22p%22%3A%7B%22%40id%22%3A%22http%3A%2F%2Fex.com%2Fp%22%2C%22%40type%22%3A%22%40id%22%7D%2C%22label%22%3A%7B%22%40id%22%3A%22http%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23label%22%7D%7D%7D
>>> 
>>> 
>>> Should the spec be interpreted as saying :
>>> - there is one thing identified by “_:b0”. All statements in the document involving it refer to the same thing, whatever the @graph they are in
>>> - there are 2 different things that should not be conflated (RDF point of view, as expressed in the N-Quads output)
>>> - do what you want, I don’t care, only RDF-minded persons have this kind of concerns ;-)
>>> 
>>> TIA
>>> 
>>> fps
>>> 
>> 
>> One document parses to produce one RDF dataset and the blank node should be the same where the same identifier is used.
>> 
>> N-Quads:
>> [[
>> A fresh RDF blank node is allocated for each unique blank node label in a document.
>> ]]
>> TriG:
>> [[
>> A blank node label represents the same blank node throughout the TriG document.
>> ]]
>> 
>> Blank nodes can be used as graph names - those are not "in" a graph at all.
>> 
>> One graph can be a subset of another.
>> 
>>   Andy
>> 
> 
> 
Received on Monday, 30 January 2017 18:51:10 UTC

This archive was generated by hypermail 2.3.1 : Monday, 30 January 2017 18:51:10 UTC