- From: Markus Lanthaler <markus.lanthaler@gmx.net>
- Date: Fri, 25 Apr 2014 18:32:01 +0200
- To: "'Ruben Verborgh'" <ruben.verborgh@ugent.be>
- Cc: <public-hydra@w3.org>, "'Gregg Kellogg'" <gregg@greggkellogg.net>
On Thursday, April 24, 2014 5:46 PM, Ruben Verborgh wrote: > > Let me answer with a question: What is an rdf:List? > > a) the sum of all list nodes (the things with rdf:first/rdf:rest properties) > > b) a single list node > > c) both > > a), no doubt about that. Example: > > :l1 rdf:first :a; > rdf:next :l2. > :l2 rdf:first :b; > rdf:next rdf:nil. > > :l1 is a list. :l2 is a list (and a sublist of :l2). > :nil is a list (and a sublist of :l1 and :l2). We are starting to split hairs here but I would really like to understand your reasoning. 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? > :a is a list node. > :b is a list node. OK, I call them list items to save the term node for the blank nodes, but it doesn't matter at all. > None are both. Same for collections IMO. We argue about the distinction between pages (:l1/:pc1) and the complete collection (list). Neither Hydra PagedCollections nor rdf:Lists express that entity explicitly. > Could you still say whether PageCollection is a/b/c? 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. > >> That's where blank nodes come in handy: > >> :p5 hydra:pageOf [ hydra:firstPage :p1 ]. > >> meaning > >> page 5 is a page of something, here is its first page > > > > I don't see how this improves things.. quite the contrary actually. > > Well, for starters, no troubles in explaining this ;-) > It corresponds to the real world. Except that people usually have problems grasping blank nodes. But apart from that, you are right that separating a PagedCollection into a Collection and Pages is quite trivial to explain and understand. > > I do agree though that from a theoretical point of view this is more precise. On > > the Web, however, theoretical pureness rarely wins. Pragmatism and > > simplicity typically does. > > The pragmatism here is that it corresponds to real collections; > you don't need theoretically abstract concepts that are a hybrid of a collection and a > member. Is it really that abstract? It is a pattern that is so often seen that I would argue most developers are already familiar with. 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!? > > Also, if you use blank nodes for this, what's the advantage? You won't even > > know anymore whether different pages belong to the same collection. > > Yes you do: > >> :p5 hydra:pageOf [ hydra:firstPage :p1 ]. > > :p5 and :p1 belong to the same collection > because hydra:pageOf and hydra:firstPage are functional. Good point! > >> 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 :-) > 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. [...] > >> With the hybrid PagedCollection that acts both as a page and a collection, > >> I can point to neither. > > > > 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. > In all seriousness, the important thing for me is this: > please allow the separate identification of collections and pages. > No matter how you define (the domain of) firstPage and lastPage, > at least allow us to say things about the collection, > which are different than the things we want to say about a page. OK. I was going to ask how this should look like in a concrete Web API according to you, but I see Gregg just posted a mail that covers that so I'll jump onto that thread instead. -- Markus Lanthaler @markuslanthaler
Received on Friday, 25 April 2014 16:32:32 UTC