- 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