Re: Discussion for replacement in proposal B (early binding)

Consider

ASK {
 VALUES ?x { :a }
 FILTER EXISTS { MINUS { } }
 }

As far as I can tell, the current spec makes this true because the empty
solution mapping on the RHS of the MINUS doesn't share a variable with the
(empty) solution mapping on the LHS and thus doesn't remove it.  In Proposal
A, the RHS solution mapping doesn't change so there is still no removal and
the ASK is true.  In Proposal B, both sides have single solution mappings of
 { (x, :a) }
so removal happens and thus the ASK is false.


peter


On 11/29/2016 08:40 AM, Andy Seaborne wrote:
> 
> 
> On 26/11/16 21:47, Peter F. Patel-Schneider wrote:
>> On 11/26/2016 11:39 AM, Andy Seaborne wrote:
>>>
>>>
>>> On 25/11/16 20:17, Peter F. Patel-Schneider wrote:
>>>> What I am missing here is the intent behind the proposal.
>>>>
>>>> The intent behind my proposal (propsal A) is to be as simple as possible
>>>> while
>>>> fixing all of the known problems.  If this changes some of the weird
>>>> situations then so be it.
>>>>
>>>> The intent behind this proposal appears to keep results the same, except for
>>>> the problematic cases.  However, this is not stated anywhere that I can see.
>>>> It is also the case that this proposal changes some non-problematic results.
>>>>
>>>> So, just what is this proposal supposed to be doing?
>>>
>>> Your characterisation is reasonable.  It is least change (your examples today
>>> are not right).  To be least change - it simply replaces substitution, where
>>> the variable binding is lost, with a mechanism which inserts the variable
>>> binding.
>>
>> However, that doesn't always work, at least for MINUS as the extra variable
>> bindings may connect the two sides of MINUS.
> 
> I don't follow this point.
> 
> Proposal B leaves in the variable bindings of the MINUS RHS so it does not
> disturb the variable occurrences.
> 
> See the "interesting examples".
> 
> 
> Proposal A does not handle FILTERS using passed in values in the RHS of MINUS.
> 
> SELECT ?x WHERE {
>   ?x :p ?v .
>   FILTER ( EXISTS {
>     ?x :p :v .
>       MINUS { ?x :p ?w . FILTER(?w < ?v) }
>     } )
>   }
> 
> the FILTER is an eval error for unbound ?v
> 
> 
> 
> 
>     Andy

Received on Tuesday, 29 November 2016 17:02:10 UTC