- From: Aymeric Brisse <aymeric.brisse@gmail.com>
- Date: Thu, 25 Aug 2016 13:02:31 +0200
- To: Martynas Jusevičius <martynas@graphity.org>
- Cc: Hydra <public-hydra@w3.org>, Gregg Kellogg <gregg@greggkellogg.net>, JSON-LD CG <public-linked-json@w3.org>, Dave Longley <dlongley@digitalbazaar.com>
- Message-ID: <CANURzhg=b7=QhkbOR2O9u9bk0WVcHiXmCzTwT6-LLH8Dp-hJcA@mail.gmail.com>
Obviously but the @metadata must be supported by the JSON-LD before working on the preprocessor On Aug 25, 2016 12:42, "Martynas Jusevičius" <martynas@graphity.org> wrote: > How can pagination be a feature of a format like JSON-LD? It is a > feature of the protocol (that delivers the format). > > On Thu, Aug 25, 2016 at 12:30 PM, Aymeric Brisse > <aymeric.brisse@gmail.com> wrote: > > My comments inline: > > > > On Thu, Aug 25, 2016 at 1:55 AM, Gregg Kellogg <gregg@greggkellogg.net> > > wrote: > >> > >> The Hydra CG is working on issues such as pagination [1], which is more > >> than just a JSON-LD issue. As with other things in Hydra, this remains a > >> work in progress. > > > > > > 1/ It seems to focus only on paginating top-items, which is only a small > > part of the problem like I said in my previous mail. > > 2/ Moreover the idea on the whole page is to basically add an extra > > top-level "Collection", which is mixing Form and Substance. > > > >> > >> Also, the Linked Data Platform has a paging spec [2], but this relies on > >> using HTTP headers to communicate paging (and other) metadata. It is, of > >> course, consistent with the principles of the Linked Data Platform, > which > >> does support JSON-LD in addition to Turtle. > > > > > > 1/ max-triple-count and max-kbyte-count are quite technical and focus > more > > on the data layer than the information layer. > > 2/ max-member-count only works for top-level items. > > > >> I think there is also potential to use schema.org ItemLists in > combination > >> with the Role class to create in indirect relationship similar to Hydra > >> Collections, but there hasn’t been sufficient interest to pick this up. > >> > >> Paging remains on open item in the JSON-LD API Best Practices document > >> [3], which I’ll get back to sometime. > > > > > > Right. I really believe in the shifting of RESTful APIs to more flexible > > APIs using technos like GraphQL or JSON Graph. JSON-LD is one of the best > > format of serialization for that but some features are clearly missing > like > > pagination that really needs to be filled to challenge those technos. > > > > Since JSON-LD is mandatory for me to express semantically the concepts, I > > guess I would add my "@metadata" field with the merging solution until > then. > > Please let me know if I can help in any way with some > specifications/inputs > > as a developer "in the field". > > > > Cheers! > > > >> > >> Gregg Kellogg > >> gregg@greggkellogg.net > >> > >> [1] https://www.w3.org/community/hydra/wiki/Pagination > >> [2] http://www.w3.org/TR/ldp-paging/ > >> [3] http://json-ld.org/spec/latest/json-ld-api-best-practices/ > >> > >> On Aug 24, 2016, at 9:28 AM, Aymeric Brisse <aymeric.brisse@gmail.com> > >> wrote: > >> > >> Hello guys, > >> > >> Another week, another question :) > >> > >> I was thinking about how a JSON-LD API could properly manage pagination > >> and was wondering if you had some thoughts about it. I am not talking > about > >> the top level pagination (a POST /search or a GET /collection) that can > be > >> easily supported by either adding an extra top-root attribute "data" or > API > >> headers, but the pagination at any level, like relay does with graphQL. > >> > >> 1/ I could add some levels to describe any list using schema:ItemList, > but > >> I really don't like to mix both the substance (the ontology) and the > form > >> (the API attributes). To be valid, that would require to modify all the > >> range object/datatype properties described in an ontology from X (the > >> current value) to X union schema:ItemList which would be a mistake IMHO. > >> > >> 2/ I could add a node "@metadata" as a sibling of "@graph" and > "@context". > >> That node "@metadata" would be ignored by the JSON-LD processor but not > by > >> the API user and it would contain some pagination information (like > cursors, > >> total_count, etc.) added by the API. When paginating an embedded > relation, I > >> could replace the array values of that relation by a whole new { > "@graph", > >> "@metadata" } structure. Exactly like a merge of multiple JSON-LD > documents. > >> The JSON-LD processor would treat it as a blank node but the developper > will > >> be able to extract that part to process it like a new graph document. > >> > >> See for example > >> http://json-ld.org/playground/#/gist/12993b833f99d8ee97e2df0e1a678036 > in the > >> JSON-LD input text area. I have added the @metadata at the top level and > >> used the system described for the relation pmcore:relB. > >> > >> Any advice/feedback? > >> > >> On Thu, Aug 18, 2016 at 3:23 PM, Aymeric Brisse < > aymeric.brisse@gmail.com> > >> wrote: > >>> > >>> Indeed I was using the official spec > >>> (http://json-ld.org/spec/latest/json-ld-framing/) and didn't find how > to use > >>> it, hence my email. > >>> > >>> Thanks Dave for the link it works well on the JSON-LD playground (btw > the > >>> autocompletion in the JSON-LD Frame input does not display the @embed > >>> attribute). > >>> > >>> Again guys thanks for your replies and happy to see that JSON-LD rocks > by > >>> fitting all the needs we have! :) > >>> > >>> On Wed, Aug 17, 2016 at 11:04 PM, Dave Longley > >>> <dlongley@digitalbazaar.com> wrote: > >>>> > >>>> On 08/17/2016 04:43 PM, Gregg Kellogg wrote: > >>>>> > >>>>> > >>>>> Gregg Kellogg > >>>>> gregg@greggkellogg.net > >>>>> > >>>>>> On Aug 17, 2016, at 12:50 PM, Dave Longley > >>>>>> <dlongley@digitalbazaar.com> wrote: > >>>>>> > >>>>>> On 08/17/2016 12:28 PM, Aymeric Brisse wrote: > >>>>>>> > >>>>>>> Hello Gregg & Dave, > >>>>>>> > >>>>>>> I am currently dealing with another problem. Let's say 2 resources > >>>>>>> are linked together by more than 1 predicate. > >>>>>>> > >>>>>>> As a JSON API developer that wants to return a tree and not a graph > >>>>>>> I expect that the following LD framed graph... > >>>>>>> > >>>>>>> [snip] > >>>>>>> > >>>>>>> ... to duplicate some parts of it if needed > >>>>>>> > >>>>>>> That way the developper don't have to deal with an identitymap > >>>>>>> pattern just to parse the JSON, meaning that he can access directly > >>>>>>> to the hash object["pmcore:relB"]["rdfs:label"]["@value"] > >>>>>>> > >>>>>>> How can it be achieved in an automatic manner? > >>>>>> > >>>>>> > >>>>>> The JavaScript, Python, and PHP framing implementations support > >>>>>> several > >>>>>> framing "embed" options: > >>>>>> > >>>>>> @always - always embed (nest) nodes except when a circular reference > >>>>>> is > >>>>>> encountered, even if it duplicates data > >>>>>> > >>>>>> @last - (the default) only embed the last occurrence of a particular > >>>>>> node so that the data is not modified via duplication > >>>>>> > >>>>>> @never - never embed nodes, always use simple references > >>>>>> > >>>>>> Some more discussion is here: > >>>>>> > >>>>>> https://github.com/json-ld/json-ld.org/issues/377 > >>>>>> > >>>>>> The default embed option can be changed at the API level by passing > in > >>>>>> a flag to the `frame` call. The embed option can also be set at a > >>>>>> more granular level within the frame itself. I've done this on the > >>>>>> playground using your example data and the "@always" option, to > >>>>>> produce > >>>>>> what I believe is the desired output: > >>>>>> > >>>>>> http://json-ld.org/playground/#/gist/fa39b164da8dd39e2e9c9991d8392e > fb > >>>>>> > >>>>>> I don't know if the Ruby implementation supports these features yet. > >>>>> > >>>>> > >>>>> I believe I support all of the embedding options that Dave’s does. > >>>>> > >>>>> BTW, on my short-term list is to try to update the Framing spec based > >>>>> on this common behavior. > >>>> > >>>> > >>>> That would be awesome and much appreciated, Gregg. I can review and > >>>> tweak changes at some point. > >>>> > >>>> > >>>> > >>>> -- > >>>> Dave Longley > >>>> CTO > >>>> Digital Bazaar, Inc. > >>>> http://digitalbazaar.com > >>> > >>> > >> > >> > > >
Received on Thursday, 25 August 2016 11:03:03 UTC