--- a/spec/latest/json-ld-api/index.html Mon May 13 20:54:20 2013 -0300
+++ b/spec/latest/json-ld-api/index.html Mon May 13 21:43:02 2013 -0300
@@ -173,6 +173,9 @@
<li>Remove default value of <code class="idlMemberName"><a href="#idl-def-JsonLdOptions">JsonLdOption's</a></code>
<code class="idlMemberName"><a href="#widl-JsonLdOptions-base">base</a></code> member</li>
<li>Support lists of lists when converting from RDF to JSON-LD</li>
+ <li>Convert all RDF numeric literals (except <code>xsd:decimal</code>) to <tref title="number">numbers</tref>
+ when converting from RDF; convert all <tref title="number">numbers</tref> to
+ <code>xsd:double</code>-typed literals when converting to RDF</li>
</ul>
</section>
@@ -3253,24 +3256,13 @@
<a class="sectionRef" href="#data-round-tripping">Data Round Tripping</a>
If <i>datatype</i> is <tref>null</tref>, set it to
<code>xsd:boolean</code>.</li>
- <li>Otherwise, if <i>value</i> is a <tref>number</tref> with fractions
- or <i>value</i> is a <tref>number</tref> and <i>datatype</i> equals
- <code>xsd:double</code>, convert <i>value</i> to a
- <tref>string</tref> in <tref>canonical lexical form</tref> of
+ <li>Otherwise, if <i>value</i> is a <tref>number</tref>, convert <i>value</i>
+ to a <tref>string</tref> in <tref>canonical lexical form</tref> of
an <code>xsd:double</code> as defined in [[!XMLSCHEMA11-2]]
and described in
<a class="sectionRef" href="#data-round-tripping">Data Round Tripping</a>.
If <i>datatype</i> is <tref>null</tref>, set it to
<code>xsd:double</code>.</li>
- <li>Otherwise, if <i>value</i> is a <tref>number</tref> without fractions
- or <i>value</i> is a <tref>number</tref> and <i>datatype</i> equals
- <code>xsd:integer</code>, convert <i>value</i> to a
- <tref>string</tref> in <tref>canonical lexical form</tref> of
- an <code>xsd:integer</code> as defined in [[!XMLSCHEMA11-2]]
- and described in
- <a class="sectionRef" href="#data-round-tripping">Data Round Tripping</a>.
- If <i>datatype</i> is <tref>null</tref>, set it to
- <code>xsd:integer</code>.</li>
<li>Otherwise, if <i>datatype</i> is <tref>null</tref>, set it to
<code>xsd:string</code> or <code>rdf:langString</code>, depending on if
item has an <code>@language</code> member.</li>
@@ -3350,15 +3342,9 @@
<tref title="RDF literal">RDF literals</tref>, <tref title="IRI">IRIs</tref>
and <tref title="blank node identifier">blank node identifiers</tref>.
If the <i>use native types</i> flag is set to <tref>true</tref>,
- <tref title="RDF literal">RDF literals</tref> with a
- <tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype IRI</tref>
- that equals <code>xsd:integer</code> or <code>xsd:double</code> are converted
- to a <tref title="number">JSON numbers</tref> and <tref title="RDF literal">RDF literals</tref>
- with a <tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype IRI</tref>
- that equals <code>xsd:boolean</code> are converted to <tref>true</tref> or
- <tref>false</tref> based on their
- <tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">lexical form</tref>
- as described in
+ some <tref title="RDF literal">RDF literals</tref> are converted to
+ <tref title="number">JSON numbers</tref> or the boolean values <tref>true</tref>
+ or <tref>false</tref> as described in
<a class="sectionRef" href="#data-round-tripping">Data Round Tripping</a>.</p>
</section>
@@ -3535,14 +3521,22 @@
If the <i>use native types</i> flag is set to <tref>true</tref>,
<tref title="RDF literal">RDF literals</tref> with a
<tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype IRI</tref>
- that equals <code>xsd:integer</code> or <code>xsd:double</code> are converted
+ that equals <code>xsd:integer</code>, <code>xsd:double</code>, <code>xsd:float</code>,
+ <code>xsd:byte</code>, <code>xsd:short</code>, <code>xsd:int</code>, <code>xsd:long</code>,
+ <code>xsd:unsignedByte</code>, <code>xsd:unsignedShort</code>,
+ <code>xsd:unsignedInt</code>, <code>xsd:unsignedLong</code>,
+ <code>xsd:positiveInteger</code>, <code>xsd:nonNegativeInteger</code>,
+ <code>xsd:negativeInteger</code>, or <code>xsd:nonPositiveInteger</code> are converted
to a <tref title="number">JSON numbers</tref> and <tref title="RDF literal">RDF literals</tref>
with a <tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype IRI</tref>
that equals <code>xsd:boolean</code> are converted to <tref>true</tref> or
<tref>false</tref> based on their
<tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">lexical form</tref>
- as described in
- <a class="sectionRef" href="#data-round-tripping">Data Round Tripping</a>.</p>
+ as described in <a class="sectionRef" href="#data-round-tripping">Data Round Tripping</a>.
+ <tref title="RDF literal">RDF literals</tref> with a
+ <tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype IRI</tref>
+ that equals <code>xsd:decimal</code> are not converted to
+ <tref title="number">JSON numbers</tref>.</p>
</section>
<section>
@@ -3580,12 +3574,16 @@
set <i>type</i> to <code>xsd:boolean</code>.</li>
<li>Otherwise, if the
<tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype IRI</tref>
- of <i>value</i> equals <code>xsd:integer</code> or
- <code>xsd:double</code> and its
+ of <i>value</i> equals <code>xsd:integer</code>, <code>xsd:double</code>,
+ <code>xsd:float</code>, <code>xsd:byte</code>, <code>xsd:short</code>,
+ <code>xsd:int</code>, <code>xsd:long</code>, <code>xsd:unsignedByte</code>,
+ <code>xsd:unsignedShort</code>, <code>xsd:unsignedInt</code>,
+ <code>xsd:unsignedLong</code>, <code>xsd:positiveInteger</code>,
+ <code>xsd:nonNegativeInteger</code>, <code>xsd:negativeInteger</code>,
+ or <code>xsd:nonPositiveInteger</code> and its
<tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">lexical form</tref>
- is a valid <code>xsd:integer</code> or <code>xsd:double</code>
- according [[!XMLSCHEMA11-2]], set <i>converted value</i>
- to the result of converting the
+ is in the corresponding <tref>canonical lexical form</tref> as defined by
+ [[!XMLSCHEMA11-2]], set <i>converted value</i> to the result of converting the
<tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">lexical form</tref>
to a JSON <tref>number</tref>.</li>
</ol>
@@ -3614,30 +3612,14 @@
<p>When <a href="#convert-to-rdf-algorithm">converting JSON-LD to RDF</a>
JSON-native <tref title="number">numbers</tref> are automatically
- type-coerced to <code>xsd:integer</code> or <code>xsd:double</code>
- depending on whether the <tref>number</tref> has fractions or not,
- the boolean values <tref>true</tref> and <tref>false</tref> are
- coerced to <code>xsd:boolean</code>, and <tref title="string">strings</tref>
+ type-coerced to <code>xsd:double</code>, the boolean values
+ <tref>true</tref> and <tref>false</tref> are coerced to
+ <code>xsd:boolean</code>, and <tref title="string">strings</tref>
are coerced to <code>xsd:string</code>. The numeric or boolean values
itself are converted to <tdef>canonical lexical form</tdef>, i.e., a
deterministic string representation as defined in
[[!XMLSCHEMA11-2]].</p>
- <p>The <tref>canonical lexical form</tref> of an <em>integer</em>, i.e.,
- a <tref>number</tref> without fractions or a <tref>number</tref> coerced
- to <code>xsd:integer</code>, is a finite-length sequence of decimal
- digits (<code>0-9</code>) with an optional leading minus sign; leading
- zeros are prohibited. In JavaScript, implementers can use the following
- snippet of code to convert an integer to
- <tref>canonical lexical form</tref>:</p>
-
- <pre class="example" data-transform="updateExample"
- title="Sample integer serialization implementation in JavaScript">
- <!--
- (value).toFixed(0).toString()
- -->
- </pre>
-
<p>The <tref>canonical lexical form</tref> of a <em>double</em>, i.e., a
<tref>number</tref> with fractions or a <tref>number</tref> coerced to
<code>xsd:double</code>, consists of a mantissa followed by the
@@ -3676,13 +3658,13 @@
errors might occur. When converting
<a href="#convert-from-rdf-algorithm">RDF to JSON-LD</a>, similar
rounding errors might occur. Furthermore, the datatype or the lexical
- representation might be lost. An <code>xsd:double</code> with a value
- of <code>2.0</code> will, e.g., result in an <code>xsd:integer</code>
- with a value of <code>2</code> in <tref>canonical lexical form</tref>
+ representation might be lost. An <code>xsd:integer</code> with a value
+ of <code>2</code> will, e.g., result in an <code>xsd:double</code>
+ with a value of <code>2.0E0</code> in <tref>canonical lexical form</tref>
when converted from RDF to JSON-LD and back to RDF. It is important
to highlight that in practice it might be impossible to losslessly
- convert an <code>xsd:integer</code> to a <tref>number</tref> because
- its value space is not limited. While the JSON specification [[RFC4627]]
+ convert some RDF literals to <tref title="number">numbers</tref> because
+ their value space is not limited. While the JSON specification [[RFC4627]]
does not limit the value space of <tref title="number">numbers</tref>
either, concrete implementations typically do have a limited value
space.</p>
@@ -3692,11 +3674,21 @@
specifies a <i>use native types</i> flag which controls whether
<tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">RDF literals</tref>
with a <tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype IRI</tref>
- equal to <code>xsd:integer</code>, <code>xsd:double</code>, or
- <code>xsd:boolean</code> are converted to their JSON-native
- counterparts. If the <i>use native types</i> flag is set to
- <tref>false</tref>, all literals remain in their original string
- representation.</p>
+ equal to <code>xsd:integer</code>, <code>xsd:double</code>, <code>xsd:float</code>,
+ <code>xsd:byte</code>, <code>xsd:short</code>, <code>xsd:int</code>,
+ <code>xsd:long</code>, <code>xsd:unsignedByte</code>, <code>xsd:unsignedShort</code>,
+ <code>xsd:unsignedInt</code>, <code>xsd:unsignedLong</code>, <code>xsd:positiveInteger</code>,
+ <code>xsd:nonNegativeInteger</code>, <code>xsd:negativeInteger</code>,
+ <code>xsd:nonPositiveInteger</code>, or <code>xsd:boolean</code> are converted to
+ their JSON-native counterparts. If the <i>use native types</i> flag is set to
+ <tref>false</tref>, all
+ <tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">RDF literals</tref> remain
+ in their original string representation.
+ <tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">Literals</tref> with a
+ <tref href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype IRI</tref>
+ that equals <code>xsd:decimal</code> are not automatically converted to
+ <tref title="number">numbers</tref> because their primary use is for values
+ where rounding errors have to be avoided.</p>
<p>Some JSON serializers, such as PHP's native implementation in some versions,
backslash-escape the forward slash character. For example, the value
--- a/spec/latest/json-ld/index.html Mon May 13 20:54:20 2013 -0300
+++ b/spec/latest/json-ld/index.html Mon May 13 21:43:02 2013 -0300
@@ -160,6 +160,9 @@
<li>Allow keyword aliases to be defined using expanded term definitions</li>
<li>Mention profile URIs also in the sections describing the various document forms</li>
<li>Support relative IRIs in <code>@base</code></li>
+ <li>Convert all RDF numeric literals (except <code>xsd:decimal</code>) to <tref title="number">numbers</tref>
+ when converting from RDF; convert all <tref title="number">numbers</tref> to
+ <code>xsd:double</code>-typed literals when converting to RDF</li>
</ul>
</section>
@@ -950,7 +953,6 @@
{
"@context":
{
- "xsd": "http://www.w3.org/2001/XMLSchema#",
****"foaf": "http://xmlns.com/foaf/0.1/"****,
****"foaf:homepage"****: { "@type": "@id" },
"picture": { "@id": ****"foaf:depiction"****, "@type": "@id" }
@@ -3378,9 +3380,8 @@
that numbers and boolean values are represented as typed literals. Thus,
to allow full round-tripping, the JSON-LD Processing Algorithms and API specification [[JSON-LD-API]]
defines conversion rules between JSON-LD's native data types and RDF's
- counterparts. <tref title="number">Numbers</tref> without fractions are
- converted to <code>xsd:integer</code>-typed literals, numbers with fractions
- to <code>xsd:double</code>-typed literals and the two boolean values
+ counterparts. <tref title="number">Numbers</tref> are converted to
+ <code>xsd:double</code>-typed literals and the two boolean values
<tref>true</tref> and <tref>false</tref> to a <code>xsd:boolean</code>-typed
literal. All typed literals are in canonical lexical form.</p>
@@ -3406,7 +3407,7 @@
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<http://example.com/>
- ex:numbers "14"^^xsd:integer, "2.78E0"^^xsd:double ;
+ ex:numbers "1.4E1"^^xsd:double, "2.78E0"^^xsd:double ;
ex:booleans "true"^^xsd:boolean, "false"^^xsd:boolean .
-->
</pre>