Re: Bnodes in DELETE templates (was: SPARQL Update 1.1 review part1)

Thanks Greg for spotting this! Actually, there were two mistakes in the P_B pattern below...  see inline.


On 20 Feb 2011, at 23:40, Gregory Williams wrote:

> On Feb 18, 2011, at 1:31 PM, Axel Polleres wrote:
> 
> > For any unnamed bnode _:B in a modify_template_DEL
> > (i) new variables ?Var_B ?Var_B1 ?Var_B2 ?Var_Bg are introduced,
> > (ii) _:B is replaced by ?Var_B in a modify_template_DEL,
> > (iii) Pattern P is replaced by P_B such that
> >
> >  P_B =  { P } UNION {
> >          SELECT DISTINCT ?Var_B
> >            {  { ?Var_B ?Var_B1 ?Var_B2 } UNION
> >               { ?Var_B1 ?Var_B ?Var_B2 } UNION
> >               { ?Var_B1 ?Var_B2 ?Var_B } UNION
> >               { GRAPH ?Var_Bg {?Var_B1 ?Var_B2 ?Var_B } } UNION
> >               { GRAPH ?Var_Bg {?D1 ?Var_B2 ?Var_B } } UNION
> >               { GRAPH ?Var_Bg {?Var_B1 ?Var_B2 ?Var_B } } }
> >
> > That is, ?Var_B binds to all possible values in the vocabulary of GS.
> 
> I'm not totally swapped in on this issue, but I don't understand how this pattern aligns with the description. In all three named graph union branches, ?Var_B appears in the object position. Since ?Var_B is the only projected variable, don't these three branches return the same results?

yes, that was a copy-paste error from an earlier version I had. The correct one should be

    P_B =  { { P } { Q } }

i.e. join, not UNION (thanks Andy, for pointing me to that offlist), where Q is defined as below...

> 
> > I know that the definition of P_B doesn't look very nice, but this definition should cover the intended semantics of [2].
> > In principle, the idea is that bnodes, that should behave as wildcard should bind to *any* element in the signature of GS,
> > which is what is returned by the subquery
> >        Q = SELECT DISTINCT ?D
> >            {  { ?D ?D1 ?D2 } UNION
> >               { ?D1 ?D ?D2 } UNION
> >               { ?D1 ?D2 ?D } UNION
> >               { GRAPH ?Dg {?D1 ?D2 ?D } } UNION
> >               { GRAPH ?Dg {?D1 ?D2 ?D } } UNION
> >               { GRAPH ?Dg {?D1 ?D2 ?D } } }

...corrected version of Q:

        Q = SELECT DISTINCT ?Var_B
            {  { ?Var_B ?Var_B1 ?Var_B2 } UNION
               { ?Var_B1 ?Var_B ?Var_B2 } UNION
               { ?Var_B1 ?Var_B2 ?Var_B } UNION
               { GRAPH ?Var_Bg {?Var_B ?Var_B1 ?Var_B2 } } UNION
               { GRAPH ?Var_Bg {?Var_B1 ?Var_B ?Var_B2 } } UNION
               { GRAPH ?Var_Bg {?Var_B1 ?Var_B2 ?Var_B } } }

> 
> Even more obvious in this one. Am I missing something?
> 

Hope I got it right now ;-)

Thanks, 
Axel

> thanks,
> .greg
> 
> 
> 

Received on Monday, 21 February 2011 08:11:12 UTC