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

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:
http://lists.w3.org/Archives/Public/public-rdf-dawg-comments/2006Jun/0052

----

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.

http://www.w3.org/2001/sw/DataAccess/rq23/rq24.html#defn_RDFTerm
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)

	Andy

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