You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by Rob Vesse <rv...@yarcdata.com> on 2012/08/02 19:41:47 UTC

OpAssign vs OpExtend

What exactly is the difference between these two?

As far as I can glean from the code OpAssign has the older LET style semantics whereas OpExtend is the newer standard BIND semantics

Is that the only difference and are they essentially interchangeable?

Rob

Re: OpAssign vs OpExtend

Posted by Andy Seaborne <an...@apache.org>.
On 02/08/12 18:41, Rob Vesse wrote:
> What exactly is the difference between these two?
>
> As far as I can glean from the code OpAssign has the older LET style semantics whereas OpExtend is the newer standard BIND semantics
>
> Is that the only difference and are they essentially interchangeable?
>
> Rob
>

Yep -

OpAssign = LET
OpExtend = BIND

and have different effects if the variable is already bound.

BIND -> should have been a static syntax error.

LET logical assignment means that same value lets through the row, and 
different value -> remove row (c.f. FILTER).  Much better design :-)

We also do algebra->synatx conversion so keeping them apart is needed 
for that.

So not quite interchangeable.  For equality optimization translation, 
which is used is not really important but it used BIND version as being 
strict "SPARQL".

	Andy