w3c / json-ld-syntax

JSON-LD 1.1 Specification
https://w3c.github.io/json-ld-syntax/
Other
112 stars 22 forks source link

Why are value objects ineligible to be type map values? #440

Open nyarly opened 3 weeks ago

nyarly commented 3 weeks ago

I am guessing that the answer is related to #77 and that a type map is using node object @type as keys, rather than value object @types.

My use case is this: I would like to attach skos:notation values to my resources. Because skos:notation uses locally coined datatypes to distinguish the context of the notation, I would like to be tagging the @type into these values. This is simple enough in the case of a single notation: just use type coercion on a term like nickname or reference. However, if I want to use different notations for different kinds of resources, or using multiple notations on a single resource, the coercion becomes more complex.

Instead, I would like to use a type map to briefly tag the notation, and perhaps provide "coordinates" in the form of multiple notations. The JSON playground makes this look like it almost works:

 {
  "@context": {
    "skos": "http://www.w3.org/2004/02/skos/core#",
    "ex": "http://www.example.com/vocab/",
    "recordId": "ex:recordId",
    "nick": {
      "@id": "skos:notation",
      "@container": "@type"
    }
  },

  "nick": {
    "recordId": 17
  } 
}

Playground link

I note that the expanded version has an array for @type however, which I understand is not allowed for a value object.