W3C home > Mailing lists > Public > public-linked-json@w3.org > January 2015

Re: Type coercion to native JSON numbers via JSON-LD API?

From: Jindřich Mynarz <mynarzjindrich@gmail.com>
Date: Fri, 16 Jan 2015 16:18:39 +0100
Message-ID: <CAE=8Bu8k5DnaLY3dSG4Yp79+HsVpwFP-L7A0=+vR9mjsL0v7tQ@mail.gmail.com>
To: Dave Longley <dlongley@digitalbazaar.com>
Cc: public-linked-json@w3.org
Thanks for the feedback, Stian and Dave.

I'll transform the input RDF to use explicit datatypes for numbers and set
the `use native types` flag when loading it as JSON-LD.

Best,

Jindřich

-- 
http://mynarz.net/#jindrich

On Fri, Jan 16, 2015 at 12:12 AM, Dave Longley <dlongley@digitalbazaar.com>
wrote:

> On 01/15/2015 04:48 PM, Stian Soiland-Reyes wrote:
> > No, I don't believe there is an specified mechanism for that currently.
>
> There is if converting from RDF, see below.
>
> >
> > Probably there should be. Given your context, the
> > http://json-ld.org/playground/ seems to keep any incoming JSON numbers
> > 42  as the number 42 (even if it is as { "@type": "xsd:integer",
> > "@value": 42} ), and any incoming strings "42" as "42".
> >
> > I would argue that in this case it should at least consistently end up
> > with always the string or always the integer version.
>
> It is consistent in that expansion/compaction won't transform valid JSON
> primitives, they are left alone. The expansion and compaction algorithms
> don't know anything about the meaning of "xsd:integer". Data types are
> opaque to those algorithms. They are, however, dealt with in a minor way
> in the to/from RDF conversion algorithms:
>
> If you're converting from RDF and you specify the `use native types`
> flag as `true`, then xsd:integers will be converted to native JSON numbers.
>
> From the spec:
>
> "To ensure lossless round-tripping the Serialize RDF as JSON-LD
> algorithm specifies a use native types flag which controls whether RDF
> literals with a datatype IRI equal to xsd:integer, xsd:double, or
> xsd:boolean are converted to their JSON-native counterparts. If the use
> native types flag is set to false, all literals remain in their original
> string representation."
>
> http://www.w3.org/TR/json-ld-api/#data-round-tripping
>
> >
> >
> > Could it be the job of a JSON-LD Frame to specify this? Currently it
> > can't say much about the values, e.g. if it should be expanded with
> > @value or not.
> >
> >
> >
> > On 15 January 2015 at 16:55, Jindřich Mynarz <mynarzjindrich@gmail.com>
> wrote:
> >> Hi,
> >>
> >> is it possible to use JSON-LD API to coerce number-like strings into
> native
> >> JSON numbers (http://www.w3.org/TR/json-ld/#dfn-number)? The section
> of the
> >> specification on type coercion (
> http://www.w3.org/TR/json-ld/#type-coercion)
> >> seems to suggest that this is possible, but so far I haven't realized
> how.
> >>
> >> For example, is it possible to coerce the values of the "age" attribute
> to
> >> numbers in the following JSON-LD?
> >>
> >> {
> >>   "@context": {
> >>     "@vocab": "http://xmlns.com/foaf/0.1/",
> >>     "xsd": "http://www.w3.org/2001/XMLSchema#",
> >>     "age": { "@type": "xsd:integer" }
> >>   },
> >>   "age": "42"
> >> }
> >>
> >> Setting a numeric datatype (such as xsd:integer) for the property via
> @type
> >> in @context doesn't do the job.
> >>
> >> Is there a way to go about this?
> >>
> >> Best,
> >>
> >> Jindřich
> >>
> >> --
> >> http://mynarz.net/#jindrich
> >
> >
> >
>
>
> --
> Dave Longley
> CTO
> Digital Bazaar, Inc.
>
Received on Friday, 16 January 2015 15:19:27 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 16:18:43 UTC