Re: Using bnode identifiers for predicates, graph names

On Feb 5, 2013, at 8:15 PM, Manu Sporny wrote:

> On 02/05/2013 04:49 PM, Pat Hayes wrote:
>> On Feb 5, 2013, at 1:48 PM, Manu Sporny wrote:
>>> ... We can have blank nodes in RDF, and those nodes can refer to 
>>> one another.
>> 
>> Whoa. In what sense do you think that a blank node can refer to 
>> another blank node? In any sense of "refer" that I know, this is not 
>> true. It is certainly wrong to say that a blank node can *identify* 
>> another blank node.
> 
> Sorry, that's not what I meant. Let me rephrase.
> 
> Here's what I was trying to convey:
> 
> In an RDF Graph, we can have a blank node.
> We can label that blank node with a blank node identifier.
> We can create an edge from one blank node to another blank node.

Right. But bear in mind that by 'blank node' here, we do not just mean, "a node identified by a bnodeID". We really do mean, a BLANK node. A node with NO content or structure. A node that is JUST A NODE. The bnodeIDs are only needed in a concrete 'linear' (textual) syntax in order to capture the graph structure. If we represented the RDF graph as an actual graph, the blank nodes really would just be blank, and would have no identifiers at all. So the bnodeIDs are really just artifacts of the linear notations we are obliged to use when sending information in byte streams. 

> 
> Why is this not possible:
> 
> In an RDF Dataset, we can have a blank graph.

What would that be? A graph with no structure? That does not make sense. 

> We can label that blank graph with a blank graph identifier.

Well, if this is going to be analogous to the blank node case, you would have to have a graph that is identified simply by its position in another graph (?) Or maybe in some other, larger, structure, or...? My intuition is breaking down at this point. 

> We can create an edge from a blank node INSIDE a blank graph A to blank
> graph B.

If the graph is blank, it doesn't have any insides. 

> 
>>> Why can't we have blank graphs?
>> 
>> What is a blank graph? Do you mean the empty graph? Hmm, I guess not
> 
> I don't mean the empty graph.
> 
> A blank graph is a graph that is named with something that is not an
> IRI, something local to the dataset.

But that doesnt make it *blank*. (Why do you want to identify a graph with something other than an IRI, in any case? Whats wrong with using IRIs? The syntax rules are pretty liberal: about the only thing it needs is the have a colon in it.)

> 
> This could be accomplished in at least two ways:
> 
> 1. We create a blank graph identifier, so a graph can be named using
> either an IRI or a blank graph identifier, or
> 2. We create a generalized concept called a dataset-local identifier. A
> blank node identifier is a subset of dataset-local identifier.

No, its nothing of the kind. BnodeIDs are used in RDF concrete syntaxes to describe graph connectivity. They have nothing to do with datasets. By the way, they are local only because they are locally describing a graph. In fact, there is nothing in the RDF specs as such that requires bnodeIDs to be local to any particular document scope. 

It sounds like you need a new idea, which is not in RDF or SPARQL (which defined datasets), of a locally-scoped graph name. I suggest you define this and don't get it muddled up with bnodes or IRIs (or else, that you just suck it up and use IRIs :-)

> A blank
> graph identifier is a subset of dataset-local identifier. However, we
> don't need the terminology 'blank graph identifier' or 'blank node
> identifier' - we just have dataset-local identifier, which can be used
> to name both blank nodes and blank graphs.

PLEASE don't use the same notion to identify graphs and nodes. That is a recipe for total confusion. 

> 
>>> Why can't the content of blank graphs refer to one another?
>> 
>> Right now, the RDF spec does not even provide a way for one named 
>> graph (that is, named with a URI) to refer to another.
> 
> JSON-LD does allow one named graph to refer to another. There is no
> restriction that it must be an IRI.

Interesting. How do you do that? (make one graph refer to another, that is)?

> 
>> This is because the RDF specs require an IRI used in an RDF triple to
>> be interpreted referentially, and the specs deliberately allow an IRI
>> to be used as a graph label when it is being used to refer to
>> something other than the graph it labels.
> 
> I don't understand this. I tried to go to RDF Concepts to learn more
> about the statement, but couldn't find any reference to this. Got a link?

Its buried in the WG discussions, but the point is that nothing in Concapts (or anything else) requires that the 'graph names' in a dataset actually do name (identify) the graph they are linked with; and there are use cases where they definitely don't (refer to the graph, that is.)

Pat

> 
> -- manu
> 
> -- 
> Manu Sporny (skype: msporny, twitter: manusporny, G+: +Manu Sporny)
> Founder/CEO - Digital Bazaar, Inc.
> blog: Aaron Swartz, PaySwarm, and Academic Journals
> http://manu.sporny.org/2013/payswarm-journals/
> 
> 

------------------------------------------------------------
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 Wednesday, 6 February 2013 04:33:16 UTC