- From: Sandro Hawke <sandro@w3.org>
- Date: Thu, 20 Feb 2014 21:14:06 -0500
- To: Arnaud Le Hors <lehors@us.ibm.com>
- CC: Linked Data Platform WG <public-ldp-wg@w3.org>
- Message-ID: <5306B66E.9030403@w3.org>
On 02/20/2014 11:48 AM, Arnaud Le Hors wrote: > Sandro Hawke <sandro@w3.org> wrote on 02/19/2014 05:04:33 PM: > > > Note that > > Membership Triples may also be added or removed by application logic > > on the server or by other permitted clients, not necessarily in sync > > with LDPRs being created or deleted. > > That's correct but, similarly, containment triples may also be added > or removed by application logic on the server. My understanding is that containment triples always mirror containment. So application logic can remove the triples ONLY by deleting the resource. I suppose it could then re-create it under another container, or no container, at the same URL... but that seems like very bad practice, and unlikely. My view has always been that application logic on the server should be indistinguishable from another client. I haven't noticed any violations of that, but I haven't really been looking for them. (In the implementation I'm doing, that's certainly how it's structured. Application code running inside the server has the same api as code running in the client. It just has more efficient access. And for now, for some things, the client needs to use non-standard LDP extensions.) > > > To me, that's a story that makes sense. Or maybe it's just me that > > finds the current story odd and somewhat underspecified? > > Evidently the editors barely had the time to try and capture the > latest resolutions, which included the whole containment stuff. There > is no doubt that the spec would benefit from some additional editorial > work to put all of that in the proper perspective. I certainly hope > effort can be put into this once the firedrill of trying to get to LC2 > is passed. > Yes, but I think this is more than strictly editorial. > > I think > > it would only change the spec in editorial ways, and probably change > > some of the container classes to being membership classes (which I > > think can & probably should be specified in the LDPC triples, rather > > than the LDPC header). > > Can you please expand a bit on that? I don't understand what you mean. > Well, the way I've explained it here, there is only one kind of container. All containers will maintain whatever membership structure they happen to contain. Servers that allow clients to create containers with an "indirect container" membership configuration will have to maintain the membership triples of such a contruct, etc. If the server only wants to maintain one kind of membership triples, then it has to put that membership configuration in the container state and not let any client change them. The main point is probably that, with this framing, a Membership is a perfectly sensible thing to use in RDF outside of LDP. It's just that LDP Containers happen to be mandated to maintain them when they find them in a container's state. In terms of normative changes, it means there would be no ldp:DirectContainer or ldp:BasicContainer. Instead, what we now call an ldp:BasicContainer would be an ldp:Container that doesn't happen to have any Membership in it, and an ldp:DirectContainer and what used to be IndirectContainer would be ldp:Containers that happen to contain different Membership Configuration Triples. > > > > [1] This is kind of orthogonal, but a really good time bring up I > > think servers which are going to do this MUST include in the LDPC's > > headers a Link: <http://example.org/myldpc/> rel="http://www.w3.org/ > > ns/ldp/ContainerPrefix". If we don't include this in the spec > > now, I think people will just assume the LDPC's URL is the prefix, > > and it'll be hard to change that behavior down the road. > > Are you talking about the prefix of the URLs the server will mint for > contained resources, or that a client could create using PUT? Yeah, I'm talking about LDPRs that a client could create using PUT. It makes no sense to me to say clients can create using PUT but not give them any way to find out what URLs they can use to do that. As we currently have it, I think readers will have to pick something, so they'll assume the container IRI is the container prefix. My suggestions is that we either include a way to advertise it, or take out the idea that resources can be created using PUT (or PATCH). Then let it be an extension to support direct creation of contained resources. > > > > > [2] I think it's overly constraining to say that if you want to do > > the primary-subject thing, you have to have the same primary-subject > > predicate for every resource in the membership, and that you have to > > have such a triple in the data at all. That basically forces > > memberships to be homogeneous and overly explicit about their > > document structuring. I suggest instead that during PUT or POST, > > the client include a header like: Link <#me> rel="http:// > > www.w3.org/ns/ldp/PrimarySubject". This tells the server to use > > this alternate URL in the membership triples it's maintaining, if > > any. Maybe on GET, the server should be handing back that header, > > too. (It needs to remember it for later use in DELETE.) > > This would be more powerful indeed but we are way past the design > period and it's too late to think of better/more powerful ways of > doing things. I'm happy to make the spec more understandable and fix > what's broken but requests for new features automatically go to the > LDPnext wish list. Well, my instinct on this, as on the points above, is that if we don't fix them now, we'll be fixing them in LC3, because we wont actually get real implementations during CR. Or worse, we'll squeak through CR based on implementations from folks in the WG, but we wont really have any industry buy in because it just seems too weird and complicated. I think it's fine for LDP to have complexity as long as it's pay-as-you-go: if you want a Membership structure, then you have to read the part of the spec (or manual or book) that talks about Membership. But if ldp:contains triples suit your needs, then you never even need to read anything about Memberships. Right now, the protocol makes that impossible because of these three classes of Containers that differ only in how they handle Memberships. But perhaps I'm being overly cautious, and you're right on the procedure. (I could perhaps make an argument about new information here. I'd have to go back and see exactly what options were considered at the time. Obviously that doesn't change whatever time pressures we really have.) Speaking of LDPnext, did you like my idea of having an outsite-the-WG page where we start to maintain a list of extensions? I say outsite-the-WG so it can still be maintained after the WG goes away. -- Sandro > -- > Arnaud Le Hors - Software Standards Architect - IBM Software Group
Received on Friday, 21 February 2014 02:14:16 UTC