- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Tue, 09 Apr 2013 20:09:30 +0100
- To: public-rdf-dawg-comments@w3.org
- Message-ID: <5164676A.5030408@epimorphics.com>
On 09/04/13 18:21, Thomas Visel wrote: > > Gentlemen, > > While verifying our implementation of Sparql, I have encountered what > several suspected problems in the grammar. > > 1^st Case: The following production (in > http://www.w3.org/TR/sparql11-query/#rUnaryExpression) permits decimal > numbers of the following exemplary forms: ddd.d ddd.ddd .ddd . > Decimals of the form ddd. are not permitted. > > [147] > > > > DECIMAL > > > > ::= > > > > [0-9]* '.' [0-9]+ > > If this was not the intended result, the right-hand side of the > production might better read as > > [0-9]* '.' [0-9]+ | [0-9] '.' > > The original motivation might be the conflicting use of a floating > number in the /object/ position of a triple, where a fraction-free > float's decimal point would conflict with the triple's closing AND '.' > mark. > > The implications of leaving [147] as-is is that /FILTER [?data > > 29.]/is not legal, a visible annoyance. > This is intentional. Consider: <subject> <predicate> 123. It was decide that this be an integer then a dot for the end of triple. This aligns with Turtle. It also aligns with prefix names where the trailing DOT was never legal. <subject> <predicate> ns:x.y. has DOT as end of triple, not part of the local name. The local part is "x.y" Given that DOT is end-of-triple as well, we have to have things one way or the other. SPARQL-WG decided, along with RDF-WG, that the end-of-triple case was more important and that the practice is seen in use (Freebase is an example where they is an assumption that DOT is end-of-triple when immediately after an integer). ".0" on decimals is sufficiently common and understood usage. It flagged in last call. http://www.w3.org/TR/2012/WD-sparql11-query-20120724/#grammar [] is not legal for filters. FILTER ( ?data > 29.0 ) This also aligns with the canonical representation in XSD: http://www.w3.org/TR/xmlschema11-2/#f-fracDigitsMap > 2^nd Case: There is a slight inconsistency in treatment of DECIMAL > (per above) and DOUBLEs: > > |[148] | > > > > |DOUBLE| > > > > ::= > > > > |[0-9]+ '.' [0-9]* EXPONENT > <http://www.w3.org/TR/sparql11-query/#rEXPONENT> | '.' ([0-9])+ > EXPONENT <http://www.w3.org/TR/sparql11-query/#rEXPONENT> | ([0-9])+ > EXPONENT <http://www.w3.org/TR/sparql11-query/#rEXPONENT>| > > For single precision DECIMAL, the leading digit is optional. For > DOUBLE, a leading digit is mandatory. Is there a motivation for this > difference? > For double the leading zero is not mandatory - see the second clause of [148] | '.' ([0-9])+ EXPONENT <http://www.w3.org/TR/sparql11-query/#rEXPONENT>| 1e5 1.1e5 .1e5 are legal doubles. (Decimal is xsd:decimal, which is arbitrary length - no limit or implication of precision) You may find http://www.sparql.org/query-validator.html useful. It is not endorsed by W3C but it is running the parser used to check and produce the HTML grammar in the final document. Andy > My regards to the WG for taking 1.1 through to closure. > > > Thomas A. Visel > > AlgebraixData, Inc. > > (512) 651-5834 >
Received on Tuesday, 9 April 2013 19:17:19 UTC