- From: Markus Lanthaler <markus.lanthaler@gmx.net>
- Date: Mon, 18 Nov 2013 14:56:27 +0100
- To: "'Huynh T.D.'" <tdh@ecs.soton.ac.uk>, <public-linked-json@w3.org>
Hi, On Thursday, November 14, 2013 11:27 AM, Huynh T.D. wrote: > Hello, > > I've just rediscovered JSON-LD yesterday (after about 2 years) and I've > been very impressed with its progress. Glad to hear that. > Playing with my existing JSON, I found the following compact pattern that > I have not been able to describe using the current specs. > > { > "Type1": { > // A map of Type1 object IDs > "id1": { > // Properties of id1 > "name": "some value", > }, > "id1": { > // Properties of id2 > }, > }, > "Type2": { > // another map of IDs here > } > } Right, the index can be only one level deep. You could, however combine your indexes to flatten the JSON. Something like { "Type1-id1": { // Properties of id1 "name": "some value", }, "Type1-id2": { // Properties of id2 }, ... } > For example: > { > "ConferencePaper": { > "Huynh2013": { > "title": "some value", > }, > "Huynh2012": { > }, > }, > "JournalPaper": { > } > } > > Essentially, there are two things that I want to describe using the > pattern: > > 1. "Huynh2013" and "Huynh2012" are identifiers of some objects, and > 2. they are of type ConferencePaper (i.e. rdf:type ConferencePaper). > > Is it possible to describe the above pattern with the current spec? Yes, but not as concise as in your example. You would need to do something like: { "@context": { "ex": "http://example.com/vocab#", "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "paperTypes": { "@id": "ex:paperTypes", "@container": "@index" }, "papers": { "@reverse": "rdf:type", "@container": "@index" }, "title": "ex:title" }, "paperTypes": { "ConferencePaper": { "@id": "ex:ConferencePaper", "papers": { "Huynh2013": { "title": "Huynh2013 conf. paper" }, "Huynh2012": { "title": "Huynh2012 conf. paper" } } }, "JournalPaper": { "@id": "ex:JournalPaper", "papers": { "Huynh2011": { "title": "Huynh2011 journal paper" } } } } } Which is equal to the following triples: _:b0 ex:paperTypes ex:ConferencePaper, ex:JournalPaper . _:b1 rdf:type ex:ConferencePaper ; ex:title "Huynh2012 conf. paper" . _:b2 rdf:type ex:ConferencePaper ; ex:title "Huynh2013 conf. paper" . _:b3 rdf:type ex:vocab#JournalPaper ; ex:title "Huynh2011 journal paper" . I think that's what you want, right? > I found the Data Indexing feature > (http://json-ld.org/spec/latest/json-ld/#data-indexing) can help a bit > with (1), but if I have to write "Huynh2013": { "@id": "Huynh2013", ... }, > it is unnecessarily repetitive, I think. Yeah, unless you can live with blank nodes you have to. We to not support indexing for things like @id in this version of JSON-LD but may add support for it in a future version. > I also found this email > http://lists.w3.org/Archives/Public/public-linked-json/2013Nov/0003.html , > which is related to (2), but the @reverse solution does not work in this > case. A variation works, see above. You have to introduce some repetition though to make it work. HTH, Markus -- Markus Lanthaler @markuslanthaler
Received on Monday, 18 November 2013 13:57:01 UTC