W3C home > Mailing lists > Public > public-linked-json@w3.org > June 2014

Re: Mapping predefined values to URIs when interpreting JSON as JSON-LD

From: john.walker <john.walker@semaku.com>
Date: Wed, 4 Jun 2014 14:36:10 +0200 (CEST)
To: "Niklas Lindström" <lindstream@gmail.com>
Cc: "public-linked-json@w3.org" <public-linked-json@w3.org>
Message-ID: <370563298.60852.1401885370281.open-xchange@oxweb05.eigbox.net>
Hi Niklas,

Thanks, works like a charm.

So that can also be used the other direction to map from a URI in object
position of a triple in JSON-LD to some label required by an application that
consumes 'regular' JSON.

John


> On June 3, 2014 at 10:13 PM Niklas Lindström <lindstream@gmail.com> wrote:
> 
>  Hi John,
> 
>  To resolve values as context keys (or against @vocab), you need to use @type:
> @vocab, e.g.:
> 
>      "property1": {
>        "@id": " http://example.com/vocab#foo",
>        "@type": "@vocab"
>      }
> 
>  The difference between this and @type: @id is that @id coercion resolves
> values against the document URI (or @base, or by expanding prefixes). It thus
> treats your values as relative paths. (This ensures that relative paths don't
> collide with terms.) Using @type: @vocab instead looks in "vocabulary space"
> first.
> 
>  Cheers,
>  Niklas
> 
> 
> 
>  On Tue, Jun 3, 2014 at 9:53 PM, john.walker <john.walker@semaku.com
> <mailto:john.walker@semaku.com> > wrote:
>    > > I'm looking for some help/guidance with context usage.
> > 
> >    Say I have an existing JSON document:
> > 
> >    {
> >      "property1": "value1",
> >      "property2": "value2"
> >    }
> > 
> >    I'm struggling with mapping this to existing URIs.
> >    Say:
> >    property1 => http://example.com/vocab#foo
> >    property2 => http://example.com/vocab#bar
> >    value1 => http://example.com/vocab#baz
> >    value2 => http://example.com/vocab#qux
> > 
> >    So the triples I'm looking to derive are:
> > 
> >    _:b0 < http://example.com/vocab#bar> < http://example.com/vocab#baz> .
> >    _:b0 < http://example.com/vocab#foo> < http://example.com/vocab#qux> .
> > 
> >    I tried with this context:
> > 
> >    {
> >      "@context": {
> >        "property1": {
> >          "@id": " http://example.com/vocab#foo",
> >          "@type": "@id"
> >        },
> >        "property2": {
> >          "@id": " http://example.com/vocab#bar",
> >          "@type": "@id"
> >        },
> >        "value1": " http://example.com/vocab#baz",
> >        "value2": " http://example.com/vocab#qux"
> >      }
> >    }
> > 
> >    But this does not do the desired mappings for the values, instead the
> > values are
> >    just interpreted relative to the base/current URI.
> > 
> >    It feels like I'm missing something obvious...
> > 
> >    Cheers,
> >    John
> > 
> > 
> >  > 
Received on Wednesday, 4 June 2014 12:36:40 UTC

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