- From: Holger Knublauch <holger@topquadrant.com>
- Date: Wed, 15 Jun 2011 09:35:44 +1000
- To: SPARQL Working Group Comments <public-rdf-dawg-comments@w3.org>
Ok, thanks Andy. I must have missed this extension mechanism which seems to be doing what we would need.
With this I am pleased with the response and we can close this topic.
Thanks,
Holger
On Jun 15, 2011, at 1:12 AM, Andy Seaborne wrote:
> Holger,
>
> The intended mechanism for datatype extension is described in SPARQL 1.0, section 11.3.1 "Operator Extensibility" [1].
>
> An implementation may extend function evaluation and comparison by adding new rows to the dispatch table.
>
> In your example of:
>
> "42"^^unit:Meter > "8"^^unit:Meter
>
> which in base SPARQL is an error (no matching operator for ">" between unit:Meter and unit:Meter), the correct extension is to add ">" for (unit:Meter , unit:Meter).
>
> The SPARQL test suite includes tests on xsd:date (see [2]) and are marked in the test suite with mf:requires
>
> The group feels that implicit casting of unknown datatypes to numerical types would be a less useful mechanism.
>
> We would be grateful if you would acknowledge that your comment has been answered by sending a reply to this mailing list.
>
> Andy (on behalf of the SPARQL WG)
>
> [1] http://www.w3.org/TR/rdf-sparql-query/#operatorExtensibility<br/>
> [2] http://www.w3.org/2001/sw/DataAccess/tests/data-r2/open-world/date-3.rq
>
> On 03/06/11 06:42, Holger Knublauch wrote:
>> *
>> Dear working group,
>>
>> I would like to suggest to add more openness and flexibility to SPARQL's
>> handling of typed literals. Currently
>>
>> *
>> *ASK**WHERE*{
>> *FILTER* ("42"^^xsd:float > "8"^^xsd:float)
>> }
>>
>> returns true. However, the following query with user-defined datatypes
>> (here: unit:Meter) does not work
>>
>> *ASK**WHERE*{
>> *FILTER* ("42"^^unit:Meter > "8"^^unit:Meter)
>> }
>>
>> Could you please consider generalizing the Operator Mapping
>>
>> http://www.w3.org/TR/2011/WD-sparql11-query-20110512/#OperatorMapping
>>
>> so that all unknown datatypes default to 'numeric' treatment, so that
>> their literal lexical form is mapped to decimal numbers? I guess the
>> same algorithm would be needed in places like ORDER BY.
>>
>> We have real-world use cases where we would like to exchange product
>> data with units, and all of them are essentially numeric. The current
>> work-around
>>
>> *ASK**WHERE*{
>> *FILTER* (xsd:float("42"^^unit:Meter) > xsd:float("8"^^unit:Meter))
>> }
>>
>> (which works) looks overly complex and not generic. I believe opening
>> this up will future-proof SPARQL before it gets frozen again for many years.
>>
>> Thanks for your consideration,
>> Holger
>>
>
Received on Tuesday, 14 June 2011 23:36:20 UTC