- From: Eric Prud'hommeaux <eric@w3.org>
- Date: Tue, 2 Aug 2005 17:02:54 -0400
- To: Tim Berners-Lee <timbl@w3.org>
- Cc: public-rdf-dawg-comments@w3.org, Yosi Scharf <syosi@mit.edu>, Dan Connolly <connolly@w3.org>
- Message-ID: <20050802210254.GB29152@w3.org>
On Tue, Aug 02, 2005 at 04:01:25PM -0400, Tim Berners-Lee wrote:
>
> On Aug 2, 2005, at 12:47, Eric Prud'hommeaux wrote:
>
> >On Tue, Aug 02, 2005 at 11:27:24AM -0400, Tim Berners-Lee wrote:
> >
> >>
> >>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
>
>
> False, note.
>
> >>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.
> >>
> >
> >I tried making this concrete, but found it supporting the spec's
> >current wording.
> >
> >DATA:
> >
> >@prefix : <asdf> .
> >:detector :temp \"314\"^^:degreesK ;
> > :smokeDetects 1 .
>
> Should that be 0?
There is no way to report typeErrors encountered when testing the
bindings in a particular solution. This is typical of query langs
like XPath (as used in either in XQuery or XSLT) and SQL. The
distinction between a "type error" and "suppressed", identified
above, is unobservable.
I answered a slightly different question to demonstrate where the
type error would have an observable effect.
> >*note* degreesK is not known by this SPARQL engine and therefor is not
> >known to be numeric and therefor throws a type error at the >
> >operator.
> >
> >QUERY:
> >
> >PREFIX : <asdf>
> >SELECT ?smokeDetected ?temperature
> > WHERE { :detector :smokeDetects ?smokeDetected .
> > :detector :temp ?temperature .
> > FILTER (?temperature > 40 || ?smokeDetected) }
> >
> >RESULTS:
> > under current semantics:
> >[] fire:eek [] .
> >
>
>
> I suspect with no smoke detected the result would be no results,
> when in fact the temperature is too high. Please try it with 505K
> to make the point! :-)
>
> (505K = 273+((451-32)*5/9)K )
unagi:/home/eric$ units
2084 units, 71 prefixes, 32 nonlinear units
You have: 40 degrees C
You want: degrees Kelvin
Unknown unit 'Kelvin'
You want: degrees K
conformability error
0.6981317 A radian s
0.017453293 K radian
stupid units program
I was assuming that you meant degrees C; 273.15+40 < 314 .
> > if the type error passes through the disjunction there are no
> >results.
> >
> >Does this clarify the effect of || masking type errors?
> >Is this effect now acceptable?
> >Would you like clarifying wording in the spec?
> >
> >
> >>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
> >>
> >
--
-eric
office: +81.466.49.1170 W3C, Keio Research Institute at SFC,
Shonan Fujisawa Campus, Keio University,
5322 Endo, Fujisawa, Kanagawa 252-8520
JAPAN
+1.617.258.5741 NE43-344, MIT, Cambridge, MA 02144 USA
cell: +81.90.6533.3882
(eric@w3.org)
Feel free to forward this message to any list for any purpose other than
email address distribution.
Received on Tuesday, 2 August 2005 21:36:18 UTC