Re: Why should context node type affect generation of a property name?

On Apr 10, 2014, at 1:59 AM, Vagif Abilov <vagif.abilov@gmail.com> wrote:

> Hello,
> 
> I have an example of JSON document with a context, and I don't fully understand how its compacted JSON-LD is generated.
> 
> Here it is. Note that the "versions" property has both @id and @type.
> 
> {
>     "@context": {
>       "bridge": "https://confluence.nrk.no/display/RED/Ordbok#",
>       "schema": "http://schema.org/",
>       "versions": {
>         "@id": "bridge:versions",
>         "@type": "bridge:dictionary"
>       },
>       "items": {
>         "@id": "bridge:versions",
>         "@container": "@index"
>       },
>       "name": "schema:name",
>       "version": "http://semver.org/spec/v2.0.0.html#semver",
>       "description": "schema:description"
>     },
>     "@id": "http://localhost/api",
>     "versions": {
>       "@id": "http://localhost/api/versions",
>       "@type": "bridge:dictionary",
>       "items": {
>         "v1": {
>           "@id": "http://localhost/api/v1",
>           "@type": "api",
>           "name": "v1",
>           "version": "1.0.0",
>           "description": "Initial release"
>         },
>         "v2": {
>           "@id": "http://localhost/api/v2",
>           "@type": "api",
>           "name": "v2",
>           "version": "2.0.0",
>           "description": "Includes pizza-ordering service"
>         }
>       }
>     }
>   }
> 
> If I extract the context from the document and paster into a JSON-LD Playground Context field, then the Compacted JSON-LD version is generated like this:
> 
> {
>   "@context": {
>     "bridge": "https://confluence.nrk.no/display/RED/Ordbok#",
>     "schema": "http://schema.org/",
>     "versions": {
>       "@id": "bridge:versions",
>       "@type": "bridge:dictionary"
>     },
>     "items": {
>       "@id": "bridge:versions",
>       "@container": "@index"
>     },
>     "name": "schema:name",
>     "version": "http://semver.org/spec/v2.0.0.html#semver",
>     "description": "schema:description"
>   },
>   "@id": "http://localhost/api",
>   "bridge:versions": {
>     "@id": "http://localhost/api/versions",
>     "@type": "bridge:dictionary",
>     "items": {
>       "v1": {
>         "@id": "http://localhost/api/v1",
>         "@type": "http://json-ld.org/playground/api",
>         "description": "Initial release",
>         "name": "v1",
>         "version": "1.0.0"
>       },
>       "v2": {
>         "@id": "http://localhost/api/v2",
>         "@type": "http://json-ld.org/playground/api",
>         "description": "Includes pizza-ordering service",
>         "name": "v2",
>         "version": "2.0.0"
>       }
>     }
>   }
> }
> 
> Note that the "versions" property is written like "bridge:versions". Why's that? Because if I simply remove from the Context field "versions" type (remove the line "@type": "bridge:dictionary"), then the Compacted document is generated as expected, with "versions" property and without "bridge" prefix.

By declaring @type bridge:dictionary in the @context, you're saying that the value for the "versions" property is presumed to be a literal with that datatype, not an object referencing an entity of type bridge:dictionary. If you use "@type": "@id" in the @context, it will use the "versions" term.

Gregg

> I wonder what kind of logic is behind this.
> 
> Thanks in advance
> 
> Vagif Abilov

Received on Thursday, 10 April 2014 17:58:04 UTC