W3C home > Mailing lists > Public > w3c-rdfcore-wg@w3.org > October 2001

Re: Banishing "bNode"

From: Pat Hayes <phayes@ai.uwf.edu>
Date: Mon, 15 Oct 2001 21:05:19 -0500
Message-Id: <p05101007b7f0f7754f0a@[]>
To: Dave Beckett <dave.beckett@bristol.ac.uk>
Cc: w3c-rdfcore-wg@w3.org
>In short: yes bNode can change, it is just a token.  However...
>>>>Pat Hayes said:
>>  Before we make N-triples normative, could I reiterate a suggestion I
>>  made in a recent mailing for serious consideration by the WG? It is
>>  simply a terminological change, but I think it would be a great help
>>  in avoiding confusion, and also would pave the way for a slight
>>  extension to Ntriples which I think we (or someone else who has the
>>  task of extending RDF) are going to need in the fairly near future.
>I think this is way more than a simple terminology change.

Oh, I agree about that, that is going to be six months of argument 
:-) . I mentioned this extended notation only as a possible 
motivating factor for the terminology change.

>I can't find your suggestion in the archives; can you please cite
>the URI?

Sorry, I should have done, but it was late and my supper was waiting.


>   [Aside: can people do this in general when they refer to previous emails]
>10 minutes later I find it
>   http://lists.w3.org/Archives/Public/w3c-rdfcore-wg/2001Oct/0210.html
>in the thread "Resolution of: #rdfms-identity-anon-resource"
>>  The actual change is simply to re-christen the syntax class <bNode>
>>  in the Ntriples syntax to be <nodeID>, and to refer to those names of
>>  the form '_:name' as  nodeIDs or "node identifiers". The nodes in the
>>  RDF graph which these things indicate can still be called 'blank
>>  nodes' in text;  but that technical term 'bNode' is dangerously
>>  ambiguous between the Ntriples label itself and the blank node in the
>>  graph that it indicates, and I suspect that the confusion caused by
>>  this ambiguity would be greatly reduced if we only used "node"
>>  terminology to refer to nodes, and used some other terminology to
>>  refer to identifiers in Ntripledocs. So I would suggest avoiding the
>>  term 'bNode' completely. Wherever it occurs in text, replace it with
>>  'blank node' if it refers to the node, and by 'node ID' if it refers
>>  to the '_:name' thingie in an  Ntriples document.
>If you remember how much worse the previous token name anonNode and
>the "anonymous resource", "anonymous node" terms were ... bNode and
>"blank node" has helped a lot.
>So I will make this change in the next WD draft. Goodbye bNode token.
>>  The future extension I think we (or someone) will need, is to allow
>>  nodeIDs to identify not just blank nodes but also nodes labelled with
>>  literals, since there may well be a need to have the same literal
>>  mean different things on two different nodes if we have any kind of
>>  sophisticated datatyping, and then we will need a way to distinguish
>>  which one of these literal nodes is being referred to in each triple
>>  in the Ntriples document. This would be a very small extension to
>>  Ntriples, in which a node ID could be used to refer to *any* node,
>>  even if it also had a label.
>Let me be clear here: you are changing the RDF model to allow the
>graph nodes to be labelled with literals.  Has this been decided?

Well, nodes can be labelled with literals right now, right? That is 
part of the RDF model, not a change to it. This other idea (above) 
was only meant to be a change to the Ntriples syntax to allow a finer 
control over the way the RDF graph structure is specified.  But I 
don't mean to suggest that we actually make this change to Ntriples, 
I'm just pointing out that:

IF we want to have complex datatyping, and

IF also we want to allow things like rdfs:range to control the 
datatyping implicitly (as Peter Patel-Schneider wants to do in DAML, 
and which we now have an elegant way to do in the RDFS MT if we feel 
like using it)

THEN we will need some such way in Ntriples to distinguish two 
different nodes which are labelled with the same literal. We won't, 
in this hypothetical case, be able to insist that RDF graphs are tidy 
on literal nodes. So this is just a kind of pre-heads-up to be ready 
for that, in case we decide to go that way.

>What is the difference between labelled and "identified with"?  I'm
>sure this is a use/mention thing, but I want to be absolutely clear.

I take it that RDF graphs have labels on their arcs and some of their 
nodes. Those labels - urirefs and literals - are part of the RDF 
graph itself, and they are what the model theory refers to. In an 
Ntriples document, we can (at present) use the labels to indicate the 
labelled nodes, since the graphs are tidy; but we also need some way 
to refer to the nodes that don't have a label. That is what nodeIDs 
are for; they are Ntriples id's which refer (in Ntriples) to a node 
in an RDF graph. The labels are in the graph, attached to the nodes.

>This really deserves a thread on its own, with a new subject,
>not just Re: Banishing "bNode"

OK, I'll take my replies to the rest of the message onto a new thread.


IHMC					(850)434 8903   home
40 South Alcaniz St.			(850)202 4416   office
Pensacola,  FL 32501			(850)202 4440   fax
Received on Monday, 15 October 2001 22:05:19 EDT

This archive was generated by hypermail pre-2.1.9 : Wednesday, 3 September 2003 09:41:03 EDT