W3C home > Mailing lists > Public > semantic-web@w3.org > December 2018

Re: Blank Nodes Re: Toward easier RDF: a proposal

From: Ross Horne <ross.horne@gmail.com>
Date: Tue, 4 Dec 2018 10:43:48 +0100
Message-ID: <CAHBrK_hJRYuzav42RzpYxo+WyYTFjZp9G_Rq+mBR2K=rfmYcMg@mail.gmail.com>
To: Pat Hayes <phayes@ihmc.us>
Cc: Semantic Web <semantic-web@w3.org>
Dear Pat,

Open question: why can the scope of quantification not be the edge of the
RDF Graph

> Where is that edge? The RDF specs say that an RDF graph is a /set/ of
triples. What
> determines the ‘edge’ of a set? If you mean the document describing the
graph, then yes,
> that is a natural default assumption, I agree, but as soon as you start
taking bits of RDF from
> many sources and combining them, those boundaries get lost. And that was
the intended
> purpose of RDF, to allow information from many sources to be combined and
used together.

, what is the use case / requirement for blank nodes to be shared between
graphs?

> The issue is not so much a use case for sharing, as how to even know when
bnodes are NOT
> being shared.  For one example, many users expect to be able to use
bnodeIDs in the result
> of a query ‘outside’ the graph being queried, e.g., in subsequent
queries.

This is a convincing argument, thank you for explaining.

Since you mention queries, may I ask whether scoping should be explicit in
SPARQL as well as RDF? Let me elaborate.

I believe query

  ask { _:b :p :c  }

is not satisfied by data

  _:b :p :c
  _:b :q :d

This is due to implicit scoping at the edge of the dataset and query. Blank
node _:b is different in the data and query.

In contrast, if we permit *mobility* of scoping, (i.e., when you consume a
blank node it comes into your scope, allowing you to directly refer to it),
then we can refer to _:b in the data from a query.

To see this, suppose a program chains queries together (in this
pseudo-code, assume ?x from the first query binds ?x in the second):

select ?x where { ?x :q :d } ;
ask { ?x :p :c }

In the above, it is reasonable to assume, after the first query executes,
the second query should be satisfied. An explanation is the scope of _:b in
the data expands, encompassing the second query.

Would it be worth considering a holistic view, of blank node scoping,
taking into account the implications for SPARQL? Note the above examples
can be given a very precise semantics.

Kind regards,

Ross
Received on Tuesday, 4 December 2018 09:44:21 UTC

This archive was generated by hypermail 2.4.0 : Tuesday, 5 July 2022 08:45:57 UTC