- From: Simeon Warner <simeon.warner@gmail.com>
- Date: Wed, 26 Oct 2016 04:59:41 -0400
- To: "'JSON-LD CG'" <public-linked-json@w3.org>
Hi all, I think framing is an important aspect of JSON-LD and I agree with the introductory comment "Developers typically work with trees, represented as JSON objects. While mapping a graph to a tree can be done, the layout of the end result must be specified in advance. A Frame can be used by a developer on a JSON-LD document to specify a deterministic layout for a graph." [1]. I would add that not only is a deterministic layout important, this layout should be as simple as possible (but no simpler ;-) ). We should expect to cater for JSON-only use of the data extracted from JSON-LD systems, and for a developer working with JSON: { "@context": "http://iiif.io/api/image/2/context.json", "@id": "http://example.org/r1", "formats": [ "jpg", "png" ], "height": 2000, "width": 2000 } is much preferable to: { "@context": "http://iiif.io/api/image/2/context.json", "@graph": [ { "@id": "http://example.org/r1", "formats": [ "jpg", "png" ], "height": 2000, "width": 2000 } ] } To access `width` it is much nicer to write `data.width` than `data["@graph"][0].width`. I found some discussion of this issue in 2013 [3] and later in that thread it seems that the pattern "agreed" upon [4] was to frame and then compact again to remove the `@graph` construct in cases where one knows that it can be done: > compact( frame( flat, frame), context) > > produces the desired output :) (the rest of that thread went on to discuss bnode handling leading to issue [5]). I think that there should be a flag/keyword in the frame to control whether `@graph` is artificially added in the second to last step of the framing algorithm [2]: > If compacted results does not have a top-level @graph keyword, or if its value is not an array, modify compacted results to place the non @context properties of compacted results into a dictionary contained within the array value of @graph. It seems ugly and wasteful to have to run compaction (or some kludge doing just the needed transformation) in order to remove the `@graph` construct. Cheers, Simeon [1] http://json-ld.org/spec/latest/json-ld-framing/#introduction [2] http://json-ld.org/spec/latest/json-ld-framing/#framing-algorithm [3] https://lists.w3.org/Archives/Public/public-linked-json/2013Jul/0143.html [4] https://lists.w3.org/Archives/Public/public-linked-json/2013Aug/0001.html [5] https://github.com/json-ld/json-ld.org/issues/293
Received on Wednesday, 26 October 2016 09:01:44 UTC