[Mulgara-dev] RE: Blank nodes in queries (was: Recent commits to Mulgara.)

Seaborne, Andy andy.seaborne at hp.com
Mon Oct 9 10:56:47 UTC 2006


Thanks for the detailed response - I found it very helpful especially
about the approach to inference.

A couple of things inline but nothing major.

-------- Original Message --------
> From: Andrae Muys <mailto:andrae at netymon.com>
> Date: 7 October 2006 03:42
> 
> On 07/10/2006, at 3:27 AM, Seaborne, Andy wrote:
> 
<snip/>
> 
> Considering the query you included below:
> 
> SELECT ?x WHERE { ?x :p ?y }
> 
> The query pattern is:                ?x :p ?y
> The distinguished variables are:     ?x
> The non-distinguished variables are: ?y

SPARQL also makes it a little bit more difficult - there's three species
of variable.  SPARQL is an algebra over basic graph pattern matching so
a variable can be non-distinguished and used in only one basic graph
pattern or non-distinguished but used in two or more basic graph
patterns, or a filter.  In the latter case, it will need a value, in the
former, it does not need a binding.

> 
> As far as I am concerned a blank node in a query is to be treated no
> differently from any other node-type.  Given blank-node semantics,
they
> naturally carry identify only with respect to their containing graph. 
> Therefore any blank-node that is going to be included within   
> a query must have been obtained from that graph by a prior query.
> Any blank-node that was not obtained from the graph being queried, by
> definition cannot match a blank-node, and therefore any pattern
> containing such a bnode will fail.  

A blank node is existentially quanitified just outside the graph - 

http://lists.w3.org/Archives/Public/public-rdf-dawg/2006JulSep/0153.html
and "What counts as an RDF graph":
http://www.ihmc.us/users/phayes/RDFGraphSyntax.html

My underatnding is that it has identity but it's not uniquely
quanitified over the domain of discourse.

> 
> > If a blank node is treated as purely and only existential, then it
> > might be that block nodes need different treatment to named
variables.
> > On the
> > other hand, and certainly for access RDF graph with simple
entailment,
> > it might be that systems are not forbidden in treating blank nodes
in
> > queries as implicit anonymous variables with the same semantics as
> > other variables.
> 
> The problem I have with this reasoning is that blank-node's do have
> identity, however in exactly the same manner as FOL existentials,
their
> identity is defined only within the scope of the existential
expression
> - in the case of RDF that expression is the set of assertions forming
> the containing graph.    
> 
> As far as I am aware the only valid way of identifying a bnode with
> another node in a graph is by bnode-unification, which is itself only
> valid when the bnode forms a part of an assertion.  A query makes no
> assertions of fact, and therefore I cannot see how any bnode contained
> within it could be validly unified with any node in the graph - with
> the single exception noted above.     

Ah - I see - the blank node need not be identified as a blank node but,
as an existenial, may be matched to a term in the graph or indeed
(OWL/DL) with the existence of something with no materialised term.

An OWL/DL system could create a term for that thing - it just that they
don't.  It can be tricky in the case of co-reference but as the
existentials are not distinguihed that information is lost anyway.

<snip/>
> Andrae
> 
> --
> Andrae Muys
> andrae at netymon.com
> Principal Mulgara Consultant
> Netymon Pty Ltd

	Andy



More information about the Mulgara-dev mailing list