W3C home > Mailing lists > Public > public-linked-json@w3.org > March 2013

RE: Precedence of @vocab

From: Markus Lanthaler <markus.lanthaler@gmx.net>
Date: Fri, 29 Mar 2013 19:05:44 +0100
To: <public-linked-json@w3.org>
Message-ID: <00dd01ce2ca8$0989d980$1c9d8c80$@lanthaler@gmx.net>
Hi Niklas,


> results in:
> 
>     {
>       "@type": "Document",
>       "name": "Something"
>     }
> 
> I believe that compaction is specified like this, according to in "8.3
> IRI Compaction" [1]:
> 
> > we first try to find a term that the IRI or keyword can be compacted
> to if it is relative to active context's vocabulary mapping.

You are citing the non-normative overview here. "Document" is neither a term
(there's no "Document" entry in the context) nor a keyword. So this step
will fail. If you read on, the text says:

"If no term was found that could be used to compact the IRI, then an attempt
is made to find a compact IRI to use."

And that's exactly what happens here. It will be compacted to
schema:Document. I think the assumption was always that if you specify a
term or prefix in the context, than it should always be preferred to a
@vocab mapping. 


> .. Of course, in the above example, just removing the "schema" term
> would do the trick. But in practice, it is often useful to both set a
> default vocabulary and also have a prefix for the same IRI, in order
> to e.g. rename certain terms (and relying on prefixes to shorten the
> context size). E.g. to make plural forms of terms with a `@container`
> of `@set` or `@list, like:
> 
>         "contributors": {"@id": "schema:contributor", "@container":
> "@set"},
>         ...
> 
> (Or for specific datatyped values, or terms with predefined language,
> etc.)

You don't need to define a prefix in this case as @vocab is used here as
well. So you could simply write 

    "contributors": {"@id": "contributor", "@container": "@set"},

Instead.


> Moreover, sometimes you want to have a list of contexts, the first
> defining common prefixes and the latter declaring your specific
> context needs. While you can end by setting a `@vocab` and then
> setting any prefix with that same value to `null`, that can be brittle
> and cumbersome.

That might be true.. but since there's only one vocab mapping, there number
of prefixes you would have to reset is usually *very* small.



--
Markus Lanthaler
@markuslanthaler
Received on Friday, 29 March 2013 18:06:19 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 20:53:21 UTC