Re: relate a Collection and a PagedCollection

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