W3C home > Mailing lists > Public > public-openannotation@w3.org > March 2017

Re: @type:@id vs @type:@vocab

From: Robert Sanderson <azaroth42@gmail.com>
Date: Thu, 16 Mar 2017 13:40:29 -0700
Message-ID: <CABevsUFONnyqCOqzvdgyY7YQPt-6NR=wSpXRBes1qh5FDhSXWQ@mail.gmail.com>
To: Gregg Kellogg <gregg@greggkellogg.net>
Cc: Linked JSON <public-linked-json@w3.org>, David Newbury <david.newbury@gmail.com>, iiif-editors <iiif-editors@googlegroups.com>, public-openannotation <public-openannotation@w3.org>
Ahh, thank you Gregg!

The relevant bits from 6.2 (in 1.1) or 8.2 (in 1.0):

> If the node object contains the @id key, its value must be an absolute
IRI, a relative IRI, or a compact IRI (including blank node identifiers).
> If the node object contains the @type key, its value must be either an
absolute IRI, a relative IRI, a compact IRI (including blank node
identifiers), a term defined in the active context expanding into an
absolute IRI, or an array of any of these

So @id is explicitly like @id, and @type is explicitly like @vocab.
I note that the W3C Annotation context is thus wrong, as is IIIF with the
same culprit being responsible for both. [me]

Framing wise, with a real context document that just aliases rather than
tries to redefine the processing, it works as expected.  Demonstrated in:


On Thu, Mar 16, 2017 at 12:15 PM, Gregg Kellogg <gregg@greggkellogg.net>

> On Mar 16, 2017, at 11:53 AM, Robert Sanderson <azaroth42@gmail.com>
> wrote:
> Dear all,
> In the 1.0 specification, in section 6.5 about type coercion it makes the
> distinction between:
> @type:@id  -- this will expand if there's a ns:value pair, otherwise be
> treated as a relative URI.
> @type:@vocab -- this will expand by interpreting as a Term from the
> context, otherwise as above.
> The playground (and other implementations) seems to not do this correctly.
> For example, see:
>     http://tinyurl.com/glmagag
> @id is aliased to id, with a type of @vocab.  Meaning the value "Class"
> should be expanded as a term, which it isn't.  Instead it's expanded as a
> relative URI.
> @type is aliased to type, with a type of @id. Meaning that the same
> "Class" should be treated as a relative URI, however it treats as @vocab
> and looks up the term.
> Aliasing of keywords only allows you to change the term you use for the
> keyword, not to change the way in which the values of the keyword are
> treated. Note the difference in the JSON-LD spec between Typed Values [1]
> and Aliased Keywords [2]. Keywords have special meaning in JSON-LD (aliased
> or not), as they are core to how the processing model works. Note that you
> also can’t set @container or @language on a keyword alias.
> The definition of Node Objects in the Grammar section [3] describe the
> value requirements for keywords.
> Another place to look for behavior is in the JSON-LD API algorithms, but
> this isn’t a reasonable place for authors to have to refer to.
> Text in [3] could be improved in JSON-LD 1.1 to say “one of the following
> keyword[s] (or a term alias for that keyword) MUSTE be ignored when
> processed:”. Other descriptions could also say (or an alias), but this
> might be going too far.
> Furthermore, we could tighten up the wording for keyword aliases in [2] to
> say that keyword aliases MUST be simple term definitions. Alternatively,
> that keys in an expanded term definition other than @id MUST be ignored, or
> MUST NOT be present, generating an exception. Personally, I favor requiring
> them to be simple term definitions. This should probably result in an
> exception for 1.0 processors as well, as otherwise it is silently ignored.
> Combined with framing, the aliases of id and type are not used and instead
> we get @id and @type despite being clearly recognized in the context, as
> the above (incorrect) transformations are applied.
> I would think that the aliases would be used in any case for framing, and
> not using them sounds like an implementation bug, but we are in a territory
> that I think is illegal syntax in any case.
> Could someone please clarify if my understanding of the spec (6.1, 6.5) is
> incorrect, or if this is a bug in implementations that should be fixed.
> Many thanks!
> Rob Sanderson
> Gregg
> [1] http://json-ld.org/spec/latest/json-ld/#typed-values
> [2] http://json-ld.org/spec/latest/json-ld/#aliasing-keywords
> [3] http://json-ld.org/spec/latest/json-ld/#node-objects
> --
> Rob Sanderson
> Semantic Architect
> The Getty Trust
> Los Angeles, CA 90049

Rob Sanderson
Semantic Architect
The Getty Trust
Los Angeles, CA 90049
Received on Thursday, 16 March 2017 20:41:02 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 16:38:29 UTC