Re: output of the compaction algorithm

On 04/13/2016 04:22 PM, François-Paul Servant wrote:
> Hi,
> 
> there is something that I do not understand in the output of the compaction algorithm.
> 
> For the following JSON-LD:
> {
>   "@context" : {
>     "label": {
>       "@id" : "http://www.vocab.net/label",
>       "@type" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString"
>     },
>     "homepage": {
>       "@id": "http://www.vocab.net/homepage",
>       "@type": "@id"
>     }
>   },
> 
>   "@id" : "http://www.a.com",
>   "label": {
>     "@value" : "a dot com",
>     "@language" : "fr"
>   },
>   "homepage": "http://www.a.com/home”
> 
> that is, in turtle:
> <http://www.a.com>
>     <http://www.vocab.net/homepage> <http://www.a.com/home>;
>     <http://www.a.com> <http://www.vocab.net/label> "a dot com"@fr .
> 
> }
> 
> why do we get the following compacted form (output of the JSON-LD playground, using same context, that I omit below):
> 
>   "@id": "http://www.a.com",
>   "homepage": "http://www.a.com/home",
>   "http://www.vocab.net/label": {
>     "@language": "fr",
>     "@value": "a dot com"
>   }
> 
> (why "http://www.vocab.net/label", not just "label"?)

Because the `@type` doesn't match. JSON-LD doesn't know anything about
RDF types like `langString`. It just sees that the value for
"http://www.vocab.net/label" uses `@language` and not `@type` with a
matching URI.

JSON-LD does know about the keyword `@language` though. So use that in
your context instead if you want a simple `label` term in the output
that is restricted to values that use the french language:

{
  "@context": {
    "label": {
      "@id": "http://www.vocab.net/label",
      "@language": "fr"
    },
    "homepage": {
      "@id": "http://www.vocab.net/homepage",
      "@type": "@id"
    }
  }
}


-- 
Dave Longley
CTO
Digital Bazaar, Inc.

Received on Wednesday, 13 April 2016 21:10:38 UTC