W3C home > Mailing lists > Public > semantic-web@w3.org > October 2010

Re: Is there a systematic method for naming bnodes?

From: Pat Hayes <phayes@ihmc.us>
Date: Sat, 9 Oct 2010 12:55:14 -0500
Cc: Semantic Web <semantic-web@w3.org>
Message-Id: <96EF0E9D-D802-40A2-B357-3CBFB8DFDE68@ihmc.us>
To: Melvin Carvalho <melvincarvalho@gmail.com>

On Oct 4, 2010, at 3:52 PM, Melvin Carvalho wrote:

> On 4 October 2010 00:21, Pat Hayes <phayes@ihmc.us> wrote:
>> I'll try to answer this one...
>> 
>> On Oct 2, 2010, at 5:02 AM, Melvin Carvalho wrote:
>> 
>>> The Semantic Web was based on the principle of using global variables.
>> 
>> Well, not exactly. One of the foundational ideas, certainly, is the existence of global *names*, in the form of URIs (or URI references or IRIs, whatever), but these are not *variables*. They correspond more to constant names than to variables in logic, a sign of which is that they have nothing to bind them and they have no local scope rules.
>> 
>>> It seems to me that bnodes kind of break this pattern.
>> 
>> Im not sure what pattern you mean, but certainly bnodes aren't names or identifiers. In fact, they are in effect local variables, bound to the graph in which they occur. As the RDF semantics points out, they are exactly like existential variables. Think of each bnode as being a word like 'someone' or 'something', to see how different they are from true names.
>> 
>>> I was wondering if there was a systematic method for naming bnodes
>>> (e.g. take a hash of the content)
>> 
>> Well, the very idea of a *blank* node is one that has no name, so this idea seems to be rather against the spirit of the bnode, so to speak. Of course, concrete syntaxes do use bnode identifiers, but these are really just an artifact of the need to represent a graph in a linear character sequence. These bnode identifiers are purely local to the graph.
>> 
>> If bnodes were given some kind of 'global' name, then they would be essentially the same as URI references. (And in fact, one can always use a URIref rather than a bnode, and write bnode-free RDF. Several authorities have urged this as a good practice, though I disagree.)  It would be analogous to prohibiting the use of words like 'someone' in English, and requiring instead that a name be used, even if the name is coined just for this purpose. A global naming scheme for bnodes would be like a convention that one had to say 'person-<hash-identifier>' rather than simply 'someone'.
> 
> I think I see your point, but I'm not sure the 'someone' argument
> really holds true in English.  By 'someone' I mean the 61st word of
> the previous paragraph. QED.

Sorry, you have lost me. I take it from the 'QED" that you feel you have firmly established a point, but I don't see what the point is or what the proof is supposed to be. My analogy was only intended to be, well, an analogy. Imagine a society speaking a language which had no words like "someone" or "something" in it. In order to convey the English meaning of "Someone has a red car", one would have to coin a new name, say 'Person-64327', and use that instead: "Person-64327 has a red car". And then if anyone were to ask for more information about Person-64327, none would be forthcoming; and this would be a useful piece of information, that this was an 'anonymous' person rather than a genuinely named or identified person. This is exactly how names and existential variables are related in logic: there are natural deduction inference rules 
P(a) |-  (exists x)(P(x))
and
(exists x)(P(x)) |-  P(<name>)   where <name> is a name not occurring any other sentence or expression: a 'new' name. 

> 
> I'm curious as to why you would not advocate a best practice of
> allowing a triple to be referenced, as I cant see a whole lot of
> disadvantages, and there probably are advantages.

I'm all for triples being referenced. (Well, actually, for graphs being referenced, including the extreme case of a graph being a single triple.) But, I don't see what that has to do with what we are talking about here.

> 
> What about using a best practice unique hash (assuming non collision,
> of say, SHA1) in the serializations.  Something like git does a clever
> thing and takes a sha1 of the contents of each file it store and uses
> that as the identifier.  In this way it avoids collisions of identical
> items and gives things global IDs independent of what's in them.

THis sounds like a proposal to replace bnodes with globally unique URIs.  Well, OK, but what is the point? If people want to use URIs instead of bnodes, they already can do this. Some folk treat this as good practice, as I said earlier. Why do we need to say anything more on this topic?

> 
> I guess I'm missing some of the history/motivations behind RDF.  Is
> there useful a case where you would NOT want to reference the contents
> of a bnode (let's say even if you had it for free)?

Im not sure what you mean by 'referencing the contents of a bnode'. Bnodes don't have any contents. 

Pat

> 
>> 
>>> Seems to me you could solve a lot of the problems of RDF with this
>>> were the case?
>> 
>> What problems?
>> 
>> Pat Hayes
>> 
>>> 
>>> 
>> 
>> ------------------------------------------------------------
>> IHMC                                     (850)434 8903 or (650)494 3973
>> 40 South Alcaniz St.           (850)202 4416   office
>> Pensacola                            (850)202 4440   fax
>> FL 32502                              (850)291 0667   mobile
>> phayesAT-SIGNihmc.us       http://www.ihmc.us/users/phayes
>> 
>> 
>> 
>> 
>> 
>> 
> 
> 

------------------------------------------------------------
IHMC                                     (850)434 8903 or (650)494 3973   
40 South Alcaniz St.           (850)202 4416   office
Pensacola                            (850)202 4440   fax
FL 32502                              (850)291 0667   mobile
phayesAT-SIGNihmc.us       http://www.ihmc.us/users/phayes
Received on Saturday, 9 October 2010 17:55:51 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 21:45:38 GMT