Re: test agg-err-02

On 29/09/11 00:25, Gregory Williams wrote:
> Looking at some of the recently added tests, I ran across what I
> think is an error. In test aggregates/manifest#agg-err-02, there's an
> aggregate  run on the following group of values:
>
> 1, _:b2, 3, 4
>
> The aggregate expression is:
>
> AVG(IF(isNumeric(?p), ?p, COALESCE(xsd:double(?p),0)))
>
> As a side note, I don't think the COALESCE is actually doing anything
> here, because the only non-numeric value in the data is the bnode for
> which the xsd:double cast will fail. If this test is supposed to be
> testing errors, this is really testing errors *with COALESCE*, not
> with aggregation.

isNumeric(?p) covers xsd:double(?p).  The xsd:double is presumable 
supposed to catch the case of a string in the data; there aren't any 
strings in the data.

Olivier - was that the intention? If so, should we change the data?
Greg - that work for you?

As a proposal, I've added agg-err-02.ttl which is -01 with strings.

-------------
@prefix : <http://example.com/data/#> .

:x :p 1, "2", 3, 4 .
:y :p 1, _:b2, 3, 4 .
:z :p 1.0, "2.0", 3.0, 4 .
-------------
and tweaked the manifest.

If this isn't the intention, just say so and I've revert the files.

> I believe the above data and aggregate reduces to Average({ 1, 0, 3,
> 4 }), which should result in a value of "2"^^xsd:decimal (decimal
> because the operands to the underlying division are both integers).
> However, the srx file suggests the average operation should yield
> "2"^^xsd:integer.

> Can somebody please take a look at the test and help me determine
> which of xsd:integer or xsd:decimal is the proper type for the
> result?
>
> thanks, .greg

The authority is:

http://www.w3.org/TR/xpath-functions/#func-numeric-divide
[[
As a special case, if the types of both $arg1 and $arg2 are xs:integer, 
then the return type is xs:decimal.
]]

While I was tidying up - I've changed this as well.

	Andy

Received on Thursday, 29 September 2011 07:23:05 UTC