<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
<div>+1</div><div><br></div>Perhaps we should say that a explicit list of parameters, including TERMINATION and the other UWS sub-resources, always have UWS semantics in a job-creation post. Then authors of higher-level standards know all the possible clashes.<div><br></div><div>I don't think it needs a special registration flag. I'd expect the higher-level standards always to allow the UWS parameters in the POST and always to allow certain other parameters on a per-standard basis. (If a standard requires a document to be posted will the implementation also read parameters in the query string of the URL? Consistently?)<br><div><br></div><div>This is not impure REST. HTTP-POST is <font class="Apple-style-span" color="#000000">"...</font><font class="Apple-style-span" color="#000000">used to request that the origin server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI..." [RFC2616] It doesn't say that it has to be an immediate child; grandchildren are OK. In fact this is <i>more </i>RESTful than most uses of POST.</font></div><div><br></div><div><font class="Apple-style-span" color="#000000"></font>Cheers,</div><div>Guy<br><div><br><div><div><div>On 6 Mar 2009, at 11:07, Paul Harrison wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">On 2009-03 -05, at 17:49, Patrick Dowler wrote:</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div> <blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">context: In TAP we want to define a TERMINATION parameter for sync queries</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">with exactly the same semantics as it has in UWS for async queries.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">One thing I discussed with Paul and Guy last summer was whether or not UWS</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">allowed one to init/set/request some of the resources in the initial POST</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">that creates the job. I recall (could be wrong) the conclusion was that you</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">COULD do this for service specific parameters but you COULD NOT do it for UWS</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">concepts and had to address job control POSTs to the specific child web</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">resource. That would mean that in TAP something like</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">POST /sync?TERMINATION=600&...</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">is allowed while</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">POST /async?TERMINATION=600</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">is not. There are many examples in the TAP doc where other TAP-specific</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">parameters are POSTed in the job creation step. This was thought to be OK but</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">it leaves an odd disconnect (especially for users) since some params can be</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">set at job creation and some (UWS defined) cannot. The situation will be</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">worse if the rules are different for the /async and /sync endpoints.</div> </blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">As you remember, I was not in favour of trying to set the job control parameters in the initial POST because of the possible clash of a control parameter name with a job parameter name in the general UWS case - however, I am more relaxed<span class="Apple-converted-space"> </span>about a specific implementation of UWS, where the clash is known not to occur - so for TAP It would be OK, but for CEA it would not (because CEA is a sort of meta protocol and the parameter names are "chosen" by the particular installation and are dependent on the application being wrapped).</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">In the general case there is a way out here with making a distinction between parameters that are specified in the body of the post (job parameters) and those in the URL (job control parameters) - however I do not think that this helps too much in the TAP case where the PARAM version of the query appears in the URL string so that there is mixing anyway.</div> <blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">The goal (in TAP, but it is a general issue) is that we want to be able to run</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">synchronously or asynchronously by just changing the endpoint. To fully</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">accomplish that, one has to at least be permitted to completely specify the</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">job in a single POST - e.g. the job creation POST in the case of async. This</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">is simple enough to implement.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Has this been addressed in UWS 0.5? Thought about further?</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div> </blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">My feeling on this not to be too much of a REST purist and alter the UWS specification should say that it is allowable to set job control parameters in the initial post if the particular implementation has no issues with possible name clashes - i.e. the specification of the implementation should say whether this is allowed - it might also be necessary for some registration flag be used to indicate this possibility to aid generalized UWS clients. Note that all implementations should also allow the full REST style setting of job control parameters.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Paul.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">JBCA, Manchester University</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="http://www.manchester.ac.uk/jodrellbank">http://www.manchester.ac.uk/jodrellbank</a></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div> </blockquote></div><br></div></div></div></div></body></html>