- From: Adrian Pohl <pohl@hbz-nrw.de>
- Date: Fri, 19 Feb 2016 16:17:48 +0100
- To: public-linked-json@w3.org
Hello,
we would like to use what my colleague Jan Schnasse has dubbed "side car
approach" of providing JSON-LD. This means providing a label for each
node in the data – including RDF types – to enable easy consumption of
the data without IRI-lookups for presentation purposes. The following
example shows the general pattern:
{
"@context":{
"label":"http://www.w3.org/2000/01/rdf-schema#label",
"subject":{
"@id":"http://purl.org/dc/terms/subject",
"@type":"@id"
}
},
"@id":"http://lobid.org/resource/HT018881872",
"@type":[
{
"@id":"http://purl.org/ontology/bibo/Book",
"label":"Buch"
},
{
"@id":"http://purl.org/ontology/bibo/Thesis",
"label":"Abschlussarbeit"
}
],
"title":[
"Skateboarding"
],
"otherTitleInformation":[
"Ethnographie einer urbanen Praxis"
],
"creator":[
{
"@id":"http://d-nb.info/gnd/103058788",
"label":"Peters, Christian"
}
],
"subject":[
{
"@id":"http://d-nb.info/gnd/4181628-6",
"label":"Skateboardfahren"
},
{
"@id":"http://d-nb.info/gnd/4031483-2",
"label":"Köln"
}
]
}
Though this is valid JSON it isn't valid JSON-LD, see [0]. This is
because the @type – whether aliased to "type" or not – keyword doesn't
allow objects but only takes "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"
[1]. See also the section 5.4 Specifying the Type in the JSON-LD spec. [2]
We noticed that the "side car" approach works when instead of "@type"
another name – e.g. "type" – is used which is mapped to rdf:type in the
context. Example:
{
"@context":{
"label":"http://www.w3.org/2000/01/rdf-schema#label",
"type":{
"@id":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
"@type":"@id"
}
},
"@id":"http://lobid.org/resource/HT018881872",
"type":[
{
"@id":"http://purl.org/ontology/bibo/Book",
"label":"Buch"
},
{
"@id":"http://purl.org/ontology/bibo/Thesis",
"label":"Abschlussarbeit"
}
]
}
There is no error in the JSON-LD playground for this and the RDF outcome
looks as expected. [3] We are now thinking about using the key "type"
mapped to rdf:type for associating a type with a node and only using
"@type" in the JSON-LD context and for indicating a value type.
In the recent thread on this list about the "@type" keyword and framing
[4] it became clear that "@type" is necessary for framing so this is an
obvious drawback. As we are building our JSON-LD structure without
framing, mapping "type" to rdf:type wouldn't be a problem in this
regard. Are there any other reasons from refraining from this or any
arguments for another approach?
All the best
Adrian
[0] http://tinyurl.com/jfdrdux
[1] https://www.w3.org/TR/json-ld/#node-objects
[2] https://www.w3.org/TR/json-ld/#specifying-the-type
[3] http://tinyurl.com/jkezgm8
[4]
https://lists.w3.org/Archives/Public/public-linked-json/2016Feb/0008.html
Received on Friday, 19 February 2016 15:18:46 UTC