Re: bnodeification

Hi Pat,

Pat Hayes wrote:

> -----------
> 
> A binding on a pattern Q is a map from the variables and bnodes in Q to
> terms. The result B(Q) of applying the binding B to Q is the RDF graph
> obtained by replacing each variable or bnode in Q by its value under B.
> 
> An answer binding with respect to a scoping graph G' is a binding B such
> that:
> (1)  any bnodeIDs introduced by B occur in G'
> (2)  G entails (G' union B(Q)).

It works for RDF(S), but I'm uneasy with the idea of extending mappings
with bnode names. In this way all the the variables in the query became
distinguished variables and no more true existentials.

It doesn't make any difference with RDF and RDF(S), but with OWL for
example you don't get a true conjunctive query language.

E.g. given the KB [:a rdf:type (Some :r :c)], the query { ?x :r _:b }
has no answers.

Moreover, the algebra definition gets more complicate since you need to
project over the true variables all the times.

> The purpose of the scoping graph is to ensure that bnodeIDs in the
> answer set are used in ways that conform to their usage in G' and in
> other answers, i.e. it defines the scope of answer bnodeIDs.
> 
> An answer set for G is the set of all answer bindings w.r.t. a scoping
> graph G' which is graph-equivalent to G.

> The use of G' rather than G itself is to allow answers to use bnodeIDs
> which are distinct from those in the dataset.

I like the use of G' to be name independent from G bnodes, to get back
told bnodes you can just impose that G and G' are syntactically equal.

Cheers,
--sergio

Received on Wednesday, 11 January 2006 13:14:12 UTC