- From: Ruben Verborgh <ruben.verborgh@ugent.be>
- Date: Fri, 25 Apr 2014 18:57:11 +0200
- To: Markus Lanthaler <markus.lanthaler@gmx.net>
- Cc: public-hydra@w3.org, Gregg Kellogg <gregg@greggkellogg.net>
Hi Markus, > We are starting to split hairs here but I would really like to understand your reasoning. Yeah—I really don't mean to nag about details :-) > So, forgetting about totalItems and firstPage/lastPage for the moment, would > you agree in > > :pc1 hydra:member :a, :b > hydra:nextPage :pc2 > :pc2 hydra:member :c, :d > hydra:previousPage :pc2 > > both :pc1 and :pc2 are paged collections? If not, why not? Where's the > difference to the list above? Okay but you need to treat them on the same level. We're not talking about the collection as a list of items here, but about the collection as a list of pages. So the list that corresponds to your example above is: :l1 rdf:first :pc1; rdf:next :l2. :l2 rdf:first :pc2; rdf:next rdf:nil. This is a list of pages. And each page could be a list of members, for that matter: :pc1 rdf:first :a; rdf:next :pc1b. :pc1b rdf:first :b; rdf:next rdf:nil. But look going to back to the first fragment: :l1 is the collection, :pc1 is the page (= item of that collection). I can identify them separately. Note in general how rdf:first relates a collection to an item (and not an item to an item, as you relate a page to a page). For example, the list [p1, p2, p3] is: :k1 rdf:first :p1, rdf:next :k2. :k2 rdf:first :p2, rdf:next :k3. :k3 rdf:first :p3, rdf:next rdf:nil. Note how rdf:first relates the whole (:k1) to the page (:p1), not a page to a page (i.e., not :p1 rdf:first :p2). Hydra, by contrast, relates a page to a page with hydra:first. >> None are both [a list node and an item]. > > Same for collections IMO. Sorry that I keep digging up old quotes :-) But earlier, you said: >>> Do you think we need to >>> separate a PagedCollection into two things, namely a Collection (with links >>> to first/last page) and individual pages (with next/prev links) or is it >>> clear enough if we mingle all of those links into a PagedCollection as we >>> currently do? So if you say "mingle", this somehow implies that a PagedCollection is both, right? So both a page, and both the collection? Because you said that, in order to refer to a collection, we could just refer to the first page. So does that make them the same thing? > Given that I just found out that we use the term list node for different > terms, I would say clearly a). For me it's really the same as a > (double-linked) list. So a PagedCollection is a) the sum of all pages of a collection. But then follows that <foo?page=2> and <foo?page=5> are the same thing, because both are the sum of all pages the collection <foo>. Right? And hence, from <foo?page=2> hydra:nextPage <foo?page=3> follows that <foo?page=5> hydra:nextPage <foo?page=3>. And that's a contradiction, since nextPage should be functional, and <foo?page=5> already has nextPage <foo?page=6>. > Just out of curiosity, I checked what LDP is doing. > They are basically doing the same as Hydra: > > https://dvcs.w3.org/hg/ldpwg/raw-file/default/ldp-paging.html#terms > > Perhaps you should also raise an issue for LDP then giving that they are > close to completing their work!? I have a feeling that there will be a lengthy thread about paging somewhere on the LDP list. Maybe after we have finally decided for Hydra, we could post our solution for reference, together with the rationale. >>>> Seems to make more sense than >>>> :x hydra:firstPage :p1 >>>> which does *not* mean >>>> "here is the first page of x" >>>> but >>>> "here is the first page of the thing that :x also is a page of" >>> >>> I don't really see a problem with the latter. >> >> The thing. What is the thing? > > You wrote that sentence :-) Yeah, in reply to your "I don't really see a problem" :-) You say you don't see a problem with "here is the first page of the thing that :x also is a page of" I say that the problem I see is What is the thing? It's not clear what that thing is. >> Just because you don't mention it, doesn't mean it doesn't exist. >> It clearly does-hiding it doesn't simplify things. > > I'm afraid this is getting philosophical now and I don't want us to go there. Should we take it to semantic-web or Twitter instead? ;-) More pragmatic translation: I think the current hybrid model doesn't simplify complexity but hides it. >>> Just as with lists, you can simply point to the first page. >> >> No. With the list, I can point to item1 and list1; >> with the current PagedCollection, I can point to node1 >> (which would be a hybrid of item1 and list1). > > Sorry, I don't follow. My bad. With the list, I can point to the list and the page separately. From the example above (a list of pages): :l1 rdf:first :pc1; rdf:next :l2. :l2 rdf:first :pc2; rdf:next rdf:nil. I can point to :l1, which is the list of pages 1 and 2. I can point to :pc1 and :pc2, which are the pages themselves. The current Hydra paging system does not let me do that. Best, Ruben
Received on Friday, 25 April 2014 16:57:47 UTC