[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