- From: Henry Andrews <henry@cloudflare.com>
- Date: Tue, 23 May 2017 06:59:09 -0700
- To: Daniel Smedegaard Buus <danielbuus@gmail.com>
- Cc: james anderson <james@dydra.com>, Linked JSON <public-linked-json@w3.org>
- Message-ID: <CANp5f1Om7UVHPweBF25WPqQ2X3ZcjcMC8Li1xHiJ2xzmZwp8Eg@mail.gmail.com>
This may not be the most popular suggestion on a JSON-LD list, but there's always JSON Hyper-Schema :-) I've seen at least one group (W3C Web of Things) looking at using both JSON-LD and JSON Schema, although they are not looking only at validation, not Hyper-Schema. But JSON Hyper-Schema doesn't care what your collection and pagination look like, it just provides tools to express what links are available. thanks, -henry On Mon, May 22, 2017 at 11:02 PM, Daniel Smedegaard Buus < danielbuus@gmail.com> wrote: > Okay, you guys are using a lot of slightly confusing terminology :D > > What I don't like about the Hydra approach is that it encapsulates my > type with its own "Collection" type, so instead of having, say, a > property "users" which is of @type "mycontext:User", it is now the > generic hydra:Collection @type, which then can contain a > "hydra:member" property where each item in it has to declare their > actual type of "mycontext:User". > > Not only does it obfuscate the context from expressing exactly what > type a property will contain, it also loosens the contract to the > consumer, allowing me as a producer to throw anything in there (the > generic hydra:Collection). At least AFAICT, but as I said, I'm two > weeks in ;) I'd much rather be able to "augment" a graph with a couple > of extra meta properties which would contain this pagination data. But > as I understand it, any context "extras" that go into a @graph node > apply to items in the graph, not to the graph... > > When I started out two weeks back, I also briefly considered the Range > header, but there are a couple of reasons why I don't want to go that > route: > 1) The Range header has a completely different meaning > 2) I have much more information that I want to convey and consume, > such as number of pages, links to pages, sorting, etc., and they don't > fit in there either. > 3) HTTP headers are, well, HTTP-gnostic. I'd like my API to be > transport-agnostic. And apart from that, putting pagination > information in a header transfers state from the document to the > transport layer, and I really want the API to offer REST in and of > itself, and in all possible transport scenarios, be it HTTP, RPC, Unix > sockets or carrier pigeons :D. > > Am I correct in assuming that as of the current JSON-LD specification > goes, I cannot "augment" something like a @graph to "put extra stuff > in there, like pagination metadata" without having to put it onto > items in the graph? > > I'll have another look at the ActivityStream concept, but it's not so > much *how* I should paginate data as much as it is how I can avoid any > approach "messing" with my contexts. I realize that JSON-LD is more > about linking data than it is about schemafying your data, but the > schema part of JSON-LD is fantastic IMHO. I love that right now, I can > tell our outhouse iOS developers to pull the contexts, and it's > immediately apparent what they can expect to get. User.comments is of > type mycontext:Comment. Easy. > > If anyone sees any way that I can keep my contexts as accurate as they > are now, but be able to add pagination metadata to a document, I'd > love the input :) (For one, I'd love to see an example of how those > ActivityStream concept have been incorporated into a JSON-LD > document!) > > Thanks again, all, for all your thoughts! > > Daniel > > -- - *Henry Andrews* | Systems Engineer henry@cloudflare.com <https://www.cloudflare.com/> 1 888 99 FLARE | www.cloudflare.com -
Received on Tuesday, 23 May 2017 14:00:04 UTC