- From: John Arwe <johnarwe@us.ibm.com>
- Date: Tue, 10 Jun 2014 14:46:19 -0400
- To: "public-ldp-wg@w3.org Working Group" <public-ldp-wg@w3.org>
- Message-ID: <OF44380EE2.AAF2E087-ON85257CF3.00599D71-85257CF3.00671EE6@us.ibm.com>
Moving this on-list, since to the best of everyone's ability/memory
amongst the progenitors and editors the overall intent has been captured
to first order.
> This document describes...
I tweaked it very modestly, probably not enough to get you happy ... model
> protocol basically. "access portions of state" sounds like range
requests; "that impl this spec" seems superfluous. But frankly I'd rather
concentrate on getting the normative meat straight first and revisit this
later.
Not allergic to Modules, although as a reader of HTML4 (?) modules, YIKES
was that impenetrable.
> too large to fit in a single HTTP response
tweaked to give an example. The limits come from implementations (memory
etc), not HTTP AFAIK.
> Single-page resource ...terribly confusing name. ... Partial page?
Sub-page? Sequence-page? Traversal Page? ... All of those would be
much better.
I hate naming generally. Let's raise the issue/wiki/whatever, get
consensus, change the drafts Once more.
> LDP Paging Clients ... affordances missing, ... clients must ask for
paging
Issue-worthy. Personally I don't see the difference between this and
ignoring an Accept header, and (so far) the Net has not ended due to the
latter - despite it breaking some clients, with zero doubt. But maybe I'm
missing something in your argument. I wonder if you're looking for a
"stronger than 'both use HTTP'" level of interop guarantee.
> 4.1.1
Well there is the very next line in the draft: TODO: Confirm this client
MUST for server-initiated paging
In other words, even in this draft's red-headed-step-child current state
Steve and/or I questioned it too.
> read committed isolation ...
TallTed has vocally asked for that kind of material more than once; IIRC
some related proposals were -1'd. Let's raise an issue, get some
consensus, and change it One last time.
> 333
Since the TAG discussions have matured a bit, I tweaked it quickly to 2NN
per item 2 in their draft comments so at least the class will match
current thinking.
> HTTP dialog trace, showing the actual headers
As Steve and I mentioned a week or two ago on the weekly call, we'd
already concluded that was better for LDP proper and the intent was to be
consistent. In the specific case of Paging, I've started noting
html-comment level todos but I want to take ONE pass through them AFTER we
have the bulk of the normative material agreed to. Was not about to
ripple through those changes until you said that your proposal was
essentially captured.
> Do we say how jpg and html and zip files can be paged...? Are we
suggesting they can be?
No, and we're allowing for the possibility that some other/later spec
might define how paging works interoperably for non-LDP-RSs. That was a
WG consensus at the time we split it off, I've had to check that myself
when doing some of the initial drafting.
> 5.2.3.8 LDP ..., but SHOULD only add pages to the end of a sequence. SH:
Doesn't that contradict ordering?
This was added based on WG discussions (Ashok/TallTed IIRC) when we were
focused more on "stability" of traversal and all the snapshot stuff was
floating around. I agree that certain kinds of ordered containers (like
alphabetic sort on some key under client control) would either need to not
implement this Should, or cease advertising themselves as ordered. Other
kinds of ordering (change log/anything time-ordered) plays fine with it,
so they're not automatically in opposition.
> 5.2.3.11/...13
Each is only for one kind of traversal. We require clients to support
both traversal directions.
Squinting, I don't see that we say that any given page-sequence Must be
either forw or backward-linked, although I *thought* we had agreed to
that. Is that the way others remember it?
> 5.2.3.15 type=ldp:Page header ... This is one mechanism by which clients
know ... I don't think that's true. The client knows because...
As stated, it's definitionally true (one way). I think you're arguing
that it's not the only way, so we're not being minimal.
You bring up how the client obtained the link; given that links can be
passed around freely and/or bookmarked (the wisdom of doing so aside), I
don't think you can *depend* on that.
You bring up the canonical link; *if* one assumes that only LDP servers
mint canonical links, then you might treat them as equivalent. Given that
we're not defining that link relation as new, nor if we did would we
likely argue that it's LDP-only, I don't think you can *depend* on that.
6596 "recommends" only one canonical link per resource, although not in
obviously normative language.
It Might well be that "knowing" that a resource is a Page is simply
uninteresting outside of our little context. If we don't have scenarios
requiring a client to be *reliably* able to traverse from any random page
to the corresponding paged resource, it could be that we say "follow the
canonical link, and maybe it's The Paged Resource/maybe not" = good
enough.
I.e. I could look at it as: if the only thing you get from knowing that
some URI handed to you identifies "a page" is that there's Some Bigger
Related Thing out there, somewhere, and some options for finding pages
related to the SBRT, and (maybe, via one of the canonical link(s)) the
SBRT's URI, ho hum.
The closest I can come quickly to imagining a problem is thinking about
paging when the paged-resource itself is part of a sequence. E.g. the
paged resource is a container, and a VCS links to successive versions of
that paged resource via the same "sequence" headers we use for LDP paging.
I could still find my way through that (v=n.lastpage.next = nil/omitted,
do a Head on v=n to get v=n.next -> v=(n+1) ).
Based on that I can't put my finger on what breaks absent the
type=ldp:Page header, so I'd be amenable at this point if you propose
removing it.
> which would defeat the purpose of pagination ... If that's all
pagination is for, then we'd only use it with sorted resources.
I have a TODO in the source (which you would not have seen) to similar
effect. I think sharing ordering of a container's partitioning of members
to pages is an optimization for clients working with servers that do/can
order the members to avoid repeating work already done on the server
(allows for a more efficient client-side implementation).
Best Regards, John
Voice US 845-435-9470 BluePages
Cloud and Smarter Infrastructure OSLC Lead
From: Sandro Hawke <sandro@w3.org>
To: John Arwe/Poughkeepsie/IBM@IBMUS
Cc: Steve K Speicher/Raleigh/IBM@IBMUS, Arnaud Le
Hors/Cupertino/IBM@IBMUS
Date: 06/08/2014 11:41 PM
Subject: Re: LDP paging: spec'ing Sandro's proposal
On 05/20/2014 05:42 PM, John Arwe wrote:
I've done the majority of the initial writing in the live editor's draft,
trying to keep this moving. Please see if there's anything big-animal
MIA. The chat logs were not terribly detailed.
The following are all that I know of NOT in the draft yet. There's a
somewhat larger working list (that includes the DONEs) at very top of the
html source.
TODO: http://www.w3.org/2013/meeting/ldp/2014-04-17 resolution 4:
page size hint
TODO: http://www.w3.org/2013/meeting/ldp/2014-04-17 resolution 5:
contains+member triple always on same page
Best Regards, John
Voice US 845-435-9470 BluePages
Cloud and Smarter Infrastructure OSLC Lead
Sorry I took so long -- I confirm these changes look correct to me, as
does the handling of change during traversal.
I find several other problems, though, that have probably been around a
long time, as well as some stylistic things I would love to see changed.
Feel free to quote this & reply on list, if you want.
> This document describes a model for clients and servers to be able to
efficiently retrieve large Linked Data Platform Resource representations
by splitting up the responses into separate URL-addressable page
resources.
Not fond of "model".
How about: This document specifies a way for Linked Data Platform (LDP)
Clients to access portions of the state of large Linked Data Platform
Resources on servers which implement this specification.
Actually, I'd love to say it's an LDP Module, but the group hasn't really
talked about that.
> to deal with large resources.
RDF Sources?
(Ah, coming back later, I see in general paging is for everything. That's
kind of weird, but okay, I guess...)
> too large to fit in a single HTTP response
conveniently?
There's no limit to HTTP response size, is there?
> Single-page resource
I still think this is terribly confusing name.
Partial page? Sub-page? Sequence-page? Traversal Page?
All of those would be much better.
> LDP Paging Clients
I have a real problem with this, but I don't think I can explain this yet.
Basically, there have to be affordances for everything in HTTP, and
there's none here.
I think the actual rule is: EVERY *LDP CLIENT* MUST TRANSPARENTLY HANDLE
FORWARD AND BACKWARD TRAVERSAL.
Anything less means that servers can't initiate paging without breaking
some clients. IE they can't initiate paging.
Without that rule, the only time to do paging is when the client asks for
it.
> 4.1.1 LDP Paging clients MUST be paging-aware in cases where LDP Paging
servers initiate paging.
Aside from the above point, I can't figure out what this could mean.
> read committed isolation ...
I happen to find these links make it all much more complex and confusing
than necessary. The behavior we actually want is simpler than this
sounds.
> 333
I'd think we should use a 2xx code as the placeholder, probably 209.
> Example 1
I think this would be more clear as an HTTP dialog trace, showing the
actual headers.....
> any resource (LDP-RS or not) as a paged resource.
What's the benefit of non-RS paging? Do we say how jpg and html and zip
files can be paged...? Are we suggesting they can be?
> 5.2.3.8 LDP Paging servers MAY add or remove single-page resources to a
paged resource's sequence over time, but SHOULD only add pages to the end
of a sequence.
Doesn't that contradict ordering?
> 5.2.3.11
Isn't that only for forward traversal?
> 5.2.3.13
Isn't this only for backward traversal?
> 5.2.3.15 LDP Paging servers MUST provide an HTTP Link header whose
target URI is http://www.w3.org/ns/ldp#Page, ... This is one mechanism by
which clients know that the resource is one of a sequence of pages.
I don't think that's true. The client knows because it got the URL via
a link first/last/previous/next header. Also the "canonical" link.
I don't see any value to this type, aside from not liking it's name.
> which would defeat the purpose of pagination
If that's all pagination is for, then we'd only use it with sorted
resources. I'm not sure what else paginating is for, but people seem to
want it. (I guess it's for client access to flow control, when it can't
touch TCP.)
That's it for now. *shrug*
I guess I could make these changes, if you want. Probably a few issues
that need WG discussion there, though.
-- Sandro
Received on Tuesday, 10 June 2014 18:46:53 UTC