Bug: "A value disjunction that encounters a type error on only one branch will return the result of evaluating the other branch."

The current last call draft states,

"A value disjunction that encounters a type error on only one branch  
will return the result of evaluating the other branch."

This seems to be a bug: inconsistent with the logic one would expect.
  It is inconsistent with the general rule that the disjunction of  
false with x is x for all x. The disjunction of false with a type  
error is therefore a type error.  If not, the type error is masked.

Example in english:  An alarm should fire if either ?smokeDetected or  
the ?temperature is above 40.  Suppose the ?smokeDetected is false  
and the temperature is (because of a bug) bound to something which  
can't be compared to 40 without a type error.  The result should be  
that the alarm is a type error.  Instead, with the wording above, the  
alarm is suppressed.

Yosi Scharf found also that this rule for union means that de  
Morgan's laws don't hold properly, making the  compilation and  
optimization of queries more difficult or impossible.

Tim Berners-Lee
MIT/CSAIL/DIG

Received on Tuesday, 2 August 2005 15:27:31 UTC