- From: Dave Beckett <dave@dajobe.org>
- Date: Tue, 22 Nov 2005 00:50:06 -0500
- To: Dan Connolly <connolly@w3.org>
- Cc: public-cwm-talk@w3.org, RDF Data Access Working Group <public-rdf-dawg@w3.org>
Dan Connolly wrote: > Dave, > > At XML 2005, we discussed this change: > > RESOLVED: change dataytpe for SPARQL floating point numerics to > xsd:decimal contingent on Beckett's agreement to a similar > change in Turtle. > -- > http://lists.w3.org/Archives/Public/public-rdf-dawg/2005OctDec/att-0229/Nov15.html#item02 > > You seemed pretty much OK with the change, but I heard "I just > need to check one more thing" disclaimers on your answers. > > Are you OK with the change? I had a few concerns with sparql/turtle syntax alignment. As I was composing this I found some more :) 1) I want to keep Turtle aligned with Notation 3 as implemented in cwm as far as is possible. So I made a test file turtle1.ttl with some numeric examples: ------------ @prefix : <http://example.org#> . :a :b 1.0 . :c :d 1 . :e :f 1.0e0 . ------------ and ran cwm on it fresh from a CVS checkout: $ cwm -n3 -ntriples turtle1.ttl <http://example.org#a> <http://example.org#b> "1.0"^^<http://www.w3.org/2001/XMLSchema#double> . <http://example.org#c> <http://example.org#d> "1"^^<http://www.w3.org/2001/XMLSchema#integer> . <http://example.org#e> <http://example.org#f> "1.0"^^<http://www.w3.org/2001/XMLSchema#double> . (*aside - note that the original lexical forms are not preserved; see the last case) so my OK is conditional on N3 also making this change to xsd:double. My test version of raptor (1.4.8 to be) gives the same answers as cwm: $ rapper -q -i turtle -o ntriples turtle1.ttl <http://example.org#a> <http://example.org#b> "1.0"^^<http://www.w3.org/2001/XMLSchema#double> . <http://example.org#c> <http://example.org#d> "1"^^<http://www.w3.org/2001/XMLSchema#integer> . <http://example.org#e> <http://example.org#f> "1.0"^^<http://www.w3.org/2001/XMLSchema#double> . 2) Is there going to remain a shorthand syntax for xsd:double [xsd:float] also? In C there is 1.0f (float) as well as variants. Other languages have similar abbreviated forms. Writing "1.0"^^xsd:double each time will be tedious (plus you have to define the xsd: namespace as there are no default pre-defined namespaces in sparql or turtle). So what does XQuery do? Finding http://www.w3.org/TR/xquery/#id-literals it has forms for integer, decimal and double (with an 'e' or 'E'). Looks like they don't care about float. Maybe sparql, turtle/n3 should follow that. It seems odd to not have short forms for constants for numeric datatypes that sparql supports and that n3/cwm uses given that they can be made relatively unambiguous. (What datatypes does cwm do artithmetic in?) 3) Iplementing arbitrary length decimal numbers I was worried about this, mostly in C as that's what I use. I did some research and I was happy that not only is there a GNU mp library (GPLed) and other implementations but there is ongoing work to add it to the C language, and there is a branch of code being added to GCC to support it, based on reference open source code. These are the pointers I found: http://www2.hursley.ibm.com/decimal/ http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1107.htm http://gcc.gnu.org/viewcvs/branches/dfp-branch/ (note that gcc recently moved to subversion so some of the gcc pointers in the ibm site are out of date) So on the this final point I'm ok for myself. There might be other languages that don't have such libraries, although conversely there are some with it builtin: python 2.4, java recent, ruby? at a quick search. 4) Negative numbers in Turtle/sparql/n3. This was mentioned by AndyS (I think) as omitted from turtle and/or sparql probably by accident. I'd like alignment on this too. Here's a test file turtle2.ttl: ------- @prefix : <http://example.org#> . :a :b -1.0 . :c :d -1 . :e :f -1.0e0 . ------- which cwm passes fine (returning the double types) but looks like it is not syntax in the grammar/my code for Turtle. So I need to fix this. Cheers Dave
Received on Tuesday, 22 November 2005 05:50:45 UTC