- From: James M Snell <jasnell@gmail.com>
- Date: Thu, 11 Jun 2015 08:17:28 -0700
- To: "David I. Lehn" <dil@lehn.org>
- Cc: Linked JSON <public-linked-json@w3.org>, David Janes <davidjanes@davidjanes.com>
- Message-ID: <CABP7RbcxZXNhH_Tac9eHnMZ2+gxFtkdBF=4-9usBenQ=QPr6Pw@mail.gmail.com>
In general, relying on @vocab is dangerous if you're using contexts from
multiple sources. You should only rely on it if you know it's not going to
be overridden. As a best practice, all terms should have an explicit @id.
On Jun 11, 2015 7:36 AM, "David I. Lehn" <dil@lehn.org> wrote:
> On Wed, Jun 10, 2015 at 3:13 PM, David Janes <davidjanes@davidjanes.com>
> wrote:
> > Bonus curiosity! In my model if I don't have the "@id": "...." I get an
> > error that terms in @context must define an @id. Cool.
> >
> > But why does schema.org's @context not get this error message?? All
> their
> > terms look like
> >
> > "artMedium": { "@type": "@id" },
> >
>
> It's because they define the @vocab in their context doc:
>
> "@vocab": "http://schema.org/",
>
> When the terms don't define an @id and are not CURIEs or URLs it will
> fall back to expanding them with that @vocab.
>
> You could do the same in your context to simplify your rules but it
> can lead to confusion about what the active vocab is. The last one
> defined will win. Lots of examples that use schema.org context likely
> assume that the active vocab is for schema.org. So things like
> {"@type":"Person"} will work. But if you have multiple contexts and
> the last one sets a different vocab then those examples would break
> and use your vocab. Explaining all this is clearly a bit involved!
>
> I'm not sure what best practice is here. Anyone else know?
>
> -dave
>
>
Received on Thursday, 11 June 2015 15:17:59 UTC