- From: Josh Mandel <Joshua.Mandel@childrens.harvard.edu>
- Date: Fri, 8 Aug 2014 09:02:18 -0700
- To: Julian Everett <julianjeverett@yahoo.com>
- Cc: Linked JSON <public-linked-json@w3.org>
- Message-ID: <CANSMLKGuizs8JDDTuLgHfzyf86ZKya9ddLCs_OhH+WDpX77n=Q@mail.gmail.com>
Hi Julia, I just fiddled with the playground and also couldn't make this work with today's framing algorithm. I believe it relates back to an issue I filed here <https://github.com/json-ld/json-ld.org/issues/119> (still open, and explicitly mentioned from the draft framing spec <http://json-ld.org/spec/latest/json-ld-framing/#remove-embed>). -Josh On Fri, Aug 8, 2014 at 3:05 AM, Julian Everett <julianjeverett@yahoo.com> wrote: > Hi there, > > I have a message format graph which contains multiple object references to > the same resource. Minimally extending the jsonld playground framed/library > example, a similar graph might look something like this (where a bookmark > predicate has been added which also points to the introduction chapter): > > { > "@context": { > "dc": "http://purl.org/dc/elements/1.1/", > "ex": "http://example.org/vocab#", > "xsd": "http://www.w3.org/2001/XMLSchema#", > "ex:contains": { > "@type": "@id" > }, > "ex:bookmark": { > "@type": "@id" > } > }, > "@graph": [ > { > "@id": "http://example.org/library", > "@type": "ex:Library", > "ex:contains": "http://example.org/library/the-republic" > }, > { > "@id": "http://example.org/library/the-republic", > "@type": "ex:Book", > "dc:creator": "Plato", > "dc:title": "The Republic", > "ex:contains": "http://example.org/library/the-republic#introduction > ", > "ex:bookmark": "http://example.org/library/the-republic#introduction > " > }, > { > "@id": "http://example.org/library/the-republic#introduction", > "@type": "ex:Chapter", > "dc:description": "An introductory chapter on The Republic.", > "dc:title": "The Introduction" > } > ] > } > > Modifying the frame to support this: > > { > "@context": { > "dc": "http://purl.org/dc/elements/1.1/", > "ex": "http://example.org/vocab#" > }, > "@type": "ex:Library", > "ex:contains": { > "@type": "ex:Book", > "ex:contains": { > "@type": "ex:Chapter" > }, > "ex:bookmark": { > "@type": "ex:Chapter" > } > } > } > > results in the following output, where there is one instance of the > Chapter (i.e. ex:contains) and one reference to the instance of the Chapter > (i.e. ex:bookmark) : > > { > "@context": { > "dc": "http://purl.org/dc/elements/1.1/", > "ex": "http://example.org/vocab#" > }, > "@graph": [ > { > "@id": "http://example.org/library", > "@type": "ex:Library", > "ex:contains": { > "@id": "http://example.org/library/the-republic", > "@type": "ex:Book", > "ex:bookmark": { > "@id": "http://example.org/library/the-republic#introduction" > }, > "ex:contains": { > "@id": "http://example.org/library/the-republic#introduction", > "@type": "ex:Chapter", > "dc:description": "An introductory chapter on The Republic.", > "dc:title": "The Introduction" > }, > "dc:creator": "Plato", > "dc:title": "The Republic" > } > } > ] > } > > I understand the logic of this behaviour, that there is one input instance > of the entity and hence one instance in the output. However for the > purposes of API consumer friendliness (particularly as my frame nesting is > multi-level, and would hence otherwise result in the need for client-side > tree traversals) what I really need is "frame by value" semantics that > would generate: > > { > "@context": { > "dc": "http://purl.org/dc/elements/1.1/", > "ex": "http://example.org/vocab#" > }, > "@graph": [ > { > "@id": "http://example.org/library", > "@type": "ex:Library", > "ex:contains": { > "@id": "http://example.org/library/the-republic", > "@type": "ex:Book", > "ex:bookmark": { > "@id": "http://example.org/library/the-republic#introduction", > "@type": "ex:Chapter", > "dc:description": "An introductory chapter on The Republic.", > "dc:title": "The Introduction" > }, > "ex:contains": { > "@id": "http://example.org/library/the-republic#introduction", > "@type": "ex:Chapter", > "dc:description": "An introductory chapter on The Republic.", > "dc:title": "The Introduction" > }, > "dc:creator": "Plato", > "dc:title": "The Republic" > } > } > ] > } > > Is such output achievable via framing please, or do I need to add some > kind of post-framing graph denormalisation step? > > thanks a lot > > Julian > > >
Received on Friday, 8 August 2014 16:03:06 UTC