- From: Ashok Malhotra <ashokma@microsoft.com>
- Date: Sun, 25 May 2003 11:31:30 -0700
- To: "Michael Brundage" <xquery@attbi.com>, <public-qt-comments@w3.org>
Michael: Thank you for your comments. The sentence about date/time values was a cut and paste error. Clearly you cannot take the average (or sum) of date/time values since addition is not defined on them. I have removed this sentence. I have also adjusted the wording based on your other comments. See if you like this better. 15.3.2 fn:avg fn:avg($arg as xdt:anyAtomicType*) as xdt:anyAtomicType? Returns a value of the same type as the items in $arg that is the average of the values (computed as sum($arg) div count($arg)). If $arg is the empty sequence, the empty sequence is returned. Duration values must either all be xdt:yearMonthDuration values or must all be xdt:dayTimeDuration values. For numeric values, the numeric promotion rules defined in 6.2 Operators on Numeric Values are used to promote all values to a single common type. Values of type xdt:untypedAtomic are cast to the type of the other items in $arg. If all values in $arg are of type xdt:untypedAtomic they are converted to xs:double. After these operations, $arg must contain items of a single type or one if its subtypes. In addition, the type must support addition and division by an integer. If the above conditions are not met, then an error is raised ("Invalid argument to fn:avg()"). If $arg contains xs:float or xs:double values, NaN values are discarded. For detailed semantics, see section 6.2.8 of [XQuery 1.0 and XPath 2.0 Formal Semantics]. All the best, Ashok > -----Original Message----- > From: public-qt-comments-request@w3.org [mailto:public-qt-comments- > request@w3.org] On Behalf Of Michael Brundage > Sent: Saturday, May 17, 2003 1:12 PM > To: public-qt-comments@w3.org > Subject: [F&O] avg() > > > The definition of avg() contains some statements that are contradictory > and others that are unclear (at least to me). For example, > > (0) > "$srcval must contain items of a single type or one if its subtypes." > > Followed by a description of (for example) how to promote > xdt:untypedAtomic > into double. Clearly avg(xs:double(1.0), xs:untypedAtomic(2.0)) is valid, > but the quoted sentence above would rule it out. > > (1) > "In addition, the type must support addition and division by an integer. > If date/time values do not have a timezone, the implicit timezone provided > by the evaluation context is added and the adjusted normalized value is > used in the calculation." > > I see several problems with these two sentences: > (a) xs:date and xs:time do not support addition (with themselves), but > the second sentence implies sequences of dates and times are allowed. > Is avg((xs:time('01:01:01'), xs:time('03:03:03'))) allowed? > What about avg(xs:time('01:01:01'))? > > (b) What about avg(xs:date('1972-05-13'), xs:yearMonthDuration('P31Y'))? > These two support addition (with each other) and division by an integer. > > (2) > Are the typing rules described here applied to the static or runtime types > of the arguments? > For example, is the expression > avg((if ($someRuntimeCondition) then xdt:yearMonthDuration('P1Y') else > xdt:dayTimeDuration('PT1H'), > if ($someOtherRuntimeCondition) then xdt:yearMonthDuration('P3Y') > else > xdt:dayTimeDuration('PT3H'))) > always a static type error, or will it succeed when > $someRuntimeCondition=$someOtherRuntimeCondition and fail otherwise. > > > These confusions could be avoided if there were separate average > functions: > one for the numeric types (backwards compatible with XPath 1.0, > non-numeric items in the sequence are promoted to a numeric type); > another function (or set of functions) for date/time/dateTime/ > dayTimeDuration/yearMonthDuration values, say > avg-date(xs:date*) as xs:date? > avg-yearMonthDuration(xdt:yearMonthDuration*) as xdt:yearMonthDuration? > etc. > > > Best wishes, > > Michael Brundage > Writing as > Author, "XQuery: The XML Query Language" (Addison-Wesley, to appear 2003) > Co-author, "Professional XML Databases" (Wrox Press, 2000) > > not as > Technical Lead > Common Query Runtime/XML Query Processing > WebData XML Team > Microsoft >
Received on Sunday, 25 May 2003 14:31:40 UTC