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