<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Paul,<div><br></div><div>Thanks for the swift response - this certainly helps the discussion. </div><div><br></div><div>Is it your recommendation that any service which uses UWS specifically states what its JDL is? Is there a suitable format for this for validation, etc? In VOSpace 2.0, I have assumed that the <uws:parameters> define the job since there is no initial POST - what is posted is the full XML representation of the Job resource, e.g.:</div><div><br></div><div><span class="Apple-style-span" style="font-family: sans-serif; "><pre style="margin-left: 2em; font-family: monospace; "><uws:job xsi:schemaLocation="<a href="http://www.ivoa.net/xml/UWS/v1.0">http://www.ivoa.net/xml/UWS/v1.0</a> UWS.xsd "
    xmlns:uws="<a href="http://www.ivoa.net/xml/UWS/v1.0">http://www.ivoa.net/xml/UWS/v1.0</a>"
  xmlns:xlink="<a href="http://www.w3.org/1999/xlink">http://www.w3.org/1999/xlink</a>" xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>">
  <uws:jobId/>
  <uws:ownerId xsi:nil="true"/>
  <uws:phase>RUN<uws:phase/>
  <uws:startTime xsi:nil="true"/>
  <uws:endTime xsi:nil="true"/>
  <uws:executionDuration>0</executionDuration>
  <uws:destruction xsi:nil="true"/>
  <uws:parameters>
    <uws:parameter id="target">vos://nvo.caltech!vospace/mydata1</uws:parameter>
    <uws:parameter id="direction">vos://nvo.caltech!vospace/mydata2</uws:parameter>
    <uws:parameter id="keepBytes">false</uws:parameter>
  </uws:parameters>
  <uws:results/>
