W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > July to September 2006

Re: What is "the serious bug in entailment semantics" found by J. Perez"?

From: Seaborne, Andy <andy.seaborne@hp.com>
Date: Tue, 08 Aug 2006 14:31:38 +0100
Message-ID: <44D8923A.6090105@hp.com>
To: Enrico Franconi <franconi@inf.unibz.it>
CC: Fred Zemke <fred.zemke@oracle.com>, public-rdf-dawg@w3.org

Enrico Franconi wrote:
> Basically the definition of "Basic Graph Pattern E-matching"
> <http://www.w3.org/2001/sw/DataAccess/rq23/rq24.html#BGPgeneral>
> is not equivalent to the expected implementation as described in
> <http://www.w3.org/2001/sw/DataAccess/rq23/rq24.html#BGPsparql>.
> This means that the definition of "Basic Graph Pattern E-matching"  
> has to be changed.
> Jorge Pérez wrote:
>> In the following I will write blank nodes in uppercase and
>> uris in lowercase (just to simplify notation).
>> Consider the graph
>> G = { (a, p, a), (X, p, Y) }
>> and the basic graph pattern query
>> Q = { (?q, p, ?q) }.
>> I'm considering simple entailment and Q does not have any blank  
>> node, so
>> we can choose G itself to be the scoping graph and the terms of G  
>> to be
>> the scoping set, and then any replacement of the single variable in Q
>> results in a well formed RDF graph for simple entailment. So  
>> applying the
>> definitions in the current specification of SPARQL, one obtains that a
>> mapping S is a solution if the graph
>> { (a, p, a), (X, p, Y), (S(?q), p, S(?q)) }
>> is entailed (simple entailment) by G. This leads to three distinct
>> solutions, S(?q) = a, S(?q) = X, and S(?q) = Y, because this three  
>> graphs
>> { (a, p, a), (X, p, Y), (X, p, X) }
>> { (a, p, a), (X, p, Y), (Y, p, Y) }
>> { (a, p, a), (X, p, Y) }
>> are entailed by G. The problem (from my point of view) is that this  
>> example
>> shows is that the claim currently in section 5.2 in the specification
>> (rq24)
>> "A pattern solution can then be defined as follows: to match a  
>> basic graph
>> pattern under simple entailment, it is possible to proceed by  
>> finding a
>> mapping from blank nodes and variables in the basic graph pattern  
>> to terms
>> in the graph being matched; a pattern solution is then a mapping
>> restricted to just the variables, possibly with blank nodes  
>> renamed. [...]"
>> is not true. In my example, because Q does not have any blank node,  
>> the
>> only mapping that one finds from ?q to the terms of G is ?q -> a.
> cheers
> --e.

I can only find this as:


The first thing is to decide what the desirable right answer should be.

S(?q = <a>) seems desirable from a user's perspective.  Find all things 
connected by <p> to themselves.

The "terms in the graph" should be "RDF terms of the graph", which includes 
blank nodes, so for the example given the set of RDF terms of the graph is:

   { <a> , <p> , _:X , _:Y }

If the scoping set is the RDF terms of the graph, the solutions are:

   S(?q/<a>), S(?q/_:X) and S(?q/_:Y)

Received on Tuesday, 8 August 2006 13:32:15 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 15:00:51 UTC