On 06/16/2016 05:08 PM, Gregory Williams wrote:
> On Jun 16, 2016, at 4:32 PM, Peter F. Patel-Schneider 
> <pfpschnei...@gmail.com> wrote:
>>
>> So consider
>>  BGP( _:x :p ?y )
>> against the active graph G = { :s :p _:x . }
>>
>> The RDF instance mapping is σ = { ( _:x, :s ) }.
>> The solution mapping is μ = { ( y, _:x ) }.
>> The pattern instance mapping is P = { ( _:x, :s ), ( y, _:x ) }.
>> This is a solution because P( _:x :p ?y ) = (:s :p _:x) which is a subgraph
>> of G.
>>
>> The point is that the _:x that came from the EXISTS substitution is a blank
>> node and can be itself substituted for in the RDF instance mapping.  This is
>> counter to what I think is the desired meaning for EXISTS.
>>
>> Note that this is all just a little bit sloppy.  To make it all precise
>> would require an extra injection from blank node names to real blank nodes
>> but this extra precision doesn't make any difference here.
> 
> That’s an interesting case. I haven’t gone through the definitions in depth 
> in a while, but I think you’re right that the discussion of matching BGPs in 
> §18.3 and the evaluation semantics of EXISTS in §18.6 probably don’t do the 
> expected thing. The existing errata surrounding EXISTS evaluation shows that 
> this was an area where the spec fell a bit short.
> 
> Do you have a system that is actually giving you the results you describe?
> 
> My intuitive understanding, and one which I suspect most if not all 
> implementations use, is that the “blank nodes” that §18.3 references are the 
> syntactic blank nodes in the *query*, and shouldn’t apply to blank nodes that 
> come from the *data* that are used in an EXISTS filter evaluation. 
> Unfortunately, I don’t think there’s any way for substitute() to express a 
> (non-syntactic) blank node in the algebraic representation.
> 
> Does that align with what you think the expected behavior is?
> 
> thanks,
> .greg

I expect that all implementations make the obvious correction, i.e., treating
blank nodes from the graph as not being subject to further substitution, at
least in the simple cases.  However, I wouldn't be so sure about multiple
nesting of EXISTS although I haven't seen any divergence even here.

peter


Reply via email to