Re: Blank nodes, leaning, and the OWA

On Mar 27, 2011, at 10:16 PM, Gregg Reynolds wrote:

> On Sun, Mar 27, 2011 at 10:16 AM, Pat Hayes <> wrote:
> On Mar 27, 2011, at 12:13 AM, Gregg Reynolds wrote:
> ... 
>> [1] a)  <ex:Pedro ex:owns _:x>, <_:x rdf:type ex:Donkey>, <_:x ex:name ex:Daisy>
>>      b)  <ex:Pedro ex:owns _:y>, <_:y rdf:type ex:Donkey>, <_:y ex:name ex:Maisy>
> ... 
>> Is the graph of [1] lean?  It seems to me that under the OWA the answer must be that we do not know,
> It is lean, and we do know this. Leanness is a syntactic property of the graph. You can determine it algorithmically. 
> ... 
> You apparently do not understand it. Check out the definitions in the specs, they are given quite unambiguously. A graph is lean when it is has no instance which is a proper subgraph of itself. The graph [1] does not have such an instance, so it is lean. Nothing to do with models!
> Trust me, I've spent more hours than I care to count trying to decipher the specs.  Whatever they are intended to convey may be unambiguous; what the text actually says is another matter.  For example, I find no syntactic rules that allow me to map a piece of concrete syntax to the abstract syntax.

See and the table given there.

> Nothing that says explicitly that e.g. every _:x should map to one blank node, nor that distinct bnode IDs cannot map to one bnode.

Is that not utterly obvious? Why else would one call it an "identifier for a blank node" ?

>  For that matter, nothing that says the mapping must preserve URIs.

The URIs used in the n-triples notation (used throughout the semantics document) are *identical* to the URIs in the abstract syntax. I fail to see how they can fail to be 'preserved' under these circumstances. 

>  Also no *syntactic* rule that allows me to map
> <ex:a> <ex:p> _:x .
> _:y <ex:p> _:x .
> to <ex:a> <ex:p> _:x .  This looks like it should be some kind of syntactic reduction step, but I find nothing to justify elimination of the second clause except semantic considerations.

It follows from the fact that a graph is defined to be a set of triples. The set {a, a} is the same as the set {a}. 

>  The definition of instance upon which the definition of leaning depends only mentions "replacing some or all blank nodes"; it doesn't say which ones to replace

You can replace any (or indeed none) of them, and you still have an instance. 

> , it places no constraints on the replacement (except that they be bnodes, literals, or URI refs), and it says nothing about *removing* nodes.

Indeed, nodes do not get removed by an instantiation. 

>  In fact as I read it getting from a graph to an "instance which is a proper subgraph" is not even possible syntactically, since we have no syntactic rule for eliminating triples.

A graph is a set of triples. Instantiation is defined as substituting a (blank node, URI or literal) for a blank node. Take the above graph and substitute the URI <ex:a> for the blank node  _:y. This does not affect the second triple, which does not contain that blank node, but it makes the first triple identical to the second triple. The resulting set therefore contains a single triple:

<ex:a> <ex:p> _:x .

which is a subgraph of the original graph. 

Make sense now?


>  I suppose I'll find out such rules are right there in plain site, but I sure can't find them.
> -Gregg

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

Received on Monday, 28 March 2011 05:13:02 UTC