- From: John Arwe <johnarwe@us.ibm.com>
- Date: Wed, 25 Sep 2013 08:25:42 -0400
- To: public-ldp-wg@w3.org
- Message-ID: <OFBEB0AAB6.EAF23F5F-ON85257BF1.00423FBF-85257BF1.00444640@us.ibm.com>
> I was trying to explain this to someone recently and it seemed to us
> there's a big whole in this design. How is a client supposed to
> know where it can PUT things?
Valid question. Applies to PATCH-as-create too, I suspect. I hedge only
because I remember that 5789 does say PATCH can be used to create new
resources, but I don't remember if it suggests a PUT-like, POST-like, or
no (silent on) interaction model.
> And if it does PUT things there, do
> they end up linked from anywhere? What seems right to me, taking
> a stab in the dark, is that at LDPC can have some associated URL
> space, and if you do a PUT-to-create in that space, it's pretty much
> the same as POSTing to the LDPC. So the new PUT URL ends up as a
> resource in the LDPC as well.
As long as the URL you selected is not already in use, that's the fuzzy
model I've had in my head. Given that I don't know of anyone on my end
planning to implement create-via-PUT, I have not thought it through deeply
myself.
IMO the important distinction is the "create" semantic, not the HTTP
method used. I would expect the same consequences on membership triples
as the result of any create, irrespective of the HTTP method employed on
the request.
> I imagine an LDPC could advertise
> this functionality with a triple or like: { <>
ldp:memberCreationURLPrefix
> "http://example.org/container75_" }.
> Alternatively, we might
> just agree the URL prefix is the LDPC URL (plus a slash).
> Then we
> just need a flag like { <> a ldp:Puttable }.
The Allow response headers seem sufficient to convey the semantic I infer
from your choice of predicate.
I don't know that it's the semantic you want though - saying that PUT is
allowed gives a client no guarantees that Create is allowed via PUT. This
is analogous to the issue I raised when we were naming the proposed
Accept-Post header.
> ... and I guess you
> don't even need that flag with Vanilla servers, which always have
> that flag set?
If we decide (as proposed) that vanilla servers MUST support PUT, then yes
knowing that it's a vanilla server is enough *for an LDP-aware client* to
know that create-via-PUT is supported by the server. If your goal is to
have a more broadly useful flag (ala the Accept-Post discussion) that any
*"new-flag-aware" HTTP client* could use, then you'd still want some
additional message content.
Betcha can't tell I've been looking at the Conformance section changes
over the past 2 days (not committed yet though - tease).
> I'm not sure why anyone would want to do this. Maybe for some apps
> the clients have an algorithm for picking the URLs and the server
> doesn't know it or can't implement it, itself? Dunno.
I'm unclear on what/how much of the preceding you mean by "this". Your
"it seemed to us there's a big whole" statement implied to me that we're
discussing something likely to result in/seed a new issue, but your ending
calls that into question.
I could posit cases where the server might not know (all) the potential
URL space(s), but without a concrete use case that would just be random
speculation (and the one I have in mind I could probably play the "it's an
access control issue" Jedi mind trick with).
Best Regards, John
Voice US 845-435-9470 BluePages
Tivoli OSLC Lead - Show me the Scenario
Received on Wednesday, 25 September 2013 12:26:23 UTC