- From: Jim Melton <jim.melton@oracle.com>
- Date: Mon, 22 Dec 2003 12:13:23 -0700
- To: Bernhard Bodenstorfer <bodenstorfer@yahoo.co.uk>
- Cc: public-qt-comments@w3.org
Bernhard,
At 10:31 2003-12-22 Monday, Bernhard Bodenstorfer wrote:
>Let's re-visit the topics that I raised in
>http://lists.w3.org/Archives/Public/public-qt-comments/2003Dec/0261.html,
>then garbage-collect Topic 1 and add a new Topic 3.
>
>Topic 1: Don't process durations without a reference
>dateTime
>-------------------------------------------------------------
>
>Jim wrote in
>http://lists.w3.org/Archives/Public/public-qt-comments/2003Dec/0268.html
>
>... (lines deleted from Jim's response by Jim, responding again) ...
>
>You are right, indeed. Therefore, I take back
>my provocative claim. I agree that durations
>can make sense also without a dateTime,
>particularly the drafted subclass xdt:dayTimeDuration
>does.
>
>... (more lines deleted by Jim in Jim's present response) ...
>
>Your disagreement was completely in order.
>While it may well be that general xs:duration values
>are undesirable without a dateTime, certainly the
>logical concept of a duration cannot be questioned
>and I take that back.
I want to express my thanks for the graciousness with which you discussed
this. We sometimes have a tendency to get tense with one another, and you
have completely avoided that. Thanks!
>Topic 2: There should be a function to add dateTime +
>duration
>--------------------------------------------------------------
>
>... (Jim deletes some more lines here) ...
>
>The correct observation that some operations
>with xs:duration are problematic
>cannot justify a complete ban on xs:duration
>arithmetic also in cases, where the arithmetic
>does make sense and is easy to grasp.
>Most prominently, adding an xs:duration
>to an xs:dateTime is meaningful.
>(Though you have to specify whether you first add
>the yearMonth part or the dayTime part.)
I recognize the validity of your argument here. However, the F&O Task
Force and the Query WG and XSL WG discussed the issue ad nauseum and
concluded that the avenue with the fewest objectionable consequences was
simply to prohibit arithmetic involving xs:duration and replace those
possible operations with operations on the two xdt: subtypes.
I *PERSONALLY* would not find the *addition* of two new functions
(something like xxx:add-duration-to-dateTime(xs:dateTime,xs:duration) and
xxx:subtract-duration-from-dateTime(xs:dateTime,xs:duration), where I do
not take a position right now on whether "xxx" is "fn" or "op") to the F&O
spec. I probably would oppose the deletion of the existing
funcitons/operations involving the two xdt: subtypes of duration. (Not at
all incidentally, I know that many people, for very good reasons, oppose
the addition of still more functions. In fact, my employer would almost
certainly object to the addition of these functions in spite of my personal
lack of objection.)
>... (even more lines deleted by Jim for this response) ...
>
>A method fn:subtract-dateTimes-yielding-duration
>would also be possible, and it is there in EXSLT.
>The resulting duration would naturally relate
>to the first argument of the function.
See my personal feelings, and my prediction of others' feelings, above ;^)
>Topic 3: Use of normalized value in
>add-yearMonthDuration-to-dateTime
>---------------------------------------------------------------------
>
>I have a doubt about
>http://www.w3.org/TR/2003/WD-xpath-functions-20031112/#func-add-yearMonthDuration-to-dateTime.
>
>It says here that the first argument internally is
>normalised first and then the addition happens.
>I feel that this treatment of timezones may
>yield strange results close to a change of month.
>
>Example: Consider the sum expression
>
>2001-03-01T06:00:00 + P1M.
>
>Who would not agree that the expected result
>is 2001-04-01T06:00:00?
>
>First assume I am living in London at timezone 0:00.
>So normalisation has no role and there are
>no other problems, so the result would be
>
>2001-04-01T06:00:00,
>
>which indeed matches my expectations.
>
>Next assume that I am living in Beijing
>with UTC plus 8 hours, and consider
>the same sum expression
>
>2001-03-01T06:00:00 + P1M.
>
>The normalisation away from the default timezone to Z
>then implies interpretation of my sum expression as
>
>2001-02-28T22:00:00Z + P1M,
>
>because it was still late evening in London,
>when it was already early morning in Beijing.
>After the addition of P1M I get
>
>2001-03-28T22:00:00Z
>
>and thus, back in Beijing local time zone,
>
>2001-03-29T06:00:00
>
>So in Beijing, I get
>2001-03-01T06:00:00 + P1M = 2001-03-29T06:00:00.
>
>Note that the problem is not the use of a default
>timezone. I have the same trouble when specifying
>zone +8:00:
>
>2001-03-01T06:00:00+8:00 + P1M =
>2001-03-29T06:00:00+8:00.
>
>I have the feeling that this is wrong.
>But it may be intended in the end. Any views?
My view (personal, not Working Group or corporate) is that the consequences
you describe are unavoidable in the general case. We have uncovered
anomalies all over the place when dealing with dates and times, especially
near boundary regions...the most notorious of which are month boundaries
such as the one you described (which is not, of course, limited to
Februaries). I believe that the current solution set is a reasonable
compromise regarding the selection of which anomalies we resolve versus
those that we do not resolve. I don't think it's possible to eliminate all
of the anomalies in the general case, simply due to the nature of
dates/times as semi-natural values heavily influenced by human politics.
The specific problem you discuss above might be something that could be
resolved, but I worry that the solution would involve rules such as "If
there are no anomalies introduced, then normalize the UTC; if there are
anomalies caused by such normalization that can be avoided by using the
current timezone, then use the current timezone." However, such rules are
difficult to express formally, because the notion of "anomalies" depends
largely on human interpretations. Another factor that might help in such
rules could be "use the length of the following month when resolving such
anomalies", but I haven't thought out the implications of that at all.
What we really need is a DWIM processor (Do What I Mean), which is probably
not yet in Alpha testing...
Again, thanks for your continued interest in this subject and its possible
resolution (or improvement).
Best,
Jim
========================================================================
Jim Melton --- Editor of ISO/IEC 9075-* (SQL) Phone: +1.801.942.0144
Oracle Corporation Oracle Email: mailto:jim.melton@oracle.com
1930 Viscounti Drive Standards email: mailto:jim.melton@acm.org
Sandy, UT 84093-1063 Personal email: mailto:jim@melton.name
USA Fax : +1.801.942.3345
========================================================================
= Facts are facts. However, any opinions expressed are the opinions =
= only of myself and may or may not reflect the opinions of anybody =
= else with whom I may or may not have discussed the issues at hand. =
========================================================================
Received on Monday, 22 December 2003 14:33:07 UTC