- From: Sandro Hawke <sandro@w3.org>
- Date: Fri, 28 Feb 2014 20:31:44 -0500
- To: "henry.story@bblfish.net" <henry.story@bblfish.net>
- CC: Roger Menday <roger.menday@uk.fujitsu.com>,Linked Data Platform WG <public-ldp-wg@w3.org>
On February 28, 2014 12:08:21 PM EST, "henry.story@bblfish.net" <henry.story@bblfish.net> wrote: > >On 28 Feb 2014, at 16:32, Sandro Hawke <sandro@w3.org> wrote: > >> On February 28, 2014 9:42:05 AM EST, Roger Menday ><roger.menday@uk.fujitsu.com> wrote: >>>>>>> >>>>>>> Why? Because I think the client that wants to POST to an >>>>> ldp:DirectContainer or an ldp:IndirectContainer will want to do a >>>>> conditional POST. Otherwise how >>>>>>> does the client know that the server has not changed the >>> membership >>>>> properties between the time it read the content and the time the >>> POST >>>>> arrived? >>>>>>> I wonder if this has been thought through enough? It seems to >>>>> suggest that an ldp:(In)directContainer should not have its etag >>> change >>>>> unless those properties >>>>>>> change. >>>>>> >>>>>> The Working Group has not accepted your proposal that clients >MUST >>>>> understand the membership triples before POSTing. I'm pretty sure >>> many >>>>> of us would formally object to such a proposal. >>>>> >>>>> I disagree. this is already in the current spec. I am just making >>> what >>>>> is there a bit more explicit by >>>>> taking a admittedly extreeme example. If you want to formally >object >>>>> what would be your >>>>> grounds for doing so? >>>> >>>> My grounds would be that it would require clients to do things I do >>> not believe they will do. I could be persuaded by evidence of what >>> real clients actually do. >>>> >>>> Your examples are constraints on the server not the client. When >I >>> buy something from the grocer, it precipitates a whole chain of >events, >>> some of which are visible to me and some of which are not. I don't >>> need to understand them all before I buy something. If I were >>> required to understand them all, I probably wouldn't buy as much. >>>> >>>> You want every client to hard code the membership predicate it's >>> going to find in a container and refuse to post if it's not there? > >Only for Direct and Indirect Containers. > Sure. >>> A client will need to understand (and like) what will be created and >>> how it will be linked to decide if it wants to go ahead. >>> >> >> I'm not sure what you mean by "understand" and "like" if you don't >mean the client MUST get fetch the membership configuration and MUST >match a pattern hardcoded into the client software, including the >predicate URI. >> >> I think that's overly restrictive, by quite a bit. It could be >useful to prevent a class of error, I suppose, but I think it will >cause more problems than it solves. >> >> I'm fairly sure most client implementors will ignore this rule, >because it's easier on them and will probably result in fewer user >complaints. > >If we assume that clients are going to ignore all the Direct and >IndirectContainer rules, then we should >not be trying to specify them. It would make the spec a lot simpler >without them. > I'm only saying they will ignore the rules if the rules are excessive. >If we have them then we must assume clients do not ignore them, and >that means that servers >can create services where they rely on the client understanding these >relations. IF this takes >off and it is helpful then people will rely on their clients following >the protocol correctly. >They will then be complaining in court if clients do ignore the rules. >For example when a "ignore >the rules client" just POSTs something to an auction collection, which >would be correctly >interpretable as binding them to selling their goods. > > I think this reflects an unrealistic, perhaps idealistic, expectation of how these systems will work. I'll back off the suggestion I would formally object, mostly because I have no plans to use direct or indirect containers. It seems like a bad idea, but if everyone who uses these containers wants to say clients MUST recognize the member predicate, I won't stand in the way. - Sandro > >> >> - Sandro >> >>> Roger >>> >>> >>>> Or is there some other kind of understanding you have in mind? >>> Steve, are you okay with that requirement on your software and the >>> software of your customers? >>>> >>>> - Sandro >>>> >>>>> Here are just some of the reasons for my position: >>>>> >>>>> => POST in http is non idempotent. POSTing does things. And when >an >>>>> agent does things in a space >>>>> where there are rules. That is why one does not just POST anything >>>>> anywhere. >>>>> => The consequences of POSTing to a all forms of LDPCs are known >to >>>>> the client and explicity stated in the spec: >>>>> >>>>> 6.4.3 When a successful HTTP POST request to a LDPC results in the >>>>> creation of an LDPR, the LDPC must update its membership triples >to >>>>> reflect that addition, and the resulting membership triple must be >>>>> consistent with any LDP-defined predicates it exposes. A LDP >Direct >>>>> Container or LDP Container's membership triples may also be >modified >>>>> via through other means. >>>>> >>>>> There are a huge number of reference throughout the document to >>>>> membership triples. You cannot really write a client that uses >>>>> ldp:IndirectContainers >>>>> or ldp:DirectContainers without understanding that concept. The >>>>> differences are then made clear. >>>>> The following table illustrates some differences between >membership >>> and >>>>> containment triples. For details on the normative behavior, see >>>>> appropriate sections below. >>>>> >>>>> Completed Request Effects >>>>> Membership Containment >>>>> LDPR created in LDP-BC New triple: (LDPC, ldp:contains, LDPR) Same >>>>> LDPR created in LDP-DC New triple links LDP-RS to created LDPR. >>> LDP-RS >>>>> URI may be same asLDP-DC New triple: (LDPC, ldp:contains, LDPR) >>>>> LDPR created in LDPC New triple links LDP-RS to content indicated >>>>> URI New triple: (LDPC, ldp:contains, LDPR) >>>>> LDPR is deleted Triples may be removed Triples are removed >>>>> LDPC is deleted Triples and member resources may be >removed Triples >>> of >>>>> form (LDPC, ldp:contains, LDPR) and contained LDPRs may be removed >>>>> >>>>> I could find more I am sure. >>>>> >>>>> Henry >>>>> >>>>> >>>>> >>>>> Social Web Architect >>>>> http://bblfish.net/ > >Social Web Architect >http://bblfish.net/
Received on Saturday, 1 March 2014 01:31:57 UTC