- From: elf Pavlik <perpetual-tripper@wwelves.org>
- Date: Tue, 13 Oct 2015 11:00:16 +0200
- To: Markus Lanthaler <markus.lanthaler@gmx.net>
- CC: public-hydra@w3.org, James M Snell <jasnell@gmail.com>, public-ldpnext@w3.org, Robert Sanderson <azaroth42@gmail.com>
On 10/11/2015 10:52 PM, Markus Lanthaler wrote: > Hi folks, > > As announced, I would like to finalize the collection design as the next > step. We made great progress on collections in general a couple of months > ago but got stuck when it came to pagination. We discussed a number of > proposals [1] but couldn't find a solution so far that everyone could live > with. > > I spend quite some time thinking about this and looking at it from different > angles and think I found an approach we haven't discussed yet. The main > difference to the other proposals is to look at pages of a collection as > specific *views* on a single underlying collection instead of thinking of > the collection as the sum of its pages. This either might sound like a minor > detail or, depending on where you are coming from, as a strange way of > looking at things. I think, however, that is a semantically sound approach > that has some nice advantages over the alternatives considered so far - not > the least that the approach nicely generalizes to other use cases. > > The representation of a specific view on the collection could look somewhat > like this: > > { > "@id": "http://api.example.com/an-issue/comments", > "@type": "Collection", > "member": [ ... ], > "view": { > "@id": "/an-issue/comments?page=3", > "@type": "PartialCollectionView", > "first": "/an-issue/comments", > "previous": "/an-issue/comments?page=2", > "next": "/an-issue/comments?page=4", > "last": "/an-issue/comments?page=498", > } > } > > Please note that the collection members are directly associated to the > collection itself, not the view. This means that there's no need to > separately tie back each member of the collection to the collection itself. > A page is a specific view on the collection and has its own URL. That means > that it is possible to point to both the complete collection as well as a > specific view. It also opens the door to define views which are defined in > terms of an offset and limit instead of a server defined "page". > > I deliberately didn't use "page" or "pagination" in the name of the type of > this view (PartialCollectionView). The reasoning behind this is the > discussion we had about the meaning of "first" links on a page (what do they > mean?). I think talking about views on something acknowledges the fact they > have to been seen in the larger context and they do have "knowledge" > thereof. As such, I don't see a problem that they refer to the > first/previous/next/last partial view of a collection. The first and last > link are obviously optional. The first view can be obtained by going to the > collection itself. The last view has been reached when there's no more next > link. > > Before we start discussing the naming of these concepts, I would like to get > a sense of how the overall approach and the concepts it uses is perceived. > Does it make sense to you? Is it easily understandable? Is anything missing? > > > Cheers, > Markus > > [1] http://www.w3.org/community/hydra/wiki/Pagination > -- > Markus Lanthaler > @markuslanthaler > I like it! I see it nicely separating concerns of modeling data and modeling API. If as:Collection gets standardized (TR) without paging, would you consider reusing it and keep Hydra focused on terms only describing data access (read/write). I also consider proposing addition to as:Collection which adds semantics similar to ldp:DirectContainer, covering same need as discussed hydra:manages https://www.w3.org/community/hydra/wiki/Collection_Design Since I see such collection based inferencing related to modeling of the underlying data (creating *grouping of entities* with distinct URI denoting it), not so much access to this data (API) I don't know if it really should stay included in Hydra spec. To stay honest I would even see place for small and focused spec which defines modeling of such collections and all the related inferences. To my understanding ldp:DirectContainer and ldp:IndirectContainer define specializations of RDF Source which seems again concern of an API not the underlying data which we want to access. "any web document that has an RDF-bearing representation may be considered an RDF source" http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-source Would TFP would also use paging as described here? If so, I think that API spec(s) which belong to Social WG deliverables, as well as ones belonging to Annotation WG deliverables could also simply build on that! https://github.com/w3c-social/Social-APIs-Brainstorming/wiki/LDP,-Hydra,-LDF#collections Cheers!
Received on Tuesday, 13 October 2015 09:00:30 UTC