</uws:job></pre><pre style="margin-left: 2em; font-family: monospace; ">or have I misread UWS?</pre><pre style="margin-left: 2em; font-family: monospace; "><span class="Apple-tab-span" style="white-space:pre">   </span>Cheers,</pre><pre style="margin-left: 2em; font-family: monospace; "><span class="Apple-tab-span" style="white-space:pre"> </span>Matthew</pre></span><div><br></div></div><div><br></div><div><br></div><div><br><div><div>On Aug 13, 2010, at 6:20 AM, Paul Harrison wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Hi,<br><br>On first reading of your requirements wrt VOSpace, I am not sure that I entirely understand the context in which you want to use these <uws:parameter> elements. Remember that the elements that occur within <uws:parameters> are purely informational, with the definition of the job input being dependent on (in UWS jargon) the "Job Description Language (JDL)" that is used in the initial POST.  The easiest interpretation comes where the JDL is simply a set of application/x-www-form-urlencoded (name, value) pairs such as what is produced by a HTML form submission, but this model is fairly restrictive when it comes to defining relations between the parameters as you are wanting to do here. I think that the only viable solution with this simple model is to introduce parameter naming rules that indicate the relationships - but this sort of thing quickly reaches its limitations. The more general idea in UWS is to have a more expressive JDL such as can be achieved with XML (though other encodings/ domain specific languages are equally valid), and in this case there might not be a simple mapping into the individual "parameters" within the JDL. As far as I can see one of the main uses of the <uws:parameters> section of the Job information is to be able to re-run the job, and in this case the recommendation of the UWS specification is to list a single parameter with the full text of the JDL. However, despite the listing of the parameters in the Job Information, a generic UWS client cannot in general resubmit the job armed with this information, as the interpretation of the parameter is dependent on the JDL, which is not specified by UWS.<br><br>On your specific queries see comments between the text below...<br><br><br>On 2010-08 -12, at 19:06, Matthew Graham wrote:<br><br><blockquote type="cite">Hi,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I posted this to the VOSpace mailing list (<a href="mailto:vospace@ivoa.net">vospace@ivoa.net</a>) after the last Interop and have gotten no responses so far so let's try the main GWS list.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><span class="Apple-tab-span" style="white-space:pre"> </span>Cheers,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><span class="Apple-tab-span" style="white-space:pre">   </span>Matthew<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Begin forwarded message:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite">From: Matthew Graham <<a href="mailto:mjg@cacr.caltech.edu">mjg@cacr.caltech.edu</a>><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Date: May 24, 2010 10:28:04 PM PDT<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">To: <a href="mailto:vospace@ivoa.net">vospace@ivoa.net</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Subject: vos:group vs. uws:JobInfo<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Hi,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">As mentioned last week, this remains the outstanding issue with VOSpace 2.0.<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">When multiple protocols are specified, we may need to associate a particular protocolEndpoint parameter with its respective protocol parameter (pushFromVoSpace) but in UWS these are all uws:parameters:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><uws:parameters><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">  <uws:parameter id="protocol">ivo://ivoa.net/vospace/core#httpput</uws:parameter><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">  <uws:parameter id="protocolEndpoint">http://some.server.com/put/the/data/here</uws:parameter><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">  <uws:parameter id="protocol">ivo://ivoa.net/vospace/core#ftpput</uws:parameter><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">  <uws:parameter id="protocolEndpoint">ftp://some.other.server.com/put/the/data/here</uws:parameter><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"></uws:parameters><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">To handle this, we have added a parameter vos:group to the UWS Job representation so that groups of parameters can be tagged. The attribute should appear on all parameters and have the same value for a particular group, in this case, a particular protocol - protocolEndpoint pairing:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><uws:parameters><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">  <uws:parameter id="protocol" vos:group="protocol1">ivo://ivoa.net/vospace/core#httpput</uws:parameter><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">  <uws:parameter id="protocolEndpoint" vos:group="protocol1">http://some.server.com/put/the/data/here</uws:parameter><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">  <uws:parameter id="protocol" vos:group="protocol2">ivo://ivoa.net/vospace/core#ftpput</uws:parameter><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">  <uws:parameter id="protocolEndpoint" vos:group="protocol2">ftp://some.other.server.com/put/the/data/here</uws:parameter><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"></uws:parameters><br></blockquote></blockquote><br>I am not very keen on this mainly because it means that the UWS response is not schema valid according to the published schema -Whilst experience has shown us it is probably good practice to write clients so that they only interpret the XML that they understand and be fairly lenient about extra attributes etc.,  many people use code generators which are quite rigid.<br><br><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">The alternate solution is that the protocol information for a transfer job does not appear in uws:parameters but in uws:jobInfo which can take arbitrary XML (as the spec says: The <job> element has placeholders of all of the standard UWS objects, and in addition there is a <uws:jobinfo> element which can be used by implementations to include any extra information within the job description.):<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><uws:job><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">  ...<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">  <uws:parameters><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">     ...<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">  </uws:parameters><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">  ...<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">  <uws:jobinfo><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">    <vos:protocol id="<a href="ivo://ivoa.net/vospace/core#httppput">ivo://ivoa.net/vospace/core#httppput</a>><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">      <vos:endpoint>http://some.server.com/put/the/data/here</vos:endpoint><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">    <vos:protocol><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">    <vos:protocol id="<a href="ivo://ivoa.net/vospace/core#ftpput">ivo://ivoa.net/vospace/core#ftpput</a>"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">      <vos:endpoint>ftp://some.other.server.com/put/the/data/here</vos:endpoint><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">    <vos:protocol><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"></uws:job><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">My only concern with this is that my reading of the UWS spec was that uws:jobInfo was something that the implementation used to provide extra information after a job has been specified and that it was not for additional UWS job specification material. All the information for a job should be in the uws:parameters section.<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><br>I think that this is the better option of the two, and as said above the <uws:parameters>  is just as informational as  <uws:jobinfo> as far as I am concerned.<br><br><br>Regards,<br><span class="Apple-tab-span" style="white-space:pre">   </span>Paul.<br><br><br></div></blockquote></div><br></div></body></html>