/[volute]/trunk/projects/grid/uws/doc/UWS.html
ViewVC logotype

Diff of /trunk/projects/grid/uws/doc/UWS.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1091 by harripa, Thu Jun 11 21:50:55 2009 UTC revision 1092 by harripa, Tue Jun 16 15:08:19 2009 UTC
# Line 1  Line 1 
1  <?xml version="1.0" encoding="ISO-8859-1"?><!-- $Id:$  <?xml version="1.0" encoding="ISO-8859-1"?><!-- $Id:$
2  Universal Worker Service WD  Universal Worker Service WD
3  Note that this file should be xhtml with div to mark sections so that it can be updated with xslt.  Note that this file should be xhtml with div to mark sections so that it can be updated with xslt.
4  Paul Harrison -->  Paul Harrison --><!-- DOCTYPE html
   
 <!-- DOCTYPE html  
5    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"-->    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"-->
6  <html xmlns="http://www.w3.org/1999/xhtml">  <html xmlns="http://www.w3.org/1999/xhtml">
7  <head xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" profile="http://www.w3.org/1999/xhtml/vocab"><title>Universal Worker Service Specification</title><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>  <head xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" profile="http://www.w3.org/1999/xhtml/vocab"><title>Universal Worker Service Specification</title><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
8  <meta name="Title" content="IVOA WG Internal Draft"/>  <meta name="Title" content="IVOA WG Internal Draft"/>
9  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
# Line 14  Line 12 
12  <link href="http://www.ivoa.net/misc/ivoa_a.css" rel="stylesheet" type="text/css"/>  <link href="http://www.ivoa.net/misc/ivoa_a.css" rel="stylesheet" type="text/css"/>
13  <link rel="stylesheet" href="http://www.ivoa.net/misc/ivoa_wd.css" type="text/css"/>  <link rel="stylesheet" href="http://www.ivoa.net/misc/ivoa_wd.css" type="text/css"/>
14  <link href="./ivoadoc/XMLPrint.css" rel="stylesheet" type="text/css"/>  <link href="./ivoadoc/XMLPrint.css" rel="stylesheet" type="text/css"/>
15    <link href="./ivoadoc/ivoa-extras.css" rel="stylesheet" type="text/css"/>
16  </head>  </head>
17  <body bgcolor="#FFFFFF">  <body bgcolor="#FFFFFF">
18  <div class="head">  <div class="head">
19  <table><tr><td rowspan="1" colspan="1"><a href="http://www.ivoa.net/" shape="rect"><img alt="IVOA" src="http://www.ivoa.net/icons/ivoa_logo_small.jpg"/></a></td></tr></table>  <table><tr><td rowspan="1" colspan="1"><a href="http://www.ivoa.net/" shape="rect"><img alt="IVOA" src="http://www.ivoa.net/icons/ivoa_logo_small.jpg"/></a></td></tr></table>
20  <h1>Universal Worker Service<br clear="none"/>  <h1>Universal Worker Service<br clear="none"/>
21    Version 0.9</h1>    Version 0.9</h1>
22  <h2>IVOA  <h2>IVOA Working Draft @RELEASEDATE@</h2>
   Internal Working Draft @RELEASEDATE@</h2>  
23  <dl><dt>Working Group</dt><dd><a href="http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices" shape="rect">http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices</a></dd><dt><b>This version:</b></dt><dd> 0.9</dd><dt><b>Latest version:</b></dt><dd> not issued outside  <dl><dt>Working Group</dt><dd><a href="http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices" shape="rect">http://www.ivoa.net/twiki/bin/view/IVOA/IvoaGridAndWebServices</a></dd><dt><b>This version:</b></dt><dd> 0.9</dd><dt><b>Latest version:</b></dt><dd> not issued outside
24      GWS-WG</dd><dt><b>Previous version(s):</b></dt><dd> Internal Working Draft      GWS-WG</dd><dt><b>Previous version(s):</b></dt><dd> Internal Working Draft
25      v0.1, 2005-01-24      v0.1, 2005-01-24
# Line 29  Line 27 
27        v0.2, 2006-05-11 Internal        v0.2, 2006-05-11 Internal
28        Working Draft v.0.3, 2007-04-26  Internal        Working Draft v.0.3, 2007-04-26  Internal
29        Working Draft v.04  2008-05-10, Internal Working draft 0.5 </dd><dt><b>Author(s):</b></dt><dd>  P.        Working Draft v.04  2008-05-10, Internal Working draft 0.5 </dd><dt><b>Author(s):</b></dt><dd>  P.
30      Harrison, G. Rixon, P. Dowler</dd></dl>      Harrison, G. Rixon</dd>
31    </dl>
32    
33  <h2>Abstract</h2>  <h2>Abstract</h2>
34  <p>The Universal Worker Service pattern  <p>The Universal Worker Service pattern
# Line 57  Line 56 
56    respect of the Open Grid Services Infrastructure that was the    respect of the Open Grid Services Infrastructure that was the
57    fore-runner of Web Services Resource Framework. The REST binding came    fore-runner of Web Services Resource Framework. The REST binding came
58    initially from suggestions by Norman Gray.</p>    initially from suggestions by Norman Gray.</p>
 <p class="prologue-heading-western">ISSUES TO BE  
   RESOLVED</p>  
 <ol><li>  
     <p>Possible blocking behaviour on  
       getResults &#8211; or what behaviour for for allowing results to appear  
       before the app is finished to allow streaming.</p>  
   </li><li>  
     <p>Perhaps remove the SOAP binding  
       section &#8211;  although the most basic of the WS-* standards, it not  
       clear how well supported WS-Addressing is in tools, and how best to  
       use it for UWS to really achieve interoperability (see <a href="http://wiki.apache.org/ws/StackComparison" shape="rect">http://wiki.apache.org/ws/StackComparison</a> for a SOAP stack comparison). Possibly re-introduce SOAP binding in  
       a later version (2.x?) of the UWS standard, when there is more  
       experience.</p>  
       
   </li><li><p>add an owner to the job description for authorization purposes.</p></li></ol>  
59  </div>  </div>
60  <h2>Contents</h2>  <h2>Contents</h2>
61  <div id="TOC">  <div><copy xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><div id="toc" class="toc"><ul><li><a href="#Introduction"><span class="secnum">1. </span>Introduction</a><ul><li><a href="#SynchronousStateless"><span class="secnum">1.1. </span> Synchronous, stateless services</a></li><li><a href="#IVOOutGrow"><span class="secnum">1.2. </span> Some IVO activities that outgrow synchronous, stateless services</a></li><li><a href="#AsynchronousServices"><span class="secnum">1.3. </span> Asynchronous and stateful services</a></li><li><a href="#JDL"><span class="secnum">1.4. </span> Job description language, service contracts and universality</a></li></ul></li><li><a href="#UWSpattern"><span class="secnum">2. </span> Universal Worker Service Pattern</a><ul><li><a href="#UWSObjects"><span class="secnum">2.1. </span> Objects within a UWS</a><ul><li><a href="#Joblist"><span class="secnum">2.1.1. </span>
62  <?toc ?>          Job list </a></li><li><a href="#Job"><span class="secnum">2.1.2. </span>Job</a></li><li><a href="#ExecutionPhase"><span class="secnum">2.1.3. </span> Execution Phase</a></li><li><a href="#ExecutionDuration"><span class="secnum">2.1.4. </span> Execution Duration</a></li><li><a href="#DestructionTime"><span class="secnum">2.1.5. </span> Destruction Time</a></li><li><a href="#Quote"><span class="secnum">2.1.6. </span>Quote</a></li><li><a href="#Error"><span class="secnum">2.1.7. </span>Error</a></li><li><a href="#Error2"><span class="secnum">2.1.8. </span>Owner</a></li><li><a href="#Error3"><span class="secnum">2.1.9. </span>RunId</a></li><li><a href="#ResultsList"><span class="secnum">2.1.10. </span>Results List</a></li><li><a href="#ResultsList2"><span class="secnum">2.1.11. </span>Parameter List</a></li></ul></li><li><a href="#RESTbinding"><span class="secnum">2.2. </span>The REST Binding</a><ul><li><a href="#d1e834"><span class="secnum">2.2.1. </span>Resources and URIs</a></li><li><a href="#d1e603"><span class="secnum">2.2.2. </span>Representations of resources</a><ul><li><a href="#d1e1030"><span class="secnum">2.2.2.1. </span>Job List</a></li><li><a href="#d1e1040"><span class="secnum">2.2.2.2. </span>Job</a></li><li><a href="#d1e1344"><span class="secnum">2.2.2.3. </span>Results List</a></li><li><a href="#d1e1353"><span class="secnum">2.2.2.4. </span>Parameters List</a></li></ul></li><li><a href="#d1e634"><span class="secnum">2.2.3. </span>State changing requests</a><ul><li><a href="#d1e1375"><span class="secnum">2.2.3.1. </span>Creating a Job</a></li><li><a href="#d1e1390"><span class="secnum">2.2.3.2. </span>Deleting a Job</a></li><li><a href="#d1e1402"><span class="secnum">2.2.3.3. </span>Changing the Destruction
63  <div xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" id="toc" class="toc"><ul><li><a href="#Introduction" shape="rect"><span class="secnum">1. </span>Introduction</a><ul><li><a href="#SynchronousStateless" shape="rect"><span class="secnum">1.1. </span> Synchronous, stateless services</a></li><li><a href="#IVOOutGrow" shape="rect"><span class="secnum">1.2. </span> Some IVO activities that outgrow synchronous, stateless services</a></li><li><a href="#AsynchronousServices" shape="rect"><span class="secnum">1.3. </span> Asynchronous and stateful services</a></li><li><a href="#JDL" shape="rect"><span class="secnum">1.4. </span> Job description language, service contracts and universality</a></li></ul></li><li><a href="#UWSpattern" shape="rect"><span class="secnum">2. </span> Universal Worker Service pattern</a><ul><li><a href="#UWSObjects" shape="rect"><span class="secnum">2.1. </span> Objects within a UWS</a><ul><li><a href="#Joblist" shape="rect"><span class="secnum">2.1.1. </span>              Time</a></li><li><a href="#d1e1420"><span class="secnum">2.2.3.4. </span>Changing the Execution
64          Job list </a></li><li><a href="#Job" shape="rect"><span class="secnum">2.1.2. </span>Job</a></li><li><a href="#ExecutionPhase" shape="rect"><span class="secnum">2.1.3. </span> Execution Phase</a></li><li><a href="#ExecutionDuration" shape="rect"><span class="secnum">2.1.4. </span> Execution Duration</a></li><li><a href="#DestructionTime" shape="rect"><span class="secnum">2.1.5. </span> Destruction Time</a></li><li><a href="#Quote" shape="rect"><span class="secnum">2.1.6. </span>Quote</a></li><li><a href="#Error" shape="rect"><span class="secnum">2.1.7. </span>Error</a></li><li><a href="#ResultsList" shape="rect"><span class="secnum">2.1.8. </span>Results List</a></li></ul></li><li><a href="#Bindings" shape="rect"><span class="secnum">2.2. </span>Bindings</a><ul><li><a href="#d1e603" shape="rect"><span class="secnum">2.2.1. </span>Representations of resources</a></li><li><a href="#d1e634" shape="rect"><span class="secnum">2.2.2. </span>State changing requests</a></li><li><a href="#d1e708" shape="rect"><span class="secnum">2.2.3. </span>Message pattern</a></li></ul></li><li><a href="#SOAPbinding" shape="rect"><span class="secnum">2.3. </span> SOAP binding</a></li></ul></li><li><a href="#SecurityConsiderations" shape="rect"><span class="secnum">3. </span>Security Considerations</a></li><li><a href="#ApplicationsOfUWS" shape="rect"><span class="secnum">4. </span> Applications of UWS (informative)</a><ul><li><a href="#Imageservice" shape="rect"><span class="secnum">4.1. </span> Image service with data staging</a></li><li><a href="#ADQLservice" shape="rect"><span class="secnum">4.2. </span> ADQL service with cursor</a></li><li><a href="#ParameterizedApplications" shape="rect"><span class="secnum">4.3. </span> Parameterized applications</a></li></ul></li><li><a href="#SynchronousService" shape="rect"><span class="secnum">5. </span> Implementing a Synchronous Service on top of UWS (informative)</a></li><li><a href="#Updates" shape="rect"><span class="secnum">A. </span> Updates from previous versions</a><ul><li><a href="#d1e1112" shape="rect"><span class="secnum">A.1. </span>At Version 0.5</a></li></ul></li><li><a href="#References" shape="rect"><span class="secnum">B. </span>References</a></li><li><a href="#UWSSchema" shape="rect"><span class="secnum">C. </span> Appendix A Schema</a></li><li><a href="#UWSWSDL" shape="rect"><span class="secnum">D. </span> Appendix B WSDL 1.0 for SOAP binding</a></li></ul></div>              Duration</a></li><li><a href="#d1e1439"><span class="secnum">2.2.3.5. </span>        Starting a Job</a></li><li><a href="#d1e1448"><span class="secnum">2.2.3.6. </span>Aborting a Job</a></li></ul></li><li><a href="#d1e708"><span class="secnum">2.2.4. </span>Message pattern</a></li></ul></li></ul></li><li><a href="#security"><span class="secnum">3. </span>Security Considerations</a></li><li><a href="#ApplicationsOfUWS"><span class="secnum">4. </span> Applications of UWS (informative)</a><ul><li><a href="#Imageservice"><span class="secnum">4.1. </span> Image service with data staging</a></li><li><a href="#ADQLservice"><span class="secnum">4.2. </span> ADQL service with cursor</a></li><li><a href="#ParameterizedApplications"><span class="secnum">4.3. </span> Parameterized applications</a></li></ul></li><li><a href="#SynchronousService"><span class="secnum">5. </span> Implementing a Synchronous Service on top of UWS (informative)</a></li><li><a href="#Updates"><span class="secnum">Appendix A. </span> Updates from previous versions</a><ul><li><a href="#d1e1112"><span class="secnum">Appendix A.1. </span>At Version 0.5</a></li><li><a href="#d1e1775"><span class="secnum">Appendix A.2. </span>At Version 1.0</a></li></ul></li><li><a href="#UWSSchema"><span class="secnum">Appendix B. </span> UWS Schema</a></li></ul></div></copy></div>
 </div>  
65  <div class="body">  <div class="body">
66  <div class="section"><h2><a name="Introduction" id="Introduction" shape="rect"/><span class="secnum">1. </span>Introduction</h2>  <div class="section"><h2><a name="Introduction" id="Introduction" shape="rect"/><span class="secnum">1. </span>Introduction</h2>
67    <p>The Universal Worker Service (UWS)    <p>The Universal Worker Service (UWS)
# Line 86  Line 69 
69      in sub-sections of this introduction). It does so in a way that      in sub-sections of this introduction). It does so in a way that
70      allows for wide-scale reuse of software and support from software      allows for wide-scale reuse of software and support from software
71      toolkits.</p>      toolkits.</p>
72    <p>Section 2 of this document describes    <p>Section <h:span xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" class="xref"><a href="#UWSpattern">2. </a></h:span> of this document describes
73      the pattern and lists the aspects that are common to all its      the pattern and lists the aspects that are common to all its
74      applications. Any such application would involve a service contract      applications. Any such application would involve a service contract
75      that embodies the pattern and fixes the issues left undefined in the      that embodies the pattern and fixes the issues left undefined in the
# Line 141  Line 124 
124      <p>These cases are examples. They are      <p>These cases are examples. They are
125        not a complete list!</p>        not a complete list!</p>
126      <ol><li>      <ol><li>
127          <p>An ADQL <cite>std:adql</cite> service gives access          <p>An ADQL <cite>
128        [<a xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" href="#ref:std:adql">std:adql</a>]
129        </cite> service gives access
130            to a large object-catalogue. Most queries run in less than a minute,            to a large object-catalogue. Most queries run in less than a minute,
131            but some legitimate queries involve a full-table traverse and take            but some legitimate queries involve a full-table traverse and take
132            hours or days. The service needs to run these special cases in a            hours or days. The service needs to run these special cases in a
133            low-priority queue.</p>            low-priority queue.</p>
134        </li><li>        </li><li>
135          <p>An object-finding service runs          <p>An object-finding service runs
136            the SExtractor <cite>sextractor</cite> application on a list of images. Normally, the list            the SExtractor <cite>
137        [<a xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" href="#ref:sextractor">sextractor</a>]
138        </cite> application on a list of images. Normally, the list
139            is short and the request is quickly satisfied. Occasionally, a list            is short and the request is quickly satisfied. Occasionally, a list
140            of 10,000 images is sent in the expectation that the work will be            of 10,000 images is sent in the expectation that the work will be
141            finished over the weekend.</p>            finished over the weekend.</p>
142        </li><li>        </li><li>
143          <p>A cone-search <cite>std:scs</cite> request on a          <p>A cone-search <cite>
144        [<a xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" href="#ref:std:scs">std:scs</a>]
145        </cite> request on a
146            rich catalogue raises 10,000,000 rows of results, but the client is            rich catalogue raises 10,000,000 rows of results, but the client is
147            connected via a slow link and cannot read all the results in a            connected via a slow link and cannot read all the results in a
148            reasonable time. The client needs the service to send the results            reasonable time. The client needs the service to send the results
# Line 218  Line 207 
207        standard must specify the rest of the contract.</p>        standard must specify the rest of the contract.</p>
208      <p>If the JDL is very general, a single      <p>If the JDL is very general, a single
209        service-contract can be reused for many kinds of service. AstroGrid&#8217;s        service-contract can be reused for many kinds of service. AstroGrid&#8217;s
210        CEA <cite>harrison05</cite>exploits this: one JDL covers all services offering parameterized        CEA <cite>
211        [<a xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" href="#ref:harrison05">harrison05</a>]
212        </cite>exploits this: one JDL covers all services offering parameterized
213        applications and even ADQL services. In the limit, a        applications and even ADQL services. In the limit, a
214        sufficiently-general JDL turns a specialized worker service into a        sufficiently-general JDL turns a specialized worker service into a
215        universal worker service.</p>        universal worker service.</p>
# Line 233  Line 224 
224          endpoint registered for the service. In a REST binding, the          endpoint registered for the service. In a REST binding, the
225          components are distinct web-resources each with its own URI.</p>          components are distinct web-resources each with its own URI.</p>
226        <p> The following sub-sections explain the semantics of the objects. The        <p> The following sub-sections explain the semantics of the objects. The
227          UML diagram shows the relationships more succinctly.</p>          UML diagram below shows the relationships more succinctly.</p>
228        <p><img src="Class_Diagram__UWS__UWSObjects.png" alt="UWS Objects Class Diagram" name="graphics2" width="418" height="369" border="0" align="top" id="graphics2"/></p>        <p><img src="Class_Diagram__UWS__UWSObjects.png" alt="UWS Objects Class Diagram" name="graphics2" width="460" height="390" border="0" align="top" id="graphics2"/></p>
229        <div class="section"><h4><a name="Joblist" id="Joblist" shape="rect"/><span class="secnum">2.1.1. </span>        <div class="section"><h4><a name="Joblist" id="Joblist" shape="rect"/><span class="secnum">2.1.1. </span>
230          Job list </h4>          Job list </h4>
231          <p>The Job List is the outermost object:          <p>The Job List is the outermost object:
# Line 268  Line 259 
259        </div>        </div>
260        <div class="section"><h4><a name="ExecutionPhase" id="ExecutionPhase" shape="rect"/><span class="secnum">2.1.3. </span> Execution Phase</h4>        <div class="section"><h4><a name="ExecutionPhase" id="ExecutionPhase" shape="rect"/><span class="secnum">2.1.3. </span> Execution Phase</h4>
261          <p>The job is treated as a state machine          <p>The job is treated as a state machine
262            with the Execution Phase naming the state. The phases are</p>            with the Execution Phase naming the state. The phases are;</p>
263          <ul><li>          <ul><li>
264              <p>PENDING: the job is accepted by              <p>PENDING: the job is accepted by
265                the service but not yet committed for execution by the client. In                the service but not yet committed for execution by the client. In
# Line 365  Line 356 
356            running a job a summary of the error should be given using the            running a job a summary of the error should be given using the
357            optional errorSummary element of the JobSummary type.</p>            optional errorSummary element of the JobSummary type.</p>
358        </div>        </div>
359        <div class="section"><h4><a name="ResultsList" id="ResultsList" shape="rect"/><span class="secnum">2.1.8. </span>Results List</h4>        <div class="section"><h4><a name="Error" id="Error2" shape="rect"/><span class="secnum">2.1.8. </span>Owner</h4>
360            <p>The owner object represents the identifier for the creator of the job. This object will not exist for all invocations of a UWS conformant protocol, but only in cases where the access to the service is authenticated as discussed more thoroughly in <h:span xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" class="xref"><a href="#security">3. </a></h:span>. </p>
361          </div>
362          <div class="section"><h4><a name="Error" id="Error3" shape="rect"/><span class="secnum">2.1.9. </span>RunId</h4>
363            <p>The RunId object represents an identifier that the job creator uses to identify the job. Note that this is distinct from the Job Identifier that the UWS system itself assigns to each job. The UWS system should do no parsing or processing of the RunId, but merely pass back the value (if it exists) as it was passed to the UWS at job creation time. In particular it may be the case that multiple jobs have the same RunId, as this is a mechanism by which the calling process can identifiy jobs that belong to a particular group. The exact mechanism of setting the RunId is not specified here, but will be part of the specification of the protocol using the UWS pattern.</p>
364          </div>
365          <div class="section"><h4><a name="ResultsList" id="ResultsList" shape="rect"/><span class="secnum">2.1.10. </span>Results List</h4>
366          <p>The Results List object is a          <p>The Results List object is a
367            container for formal results of the job. Its children may be any            container for formal results of the job. Its children may be any
368            objects resulting from the computation that may be fetched from the            objects resulting from the computation that may be fetched from the
# Line 376  Line 373 
373            be read but not updated or deleted. The client may not add anything            be read but not updated or deleted. The client may not add anything
374            to the Results List.</p>            to the Results List.</p>
375        </div>        </div>
376          <div class="section"><h4><a name="ResultsList" id="ResultsList2" shape="rect"/><span class="secnum">2.1.11. </span>Parameter List</h4>
377            <p>The Parameter List</p>
378            <p>Reading the Results List itself
379              enumerates the available or expected result objects.</p>
380            <p>A particular imlementation of UWS may choose to allow the parameters to be updated after the initial job creation step, before the Phase is set to the executing state. It is up to the individual implementation to specify exactly how these parameters may be updated, but good practice would be to choose one of the following options.</p>
381            <ol>
382              <li>HTTP POST an <i>application/x-www-form-urlencoded</i><b> </b>parameter name, value pair to either
383                <ol>
384                  <li>/{jobs}/{job-id)</li>
385                  <li>/{jobs}/{job-id)/parameters</li>
386                </ol>
387              </li>
388              <li>HTTP PUT the parameter value to /{jobs}/{job-id)/parameters/(parameter-name)</li>
389            </ol>
390          </div>
391      </div>      </div>
392      <div class="section"><h3><a name="RESTbinding" id="RESTbinding" shape="rect"/><span class="secnum">2.2. </span>Bindings</h3>      <div class="section"><h3><a name="RESTbinding" id="RESTbinding" shape="rect"/><span class="secnum">2.2. </span>The REST Binding</h3>
393        <p>In order to create a usable service the objects discussed in the section above must be exposed in a particular interface which can be addressed over a particular transport mechanism. In this first version of the UWS pattern only a REST (Representational State        <p>In order to create a usable service the objects discussed in the section above must be exposed in a particular interface which can be addressed over a particular transport mechanism - this combination is known as a "binding". In this first version of the UWS pattern only a REST (Representational State
394        Transfer) binding <cite>fielding00</cite></p>        Transfer) binding <cite>
395        <h3><a name="RESTbinding" id="RESTbinding" shape="rect"/> REST binding</h3>      [<a xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" href="#ref:fielding00">fielding00</a>]
396        <h4>Resources and URIs</h4>      </cite>is presented, however, future versions of this document will add other bindings such as SOAP. <cite>
397        <p>In a REST (Representational State      [<a xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" href="#ref:std:soap">std:soap</a>]
398          Transfer) binding of UWS, each of the objects defined above is      </cite></p>
399          available as a web resource with its own URI. These URIs must form a      
400          hierarchy as follows:</p>        <div class="section"><h4><a name="d1e834"/><span class="secnum">2.2.1. </span>Resources and URIs</h4>
401        <p>/{jobs}                                the Job List</p>          <p>In a REST (Representational State
402        <p>/{jobs}/(job-id)               a Job</p>            Transfer) binding of UWS, each of the objects defined above is
403        <p>/{jobs}/(job-id)/phase the Phase of            available as a web resource with its own URI. These URIs must form a
404          (job-id)</p>            hierarchy as shown in the rable below:</p>
405        <p>/{jobs}/(job-id)/executionduration     the          <table border="1" cellpadding="2" cellspacing="0">
406          maximum execution duration of (job-id)</p>            <tr>
407        <p>/{jobs}/(job-id)/destruction  the              <th scope="col">URI</th>
408          destruction instant for (job-id)</p>              <th scope="col">Description</th>
409        <p>/{jobs}/(job-id)/error         any error              <th scope="col">Representation</th>
410          message associated with (job-id)</p>            </tr>
411        <p>/{jobs}/(job-id)/quote         the Quote for            <tr>
412          (job-id)</p>              <td>/{jobs}</td>
413        <p>/{jobs}/(job-id)/results       the Results              <td>the Job List</td>
414          List for (job-id)</p>              <td> the <span class="xmlelement">&lt;jobs&gt;</span> element in the UWS schema</td>
415        <p>The service implementor is free to            </tr>
416          choose the names given in parentheses above; the other names are part            <tr>
417          of the UWS standard.</p>              <td>/{jobs}/(job-id)</td>
418        <p>The URI for the Job List, in its              <td>a Job</td>
419          absolute form is the root URI for the whole UWS. This URI should be              <td><p>the <span class="xmlelement">&lt;job&gt;</span> element in the UWS schema<br/>
420          given as the access URL in the UWS' registration.</p>              </p></td>
421        <div class="section"><h4><a name="d1e603" id="d1e603" shape="rect"/><span class="secnum">2.2.1. </span>Representations of resources</h4>            </tr>
422          <p>For each of the resources, HTTP GET            <tr>
423            fetches a representation.</p>              <td>/{jobs}/(job-id)/phase</td>
424          <p>The representation of the Job List is              <td> the Phase of job
425            a list of links to extant jobs. The list may be empty if the UWS is            (job-id)</td>
426            idle.</p>              <td>one of the fixed strings</td>
427          <p>The representation of a Job is as specified by the <span class="element">&lt;job&gt;</span> element in the UWS schema as detailed in <span class="xref">UWSSchema</span></p>            </tr>
428          <p>An example job instance is shown below</p>            <tr>
429          <div>              <td>/{jobs}/(job-id)/executionduration</td>
430            <?incxml href="../UWSJobInstance.xml" ?>              <td>the
431          </div>            maximum execution duration of (job-id)</td>
432          <p>The representation of a Results List              <td>Integer number of seconds</td>
433            is a list of links to the resources representing the results. These            </tr>
434            resources may have any URI and any MIME type. A sensible default for            <tr>
435            their URIs is to make them children of /{jobs}/(job-id)/results, but              <td>/{jobs}/(job-id)/destruction</td>
436            this is not required. It may sometimes be easier for a service              <td> the
437            implementor to point to a resource on some web server separate from            destruction instant for (job-id)</td>
438            that running the UWS. Therefore, a client must always parse the              <td><cite>
439            Results List to find the results. Where a protocol applying UWS      [<a xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" href="#ref:std:iso8601">std:iso8601</a>]
440            specifies standard results it must do so by naming those results; the      </cite></td>
441            names then appear in the Results List in addition to the URIs. Not            </tr>
442            all results need to be named; sometimes the meaning of the result is            <tr>
443            obvious from the context and the name is omitted.</p>              <td>/{jobs}/(job-id)/error</td>
444                <td>any error
445              message associated with (job-id)</td>
446                <td>any representation appropriate to the implementing service</td>
447              </tr>
448              <tr>
449                <td>/{jobs}/(job-id)/quote </td>
450                <td>the Quote for
451              (job-id)</td>
452                <td>Integer number of seconds</td>
453              </tr>
454              <tr>
455                <td>/{jobs}/(job-id)/results</td>
456                <td>any parameters for the job
457              (job-id)</td>
458                <td>the <span class="xmlelement">&lt;results&gt;</span> element in the UWS schema</td>
459              </tr>
460              <tr>
461                <td>/{jobs}/(job-id)/parameters</td>
462                <td>any parameters for the job
463              (job-id)</td>
464                <td>the <span class="xmlelement">&lt;parameters&gt;</span> element in the UWS schema</td>
465              </tr>
466              <tr>
467                <td>/{jobs}/(job-id)/owner</td>
468                <td>the owner of the job (job-id)</td>
469                <td>and appropriate identifier as discussed in <h:span xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" class="xref"><a href="#security">3. </a></h:span></td>
470              </tr>
471            </table>
472            <p>The service implementor is free to
473              choose the names given in parentheses above, i.e. the root of the URI tree, and the form that the job identifider takes (though note that it should be a legal URI path element) - the other names are part
474              of the UWS standard.</p>
475            <p>The URI for the Job List, in its
476              absolute form is the root URI for the whole UWS. This URI should be
477              given as the access URL in the UWS registration.</p>
478          </div>
479          <div class="section"><h4><a name="d1e603" id="d1e603" shape="rect"/><span class="secnum">2.2.2. </span>Representations of resources</h4>
480            <p>For each of the resources HTTP GET
481              fetches a representation. In general where an object is a container for other objects then an XML representation of the object is returned, otherwise for simple atomic types a textual representation is returned. The XML schema for the various objects described above is
482              detailed in <h:span xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" class="xref"><a href="#UWSSchema">Appendix B. </a></h:span> of this specification. This schema is the definitive description of the exact form of the XML returned by a UWS and should not vary between implementations.</p>
483          <p>HTTP allows multiple representations          <p>HTTP allows multiple representations
484            of a resource distinguished by their MIME types and selected by the            of a resource distinguished by their MIME types and selected by the
485            HTTP headers of a GET request. UWS exploits this to support both web            HTTP "Accept" headers of a GET request. UWS exploits this to support both web
486            browsers and rich clients in the same tree of resources.</p>            browsers and rich clients in the same tree of resources. Although the default behaviour is to return XML, a UWS should return HTML or XHTML to
         <p>A UWS should return HTML or XHTML to  
487            clients that accept these types. These clients are assumed to be web            clients that accept these types. These clients are assumed to be web
488            browsers and the UWS is generating its own user interface. The HTML            browsers and the UWS is generating its own user interface. The HTML
489            interface generated should allow full control of the UWS via the use            interface generated should allow full control of the UWS via the use
490            of HTML forms and appropriate links.</p>          of HTML forms and appropriate links.</p>
491          <p>Clients which are assumed to be part          <p>Clients which are assumed to be part
492            of remote applications that drive UWS without showing the details to            of remote applications that drive UWS without showing the details to
493            their users should accept only application/xml. A UWS must therefore            their users should accept only "application/xml". A UWS must therefore
494            return XML representations of the resources.</p>            return XML representations of the resources in preference to the HTML representation. A technique that may be used to always return XML that modern browsers can transform on the client-side to HTML is via the <span class="xmlelement">&lt;?xml-stylesheet ?&gt;</span> processing instruction, which can be used to point to a suitable XSL resource to perform the transformation.</p>
495          <p>The XML schemata for the lists of          <p> More detail for some of the UWS objects is provided below;</p>
496            links, and for the Phase, Execution Duration and Quote documents, are          <div class="section"><h4><a name="d1e1030"/><span class="secnum">2.2.2.1. </span>Job List</h4>
497            detailed in Appendix A of this specification. They  should not vary            <p>The representation of the Job List is
498            between UWS installations.</p>              a list of links to extant jobs. The list may be empty if the UWS is
499                idle.</p>
500            </div>
501            <div class="section"><h4><a name="d1e1040"/><span class="secnum">2.2.2.2. </span>Job</h4>
502              <p>The representation of a Job is as specified by the <span class="xmlelement">&lt;job&gt;</span> element in the UWS schema as detailed in <h:span xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" class="xref"><a href="#UWSSchema, "/></h:span>an example or such a job instance is shown below</p>
503              <div><?incxml href="../UWSJobInstance.xml" ?><div xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" class="viewxml"><div class="element"><span class="markup">&lt;</span><span class="start-tag">uws:job</span> <span class="attribute-name">xsi:schemaLocation</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS/v1.0rc3 UWS.xsd "</span> <span class="attribute-name">xlmns:xml</span><span class="markup">=</span><span class="attribute-value">"http://www.w3.org/XML/1998/namespace"</span> <span class="attribute-name">xlmns:uws</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS/v1.0rc3"</span> <span class="attribute-name">xlmns:xlink</span><span class="markup">=</span><span class="attribute-value">"http://www.w3.org/1999/xlink"</span> <span class="attribute-name">xlmns:xsi</span><span class="markup">=</span><span class="attribute-value">"http://www.w3.org/2001/XMLSchema-instance"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">uws:jobId</span><span class="markup">&gt;</span><span class="text">cea-agdevel.jb.man.ac.uk-130.88.24.18-1242749568029-508182314</span><span class="markup">&lt;/</span><span class="end-tag">uws:jobId</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">uws:ownerId</span> <span class="attribute-name">xsi:nil</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">uws:phase</span><span class="markup">&gt;</span><span class="text">COMPLETED</span><span class="markup">&lt;/</span><span class="end-tag">uws:phase</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">uws:startTime</span><span class="markup">&gt;</span><span class="text">2009-05-19T17:12:48.038+01:00</span><span class="markup">&lt;/</span><span class="end-tag">uws:startTime</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">uws:endTime</span><span class="markup">&gt;</span><span class="text">2009-05-19T17:12:48.041+01:00</span><span class="markup">&lt;/</span><span class="end-tag">uws:endTime</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">uws:executionDuration</span><span class="markup">&gt;</span><span class="text">86400</span><span class="markup">&lt;/</span><span class="end-tag">uws:executionDuration</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">uws:destruction</span><span class="markup">&gt;</span><span class="text">2009-05-29T17:12:48.035+01:00</span><span class="markup">&lt;/</span><span class="end-tag">uws:destruction</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">uws:parameters</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">uws:parameter</span> <span class="attribute-name">id</span><span class="markup">=</span><span class="attribute-value">"scaleFactor"</span><span class="markup">&gt;</span><span class="text">1.8</span><span class="markup">&lt;/</span><span class="end-tag">uws:parameter</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">uws:parameter</span> <span class="attribute-name">id</span><span class="markup">=</span><span class="attribute-value">"image"</span> <span class="attribute-name">byReference</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">&gt;</span><span class="text">
504             http://myserver.org/uws/jobs/jobid123/param/image</span><span class="markup">&lt;/</span><span class="end-tag">uws:parameter</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">uws:parameters</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">uws:results</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">uws:result</span> <span class="attribute-name">id</span><span class="markup">=</span><span class="attribute-value">"correctedImage"</span> <span class="attribute-name">xlink:href</span><span class="markup">=</span><span class="attribute-value">"http://myserver.org/uws/jobs/jobid123/result/image"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">uws:results</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">uws:errorSummary</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"transient"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">uws:message</span><span class="markup">&gt;</span><span class="text">we have problem</span><span class="markup">&lt;/</span><span class="end-tag">uws:message</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">uws:detail</span> <span class="attribute-name">xlink:href</span><span class="markup">=</span><span class="attribute-value">"http://myserver.org/uws/jobs/jobid123/error"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">uws:errorSummary</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">uws:jobInfo</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">any</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xml</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">thatyouwant</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xml</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">any</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">uws:jobInfo</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">uws:job</span><span class="markup">&gt;</span></div></div></div>
505              <p>The <span class="xmlelement">&lt;job&gt;</span> element has placeholders of all of the standard UWS objects, and in addition there is a <span class="xmlelement">&lt;uws:jobinfo&gt;</span> element which can be used by implementations to include any extra information within the job description.</p>
506            </div>
507            <div class="section"><h4><a name="d1e1344"/><span class="secnum">2.2.2.3. </span>Results List</h4>
508              <p>The representation of a Results List
509                is a list of links to the resources representing the results. These
510                resources may have any URI and any MIME type. A sensible default for
511                their URIs is to make them children of /{jobs}/(job-id)/results, but
512                this is not required. It may sometimes be easier for a service
513                implementer to point to a resource on some web server separate from
514                that running the UWS. Therefore, a client must always parse the
515                Results List to find the results. Where a protocol applying UWS
516                specifies standard results it must do so by naming those results; the
517                names then appear in the Results List in addition to the URIs. Not
518                all results need to be named; sometimes the meaning of the result is
519                obvious from the context and the name is omitted.</p>
520            </div>
521                     <div class="section"><h4><a name="d1e1353"/><span class="secnum">2.2.2.4. </span>Parameters List</h4>
522              The representation of the parameters list is a list of
523              <span class="xmlelement">&lt;parameter&gt;</span> elements. Each of these elements can either represent the value of the parameter directly, where the content of the element is a textual representation of the parameter, or in the case where the parameter value cannot be represented legally within XML (e.g. the parameter is a binary type such as a FITS file) then the content of the parameter is a URL to the parameter value - to indicate this case the attribute byReference is set to "true".</div>
524        </div>        </div>
525        <div class="section"><h4><a name="d1e634" id="d1e634" shape="rect"/><span class="secnum">2.2.2. </span>State changing requests</h4>        <div class="section"><h4><a name="d1e634" id="d1e634" shape="rect"/><span class="secnum">2.2.3. </span>State changing requests</h4>
526          <p>Certain of the UWS' resources accept          <p>Certain of the UWS' resources accept
527            HTTP POST and DELETE messages to change the state of the service &#8211;            HTTP POST and DELETE messages to change the state of the service &#8211;
528            This is the fundamental way that a client controls the execution of a            This is the fundamental way that a client controls the execution of a
529            job. In most of the cases where a job subobject is set the response            job. In most of the cases where a job subobject is set the response
530            will have a http 303 &#8220;See other&#8221; status and a Location header            will have a http 303 &#8220;See other&#8221; status and a Location header
531            that points back to the main job summary obtained at the <span style="font-weight: medium">/{jobs}/(job-id)            that points back to the main job summary obtained at the <span style="font-weight: medium">/{jobs}/(job-id)
532              URI. The job summary contains the values of the main parameters              URI. The job summary contains the values of (or links to) all the UWS objects
533              within the returned XML (or XHTML). This mode of operation was chosen              within the returned XML (or XHTML). This mode of operation was chosen
534              (as opposed to returning only the sub-object being altered) as it              (as opposed to returning only the sub-object being altered) as it
535              makes for a more natural user interface &#8211; especially in the case of              makes for a more natural user interface &#8211; especially in the case of
536              the XHMTL interface. A client that wants to obtain only the value of              the XHMTL interface. A client that wants to obtain only the value of
537              a particular sub-object can at any time request that sub-object with              a particular sub-object can at any time request that sub-object with
538            a HTTP GET.</span></p>            a HTTP GET.</span></p>
539          <h5>Creating a Job</h5>          <div class="section"><h4><a name="d1e1375"/><span class="secnum">2.2.3.1. </span>Creating a Job</h4>
540          <p>POSTing a request to the Job List            <p>POSTing a request to the Job List
541            creates a new job (unless the service rejects the request). The              creates a new job (unless the service rejects the request). The
542            response when a job is accepted must have code 303 &#8220;See other&#8221;              response when a job is accepted must have code 303 &#8220;See other&#8221;
543            and the Location header of the response must point to the created              and the Location header of the response must point to the created
544            job.</p>              job.</p>
545          <p>This initial POST will in most cases            <p>This initial POST will in most cases
546            carry parameters for the protocol that is using the UWS pattern, as              carry parameters for the protocol that is using the UWS pattern, as
547            detailed in section 3.</p>              detailed in <h:span xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" class="xref"><a href="#ApplicationsOfUWS">4. </a></h:span>.</p>
548          <h5>Deleting a Job</h5>          </div>
549          <p>Sending a HTTP DELETE to a Job          <div class="section"><h4><a name="d1e1390"/><span class="secnum">2.2.3.2. </span>Deleting a Job</h4>
550            resource destroys that job, with the meaning noted in the definition            <p>Sending a HTTP DELETE to a Job
551            of the Job object, above. No other resource of the UWS may be              resource destroys that job, with the meaning noted in the definition
552            directly deleted by the client. The response to this request must              of the Job object, above. No other resource of the UWS may be
553            have code 303 &#8220;See other&#8221; and the Location header of the response              directly deleted by the client. The response to this request must
554            must point to the Job List at the /{jobs} URI.</p>              have code 303 &#8220;See other&#8221; and the Location header of the response
555          <p>Posting a request  with a parameter              must point to the Job List at the /{jobs} URI.</p>
556            ACTION=DELETE to the Job also destroys the job, the response being as            <p>Posting a request  with a parameter
557            for a deletion. This action supports web browsers which typically              ACTION=DELETE to the Job also destroys the job, the response being as
558            cannot send DELETE requests.</p>              for a deletion. This action supports web browsers which typically
559          <h5>Changing the Destruction              cannot send DELETE requests.</p>
560            Time</h5>          </div>
561          <p>The Destruction Time may be changed          <div class="section"><h4><a name="d1e1402"/><span class="secnum">2.2.3.3. </span>Changing the Destruction
562            by POSTing to  /{jobs}/(job-id)/destruction.  In this case, the body              Time</h4>
563            of the posted request is of type <i>application/x-www-form-urlencoded</i><b> </b><span style="font-weight: medium">and            <p>The Destruction Time may be changed
564              contains the parameter named DESTRUCTION whose value is the new              by POSTing to  /{jobs}/(job-id)/destruction.  In this case, the body
565              destruction time in ISO8601 format; i.e. this request is what an HTML              of the posted request is of type <i>application/x-www-form-urlencoded</i><b> </b><span style="font-weight: medium">and
566            form sends.</span></p>                contains the parameter named DESTRUCTION whose value is the new
567          <p style="font-weight: medium">The                destruction time in ISO8601 format; i.e. this request is what an HTML
568            response to this request must have code 303 &#8220;See other&#8221; and the              form sends.</span></p>
569            Location header of the response must point to the /{jobs}/(job-id)            <p style="font-weight: medium">The
570            URI so that the client receives the value that the service has              response to this request must have code 303 &#8220;See other&#8221; and the
571            actually set the Destruction Time to within the Job summary response.</p>              Location header of the response must point to the /{jobs}/(job-id)
572          <h5>Changing the Execution              URI so that the client receives the value that the service has
573            Duration</h5>              actually set the Destruction Time to within the Job summary response.</p>
574          <p>The Execution Duration may be changed          </div>
575            by POSTing to  /{jobs}/(job-id)/termination.  In this case, the body          <div class="section"><h4><a name="d1e1420"/><span class="secnum">2.2.3.4. </span>Changing the Execution
576            of the posted request is of type <i>application/x-www-form-urlencoded</i><b> </b><span style="font-weight: medium">and              Duration</h4>
577              contains the parameter named TERMINATION whose value is the new            <p>The Execution Duration may be changed
578            executionduration in seconds.</span></p>              by POSTing to  /{jobs}/(job-id)/executionduration.  In this case, the body
579          <p style="font-weight: medium">The              of the posted request is of type <i>application/x-www-form-urlencoded</i><b> </b><span style="font-weight: medium">and
580            response to this request must have code 303 &#8220;See other&#8221; and the                contains the parameter named EXECUTIONDURATION whose value is the new
581            Location header of the response must point to the              executionduration in seconds.</span></p>
582            /{jobs}/(job-id)/URI so that the client receives the value that the            <p style="font-weight: medium">The
583            service has actually set the Execution Duration to &#8211; the service is              response to this request must have code 303 &#8220;See other&#8221; and the
584            free to override the request if it needs.</p>              Location header of the response must point to the
585          <h5 style="font-weight: medium">        Starting a Job</h5>              /{jobs}/(job-id) so that the client receives the value that the
586          <p style="font-weight: medium">A              service has actually set the Execution Duration to &#8211; the service is
587            job may be started by POSTing to the /{jobs}/(job-id)/phase URI. The              free to override the request if it needs.</p>
588            POST contains a single parameter PHASE=RUN which instructs the UWS to          </div>
589            attempt to start the job. The response to this request must have code          <div class="section"><h4><a name="d1e1439"/><span class="secnum">2.2.3.5. </span>        Starting a Job</h4>
590            303 &#8220;See other&#8221; and the Location header of the response must            <p style="font-weight: medium">A
591            point to the /{jobs}/(job-id) URI so that the client receives the              job may be started by POSTing to the /{jobs}/(job-id)/phase URI. The
592            phase that the job has been set to. Typically a UWS will put a job              POST contains a single parameter PHASE=RUN which instructs the UWS to
593            into a QUEUED state on receipt of this command, but depending on how              attempt to start the job. The response to this request must have code
594            busy the server is, the job might be put almost immediately (and              303 &#8220;See other&#8221; and the Location header of the response must
595            without client intervention) into an EXECUTING state.</p>              point to the /{jobs}/(job-id) URI so that the client receives the
596          <h5 style="font-weight: medium">Aborting a Job</h5>              phase that the job has been set to. Typically a UWS will put a job
597          <p style="font-weight: medium">A              into a QUEUED state on receipt of this command, but depending on how
598            job may be aborted by POSTing to the /{jobs}/(job-id)/phase URI. The              busy the server is, the job might be put almost immediately (and
599            POST contains a single parameter PHASE=ABORT which instructs the UWS              without client intervention) into an EXECUTING state.</p>
600            to attempt to abort the job. The response to this request must have          </div>
601            code 303 &#8220;See other&#8221; and the Location header of the response must          <div class="section"><h4><a name="d1e1448"/><span class="secnum">2.2.3.6. </span>Aborting a Job</h4>
602            point to the /{jobs}/(job-id) URI so that the client receives the            <p style="font-weight: medium">A
603            phase that the job has been set to.</p>              job may be aborted by POSTing to the /{jobs}/(job-id)/phase URI. The
604                POST contains a single parameter PHASE=ABORT which instructs the UWS
605                to attempt to abort the job. The response to this request must have
606                code 303 &#8220;See other&#8221; and the Location header of the response must
607                point to the /{jobs}/(job-id) URI so that the client receives the
608                phase that the job has been set to.</p>
609            </div>
610        </div>        </div>
611        <div class="section"><h4><a name="d1e708" id="d1e708" shape="rect"/><span class="secnum">2.2.3. </span>Message pattern</h4>        <div class="section"><h4><a name="d1e708" id="d1e708" shape="rect"/><span class="secnum">2.2.4. </span>Message pattern</h4>
612          <p>The REST binding results in the          <p>The REST binding results in the
613            message pattern shown in figure 2.</p>            message pattern shown in figure 2.</p>
614          <p><i>Illustration 2:          <p><i>Illustration 2:
615          Typical calling sequence for the REST binding of UWS</i></p>          Typical calling sequence for the REST binding of UWS</i></p>
616          <p><img src="Sequence_Diagram__UWS__Rest_Message_Pattern__Rest_Message_Pattern__Rest_Message_Pattern.png" name="graphics3" width="1970" height="1024" border="0" align="left" id="graphics3" alt="rest message pattern"/><br clear="none"/>          <p><img src="Sequence_Diagram__UWS__Rest_Message_Pattern__Rest_Message_Pattern__Rest_Message_Pattern.png" name="graphics3" width="1970" height="1024" border="0" align="left" id="graphics3" alt="rest message pattern"/>
           <br clear="none"/>  
617            </p>            </p>
618        </div>        </div>
619      </div>      </div>
620    
     <div class="section"><h3><a name="SOAPbinding" id="SOAPbinding" shape="rect"/><span class="secnum">2.3. </span> SOAP binding</h3>  
       <h4>Resources and URIs</h4>  
       <p>For a SOAP-bound UWS there is only  
         one web resource and therefore one URI. This resource corresponds  
         roughly to the Job List object of the UWS and all the other objects  
         are accessed via methods on the Job List.</p>  
       <p>The single URI of a SOAP-bound UWS  
         must be registered as its access URL.</p>  
       <p>Since the SOAP binding has only a  
         single URI it needs a different way to indicate the job to which a  
         request applies. Job-specific requests and reponses must carry a SOAP  
         header containing a WS-Addressing structure. In this structure, the  
         wsa:<i>ResourceIdentifier</i> element names the resource; it is an  
         opaque string to the client and is meaningful only to the service.  
         The identifier for a given job is stated in the response to the  
         request that creates it; that request is one that does not need a  
         WS-Addressing header.</p>  
       <p>The exact use of WS-Addressing will  
         be stated in the WSDL for the SOAP binding which is TDB.</p>  
       <h4>Representations of objects</h4>  
       <p>The SOAP binding allows the client to  
         retrieve representations of some of the UWS objects. Unlike the REST  
         binding, it does not allow all the objects to be represented.  
         Further, the SOAP binding only provides XML representations; it does  
         not support HTML in any way.</p>  
       <p>Representations may be got from the  
         following methods.</p>  
       <ul><li>  
           <p>getJobs() - return the currently  
             known job identifiers</p>  
       </li><li>  
         <p>getSummary() - return a summary  
           of the job </p>  
       </li><li>  
         <p>getExecutionDuration() - return  
           the execution duration for a job </p>  
       </li><li>  
         <p>getDestructionTime() - get the  
           destruction time for a job</p>  
       </li><li>  
         <p>getQuote() - get the quote for a  
           job</p>  
       </li><li>  
         <p>getPhase() - get the phase for a  
           job</p>  
       </li><li>  
         <p>getResults() - get the Results  
           for a job</p>  
       </li><li>  
         <p>getError() - get the error  
           associated with a job</p>  
       </li></ul>  
       <p>Note that there is no representation  
         of a Job as a whole. The method getResults() packs all the results in  
         one XML document and returns that document. The details of the  
         available results are defined by applications of the UWS pattern.</p>  
       <h4>State-changing operations</h4>  
       <p>The following methods of a UWS change  
         its state; most of them change the state of one particular job.</p>  
       <ul><li>  
           <p>createJob()</p>  
       </li><li>  
         <p>setExecutionDuration()</p>  
       </li><li>  
         <p>setDestructionTime()</p>  
       </li><li>  
         <p>execute()</p>  
       </li><li>  
         <p>abort()</p>  
       </li><li>  
         <p>destroy()</p>  
       </li></ul>  
       <p>The excute() method commits a job for  
         execution. The destroy() method destroys the target job.</p>  
       <p>The exact content posted to create a  
         job is defined by applications of the UWS pattern.</p>  
       <h4>Message pattern</h4>  
       <p>The SOAP binding has the message  
         pattern shown in figure 3.</p>  
       <p>Note that the number of objects is  
         much lower than in the REST binding and the number of messages lower  
         by one. However, the complexity of each message is significantly  
         greater. The overall complexity of the pattern is roughly the same in  
         each binding.</p>  
       <p><img src="SOAPSequence.gif" align="top" alt="SOAP message pattern"/><br clear="none"/>  
         <br clear="none"/>  
               </p>  
621      </div>      </div>
622    </div>    <div class="section"><h2><a name="security" id="security" shape="rect"/><span class="secnum">3. </span>Security Considerations</h2>
623    <div class="section"><h2><a name="SecurityConsiderations" id="SecurityConsiderations" shape="rect"/><span class="secnum">3. </span>Security Considerations</h2>      <p>A UWS should follow IVOA standards for security <cite>
624      <p>TBC</p>      [<a xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" href="#ref:std:ssoauth">std:ssoauth</a>]
625        </cite> if it is desired that a non-public UWS be created. It is possible to imagine many different authorization policies that might be employed in an authenticated UWS, where particular groups of users have different permissions to create and view different types of jobs. A full discussion of such authorization policies is beyond the scope of this document, but a UWS should behave as described in section <h:span xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" class="xref"><a href="#RESTbinding">2.2. </a></h:span> for any individual authenticated user, although it is clear that a user without sufficient privileges might only obtain a restricted list of jobs withing the joblist at /{jobs}. Any attempt to retrieve a job for which the user does not have sufficient privilege should result in a 403 Forbiden HTTP status being returned.</p>
626        <p>When an authentication mechanism is used in the UWS then the implementation should set the owner object to the identity obtained by the authentication. </p>
627    </div>    </div>
628    <div class="section"><h2><a name="ApplicationsOfUWS" id="ApplicationsOfUWS" shape="rect"/><span class="secnum">4. </span> Applications of UWS (informative)</h2>    <div class="section"><h2><a name="ApplicationsOfUWS" id="ApplicationsOfUWS" shape="rect"/><span class="secnum">4. </span> Applications of UWS (informative)</h2>
629      <p>The UWS pattern leaves undefined two      <p>The UWS pattern leaves undefined two
# Line 644  Line 639 
639      <p>Any of these cases could be worked up      <p>Any of these cases could be worked up
640        into a full IVOA standard by formalizing the description, adding        into a full IVOA standard by formalizing the description, adding
641        detail (schemata, WSDL) and generally making the specification more        detail (schemata, WSDL) and generally making the specification more
642        exact and complete. I suggest that each case so treated be broken out        exact and complete.</p>
       into a separate specification-document.</p>  
643      <div class="section"><h3><a name="Imageservice" id="Imageservice" shape="rect"/><span class="secnum">4.1. </span> Image service with data staging</h3>      <div class="section"><h3><a name="Imageservice" id="Imageservice" shape="rect"/><span class="secnum">4.1. </span> Image service with data staging</h3>
644        <p>Consider a service that computes        <p>Consider a service that computes
645          images from archive data. The computation takes significant time, so          images from archive data. The computation takes significant time, so
646          the service is asynchronous. The service keeps the computed images in          the service is asynchronous. The service keeps the computed images in
647          its own storage until the user downloads them; this is essentially          its own storage until the user downloads them; this is essentially
648          the model of SIAP <cite>std:siap</cite>.</p>          the model of SIAP <cite>
649        [<a xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" href="#ref:std:siap">std:siap</a>]
650        </cite>.</p>
651        <p>The asynchronous image-service is a        <p>The asynchronous image-service is a
652          logical extension of a synchronous SIA service. Therefore it uses the          logical extension of a synchronous SIA service. Therefore it uses the
653          REST binding of UWS.</p>          REST binding of UWS.</p>
# Line 743  Line 739 
739          one service contract will work for all the applications and a single          one service contract will work for all the applications and a single
740          implementation of the contract can be reused for all cases.</p>          implementation of the contract can be reused for all cases.</p>
741        <p>AstroGrid&#8217;s Common Execution        <p>AstroGrid&#8217;s Common Execution
742          Architecture (CEA) [11] works in this way. It has just one service          Architecture (CEA) <cite>
743        [<a xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" href="#ref:harrison05">harrison05</a>]
744        </cite> works in this way. It has just one service
745          contract for all applications (including ADQL services; the ADQL          contract for all applications (including ADQL services; the ADQL
746          query is passed in the list of parameters). It has four          query is passed in the list of parameters). It has four
747          implementations, one for each of the possible interfaces between the          implementations, one for each of the possible interfaces between the
# Line 761  Line 759 
759          the service configuration set by the service provider. It does not          the service configuration set by the service provider. It does not
760          accept code from the client for local execution.</p>          accept code from the client for local execution.</p>
761        <p>The JDL in CEA v2 is similar to that        <p>The JDL in CEA v2 is similar to that
762          in CEA v1 [11]. It is a formal, XML vocabulary for expressing choice          in CEA v1 It is a formal, XML vocabulary for expressing choice
763          of application and parameter lists [12]. Parameters may be inputs or          of application and parameter lists <cite>
764        [<a xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" href="#ref:std:vocea">std:vocea</a>]
765        </cite>. Parameters may be inputs or
766          outputs of the job.</p>          outputs of the job.</p>
767        <p>To start a job, a document in this        <p>To start a job, a document in this
768          JDL is posted to the UWS. The document is sent in its native          JDL is posted to the UWS. The document is sent in its native
769          MIME-type, application/xml, so this is not an interface that can be          MIME-type, application/xml, so this is not an interface that can be
770          driven directly from an HTML form, although it can be driven from the          driven directly from an HTML form, although it can be driven from the
771          emerging Xforms technology.</p>          emerging XForms technology<cite>
772        [<a xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" href="#ref:std:xform">std:xform</a>]
773        </cite>.</p>
774        <p>The results of the job depend on the        <p>The results of the job depend on the
775          choice of application. They are all named results and the names and          choice of application. They are all named results and the names and
776          types are defined in the definition of the application. That          types are defined in the definition of the application. That
# Line 842  Line 844 
844    <div class="section"><h3><a name="d1e1112" id="d1e1112"/><span class="secnum">Appendix A.1. </span>At Version 0.5</h3>    <div class="section"><h3><a name="d1e1112" id="d1e1112"/><span class="secnum">Appendix A.1. </span>At Version 0.5</h3>
845      <ul><li>      <ul><li>
846          <p>changed the POST parameter names          <p>changed the POST parameter names
847            to be the same as the resource paths/</p>            to be the same as the resource paths.</p>
848          </li><li>          </li><li>
849            <p>added synchronous section.</p>            <p>added synchronous section.</p>
850          </li><li>          </li><li>
851            <p>updated SOAP binding section</p>            <p>updated SOAP binding section</p>
852          </li></ul>          </li></ul>
853    </div>    </div>
854      <div class="section"><h3><a name="d1e1775"/><span class="secnum">Appendix A.2. </span>At Version 1.0</h3>
855      <ul>
856       <li>Removed all SOAP binding - deferred to later version.</li>
857       <li>Added parameterList</li>
858       <li>Added ownerId and jobId as subsidiary job object</li>
859      </ul>
860      </div>
861    </div>
862    
863    <div class="section"><h2><a name="UWSSchema" id="UWSSchema"/><span class="secnum">Appendix B. </span> UWS Schema</h2>
864      <p>Note that this schema can be found on-line at <a href="http://www.ivoa.net/xml/UWS/1.0" shape="rect">http://www.ivoa.net/xml/UWS/v1.0</a> (i.e. the target namespace
865    can also be used as a URL for the schema.) This location should
866    represent the definitive source, the schema is reproduced below only for
867    completeness of this document.</p>
868      <div><?incxml href="../UWS.xsd"?><div xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" class="viewxml"><div class="comment">&lt;!-- $Id: UWS.xsd,v 1.1 2009/06/15 15:30:32 pah Exp $ --&gt;</div><div class="comment">&lt;!-- proposal for basic UWS schema - Paul Harrison May 2008 --&gt;</div><div class="comment">&lt;!--
869          $Log: UWS.xsd,v $
870          Revision 1.1  2009/06/15 15:30:32  pah
871          made some of the global element defintions for job subobjects just local again
872          added runid, ownerid
873          added ParamList
874          changed some element names to be consistent with the uris
875     Revision 1.6 2008/10/01 11:54:02 pah fix up cvs
876          header Revision 1.5 2008/09/25 00:22:35 pah change termination
877          time to execution duration
878       --&gt;</div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:schema</span> <span class="attribute-name">targetNamespace</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS/v1.0rc3"</span> <span class="attribute-name">elementFormDefault</span><span class="markup">=</span><span class="attribute-value">"qualified"</span> <span class="attribute-name">attributeFormDefault</span><span class="markup">=</span><span class="attribute-value">"unqualified"</span> <span class="attribute-name">xlmns:xml</span><span class="markup">=</span><span class="attribute-value">"http://www.w3.org/XML/1998/namespace"</span> <span class="attribute-name">xlmns:xs</span><span class="markup">=</span><span class="attribute-value">"http://www.w3.org/2001/XMLSchema"</span> <span class="attribute-name">xlmns:uws</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS/v1.0rc3"</span> <span class="attribute-name">xlmns:xlink</span><span class="markup">=</span><span class="attribute-value">"http://www.w3.org/1999/xlink"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:import</span> <span class="attribute-name">namespace</span><span class="markup">=</span><span class="attribute-value">"http://www.w3.org/1999/xlink"</span> <span class="attribute-name">schemaLocation</span><span class="markup">=</span><span class="attribute-value">"http://software.astrogrid.org/schema/stc/STC/v1.30/XLINK.xsd"</span><span class="markup">/&gt;</span></div><div class="comment">&lt;!--
879          &lt;xs:import namespace="http://www.w3.org/1999/xlink"
880          schemaLocation="http://www.ivoa.net/xml/Xlink/xlink.xsd"/&gt;
881       --&gt;</div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ShortJobDescription"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"phase"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ExecutionPhase"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> the execution phase - returned at
882                      /(jobs)/(jobid)/phase</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"id"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:JobIdentifier"</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"required"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attributeGroup</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:reference"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:attributeGroup</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"reference"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">standard xlink references
883             </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"xlink:type"</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"optional"</span> <span class="attribute-name">default</span><span class="markup">=</span><span class="attribute-value">"simple"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"xlink:href"</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"optional"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:attributeGroup</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:simpleType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ExecutionPhase"</span><span class="markup">&gt;</span><div class="comment">&lt;!--
884             need to think a little here about the implication of allowing a
885             "re-entrant" application that is capable of running
886             mini-jobs...probably this is indicated with a different state
887             varible entirely
888          --&gt;</div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> Enumeration of possible phases of job
889                execution</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:restriction</span> <span class="attribute-name">base</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"PENDING"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> The first phase a job is entered into
890                      - this is where a job is being set up but no request
891                      to run has occurred.</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"QUEUED"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> An job has been accepted for execution
892                      but is waiting in a queue</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"EXECUTING"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">An job is running</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"COMPLETED"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> An job has completed successfully
893                   </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"ERROR"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> Some form of error has occurred
894                   </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"UNKNOWN"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> The job is in an unknown state
895                   </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"HELD"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> The job is HELD pending execution and
896                      will not automatically be executed (cf pending)
897                   </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"SUSPENDED"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> The job has been suspended by the
898                      system during execution</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"ABORTED"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> The job has been aborted, either by
899                      user request or by the server because of lack or
900                      overuse of resources.</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:restriction</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:simpleType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"JobSummary"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">The complete representation of the state
901                of a job</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"jobId"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:JobIdentifier"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"runId"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> this is a client supplied identifier -
902                      the UWS system does nothing other than to return it as
903                      part of the description of the job</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ownerId"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">the owner (creator) of the job -
904                      this should be expressed as a string that can be
905                      parsed in accordance with IVOA security standards. If
906                      there was no authenticated job creator then this
907                      should be set to NULL.</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"phase"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ExecutionPhase"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> the execution phase - returned at
908                      /(jobs)/(jobid)/phase</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"quote"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:dateTime"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"true"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> A Quote predicts when the job is likely to complete - returned at /(jobs)/(jobid)/quote
909                      "don't know" is encoded by setting to the XML null value xsi:nil="true"</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"startTime"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:dateTime"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">The instant at which the job started execution.</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"endTime"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:dateTime"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">The instant at which the job finished execution</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"executionDuration"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:int"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"false"</span><span class="markup">&gt;</span><div class="comment">&lt;!-- TODO look if xs:duration here has any benefits --&gt;</div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> The duration (in seconds) for which
910                      the job should be allowed to run - a value of 0 is
911                      intended to mean unlimited - returned at
912                      /(jobs)/(jobid)/executionduration</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"destruction"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:dateTime"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> The time at which the whole job +
913                      records + results will be destroyed. returned at
914                      /(jobs)/(jobid)/destruction</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:parameters"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">The parameters to the job (where appropriate)
915    can also be retrieved at /(jobs)/(jobid)/parameters</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:results"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">The results for the job - can also be retrieved at /(jobs)/(jobid)/results</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"errorSummary"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ErrorSummary"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">&gt;</span><span class="text">
916             </span><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"jobInfo"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> This is arbitrary information that can
917                      be added to the job description by the UWS
918                      implementation.</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:any</span> <span class="attribute-name">namespace</span><span class="markup">=</span><span class="attribute-value">"##any"</span> <span class="attribute-name">processContents</span><span class="markup">=</span><span class="attribute-value">"lax"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"unbounded"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:simpleType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"JobIdentifier"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> The identifier for the job
919             </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:restriction</span> <span class="attribute-name">base</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:simpleType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"job"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:JobSummary"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> This is the information that is returned
920                when a GET is made for a single job resource - i.e.
921                /(jobs)/(jobid)</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"jobs"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> The list of job references returned at
922                /(jobs)</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> ISSUE - do we want to have any sort of
923                   paging or selection mechanism in case the job list gets
924                   very large? Or is that an unnecessary complication...
925                </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"jobref"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ShortJobDescription"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"unbounded"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ResultReference"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> A reference to a UWS result
926             </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"phase"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ExecutionPhase"</span><span class="markup">/&gt;</span></div><div class="comment">&lt;!--
927                pah - TODO why is this here - there was a use case to do
928                with picking up results of partially finished jobs ?
929             --&gt;</div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"id"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"required"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attributeGroup</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:reference"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"results"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> The element returned for
930                /(jobs)/(jobid)/results</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"result"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ResultReference"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"unbounded"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ErrorSummary"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> A short summary of an error - a fuller representation of the error may be retrieved from /(jobs)/(jobid)/error
931             </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"message"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span><span class="markup">/&gt;</span></div><div class="comment">&lt;!-- is this detail redundant if we say that the "detailed message" is always available from /(jobs)/(jobid)/error--&gt;</div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"detail"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attributeGroup</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:reference"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"type"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ErrorType"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">characterization of the
932                   type of the error</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:attribute</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:simpleType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ErrorType"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:restriction</span> <span class="attribute-name">base</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"transient"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"fatal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:restriction</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:simpleType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"Parameter"</span> <span class="attribute-name">mixed</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> the list of input parameters to the job - if
933                the job description language does not naturally have
934                parameters, then this list should contain one element which
935                is the content of the original POST that created the job.
936             </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"byReference"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:boolean"</span> <span class="attribute-name">default</span><span class="markup">=</span><span class="attribute-value">"false"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> if this attribute is true then the
937                   content of the parameter represents a URL to retrieve the
938                   actual parameter value.</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> It is up to the implementation to decide
939                   if a parameter value cannot be returned directly as the
940                   content - the basic rule is that the representation of
941                   the parameter must allow the whole job element to be
942                   valid XML. If this cannot be achieved then the parameter
943                   value must be returned by reference.</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:attribute</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"id"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"required"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text"> the identifier for the parameter
944                </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:attribute</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"isPost"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:boolean"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameters"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"parameter"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:Parameter"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"unbounded"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:schema</span><span class="markup">&gt;</span></div><div class="comment">&lt;!--
945    
946     --&gt;</div></div></div>
947    
948    </div>
949  </div>  </div>
950  <div class="section"><h2><a name="References" id="References"/><span class="secnum">Appendix B. </span>References</h2>  <div class="section-nonum'"><h2><a name="References" id="References"/>References</h2>
951   <div>   <div>
952   <?bibliography ivoadoc/refs.bib ?>   <?bibliography ivoadoc/refs.bib ?>
953  <dl>  <dl>
954    
955    <dt><a name="std:xform">[std:xform] John~M. Boyer, editor.</a></dt> <dd>
956      <a href="http://www.w3.org/TR/xforms11/" >Xforms 1.1</a>, 2007.
957    </dd>
958    
959    <dt><a name="std:soap">[std:soap] Don Box, David Ehnebuske, Gopal Kakivaya,
960      Andrew Layman, Noah Mendelsohn, Henrik~Frystyk Nielsen, Satish Thatte, and
961      Dave Winer.</a></dt> <dd>
962      <a href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/" >Simple object access
963      protocol (soap) 1.1</a>, 2000.
964    </dd>
965    
966  <dt><a name="fielding00">[fielding00] Roy~Thomas Fielding.</a></dt> <dd>  <dt><a name="fielding00">[fielding00] Roy~Thomas Fielding.</a></dt> <dd>
967    <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm"    <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm"
968    ><em>Architectural Styles and the Design of Network-based Software    ><em>Architectural Styles and the Design of Network-based Software
# Line 862  Line 970 
970    PhD thesis, University of California, Irvine, 2000.    PhD thesis, University of California, Irvine, 2000.
971  </dd>  </dd>
972    
973    <dt><a name="std:iso8601">[std:iso8601] {Grid and Web Services Working Group},
974      Guy Rixon and Matthew Graham, editors.</a></dt> <dd>
975      <a href="http://www.ivoa.net/Documents/latest/SSOAuthMech.html" >Ivoa
976      single-sign-on profile: Authentication mechanisms version 1.01</a>, 2008.
977    </dd>
978    
979    <dt><a name="std:ssoauth">[std:ssoauth] {Grid and Web Services Working Group},
980      Guy Rixon and Matthew Graham, editors.</a></dt> <dd>
981      <a href="http://www.ivoa.net/Documents/latest/SSOAuthMech.html" >Ivoa
982      single-sign-on profile: Authentication mechanisms version 1.01</a>, 2008.
983    </dd>
984    
985  <dt><a name="harrison05">[harrison05] P.~Harrison.</a></dt> <dd>  <dt><a name="harrison05">[harrison05] P.~Harrison.</a></dt> <dd>
986    <a href="http://www.ivoa.net/Documents/latest/CEA.html" >A proposal for a    <a href="http://www.ivoa.net/Documents/latest/CEA.html" >A proposal for a
987    common execution architecture</a>.    common execution architecture</a>.
988    {IVOA Note}, May 2005.    {IVOA Note}, May 2005.
989  </dd>  </dd>
990    
991    <dt><a name="std:vocea">[std:vocea] Paul Harrison.</a></dt> <dd>
992      Vocea - an xml schema for registering cea.
993    </dd>
994    
995    <dt><a name="sextractor">[sextractor]
996      http://astromatic.iap.fr/software/sextractor/.</a></dt> <dd>
997      <a href="http://astromatic.iap.fr/software/sextractor/" >Sextractor</a>.
998      [Online].
999    </dd>
1000    
1001  <dt><a name="std:adql">[std:adql] Iņaki Ortiz, Jeff Lusted, Pat Dowler,  <dt><a name="std:adql">[std:adql] Iņaki Ortiz, Jeff Lusted, Pat Dowler,
1002    Alexander Szalay, Yuji Shirasaki, Maria~A. Nieto-Santisteba, Masatoshi    Alexander Szalay, Yuji Shirasaki, Maria~A. Nieto-Santisteba, Masatoshi
1003    Ohishi, William OÕMullane, Pedro Osuna, the VOQL-TEG, and the VOQL    Ohishi, William OÕMullane, Pedro Osuna, the VOQL-TEG, and the VOQL
1004    Working~Group.</a></dt> <dd>    Working~Group, Pedro Osuna and Iņaki Ortiz, editors.</a></dt> <dd>
1005    <a href="http://www.ivoa.net/Documents/latest/ConeSearch.html" >Ivoa    <a href="http://www.ivoa.net/Documents/latest/ConeSearch.html" >Ivoa
1006    astronomical data query language</a>.    astronomical data query language</a>.
1007    {IVOA Recommendation}, 2008.    {IVOA Recommendation}, 2008.
1008  </dd>  </dd>
1009    
1010  <dt><a name="sextractor">[sextractor] SExtractor.</a></dt> <dd>  <dt><a name="std:siap">[std:siap] Doug Tody and Ray Plant, Paul Harrison,
1011    <a href="http://astromatic.iap.fr/software/sextractor/" >Sextractor</a>.    editor.</a></dt> <dd>
   [Online].  
 </dd>  
   
 <dt><a name="std:siap">[std:siap] Doug Tody and Ray Plant.</a></dt> <dd>  
1012    <a href="http://www.ivoa.net/Documents/latest/SIA.html" >Simple image access    <a href="http://www.ivoa.net/Documents/latest/SIA.html" >Simple image access
1013    specification</a>.    specification</a>.
1014    {IVOA Recommendation}, 2009.    {IVOA Recommendation}, 2009.
1015  </dd>  </dd>
1016    
1017  <dt><a name="std:scs">[std:scs] Roy Williams, Robert Hanisch, Alex Szalay, and  <dt><a name="std:scs">[std:scs] Roy Williams, Robert Hanisch, Alex Szalay, and
1018    Raymond Plante.</a></dt> <dd>    Raymond Plante, Raymond Plante, editor.</a></dt> <dd>
1019    <a href="http://www.ivoa.net/Documents/latest/ConeSearch.html" >Simple cone    <a href="http://www.ivoa.net/Documents/latest/ConeSearch.html" >Simple cone
1020    search</a>.    search</a>.
1021    {IVOA Recommendation}, 2008.    {IVOA Recommendation}, 2008.
# Line 897  Line 1023 
1023    
1024  </dl></div>  </dl></div>
1025  </div>  </div>
 <div class="section"><h2><a name="UWSSchema" id="UWSSchema"/><span class="secnum">Appendix C. </span> Appendix A Schema</h2>  
 <div><?incxml href="http://www.astrogrid.org/viewcvs/astrogrid/contracts/src/schema/cea/UWS/v0.9/UWS.xsd?view=co"?><div xmlns:h="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" class="viewxml"><div class="comment">&lt;!-- $Id: UWS.xsd,v 1.6 2008/10/01 11:54:02 pah Exp $ --&gt;</div><div class="comment">&lt;!-- proposal for basic UWS schema - Paul Harrison May 2008 --&gt;</div><div class="comment">&lt;!--  
   
 $Log: UWS.xsd,v $  
 Revision 1.6  2008/10/01 11:54:02  pah  
 fix up cvs header  
   
 Revision 1.5  2008/09/25 00:22:35  pah  
 change termination time to execution duration  
   
  --&gt;</div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:schema</span> <span class="attribute-name">targetNamespace</span><span class="markup">=</span><span class="attribute-value">"http://www.ivoa.net/xml/UWS/v0.9.2"</span> <span class="attribute-name">elementFormDefault</span><span class="markup">=</span><span class="attribute-value">"qualified"</span> <span class="attribute-name">attributeFormDefault</span><span class="markup">=</span><span class="attribute-value">"unqualified"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:import</span> <span class="attribute-name">namespace</span><span class="markup">=</span><span class="attribute-value">"http://www.w3.org/1999/xlink"</span> <span class="attribute-name">schemaLocation</span><span class="markup">=</span><span class="attribute-value">"../../../stc/STC/v1.30/XLINK.xsd"</span><span class="markup">/&gt;</span></div><div class="comment">&lt;!--  
       &lt;xs:import namespace="http://www.w3.org/1999/xlink"  
       schemaLocation="http://www.ivoa.net/xml/Xlink/xlink.xsd"/&gt;  
    --&gt;</div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ShortJobDescription"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:phase"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"id"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:JobIdentifier"</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"required"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attributeGroup</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:reference"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:attributeGroup</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"reference"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">standard xlink references</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"xlink:type"</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"optional"</span> <span class="attribute-name">default</span><span class="markup">=</span><span class="attribute-value">"simple"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"xlink:href"</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"optional"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:attributeGroup</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:simpleType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ExecutionPhase"</span><span class="markup">&gt;</span><div class="comment">&lt;!--  
          need to think a little here about the implication of allowing a  
          "re-entrant" application that is capable of running  
          mini-jobs...probably this is indicated with a different state  
          varible entirely  
       --&gt;</div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
             Enumeration of possible phases of job execution  
          </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:restriction</span> <span class="attribute-name">base</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"PENDING"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
                   The first phase a job is entered into - this is where a job is being set up but no request to run has occurred.  
                </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"QUEUED"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
                   An job has been accepted for execution but is waiting  
                   in a queue  
                </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"EXECUTING"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">An job is running</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"COMPLETED"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
                   An job has completed successfully  
                </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"ERROR"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
                   Some form of error has occurred  
                </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"UNKNOWN"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
                   The job is in an unknown state  
                </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"HELD"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
                   The job is HELD pending execution and will not  
                   automatically be executed (cf pending)  
                </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"SUSPENDED"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
                   The job has been suspended by the system during  
                   execution  
                </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"ABORTED"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
                   The job has been aborted, either by user request or by the server because of lack or overuse of resources.  
                </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:enumeration</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:restriction</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:simpleType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"JobSummary"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"jobId"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:JobIdentifier"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:phase"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:quote"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"startTime"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:dateTime"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"endTime"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:dateTime"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:executionDuration"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:destruction"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"errorSummary"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ErrorSummary"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:simpleType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"JobIdentifier"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
             The identifier for the job  
          </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:restriction</span> <span class="attribute-name">base</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:simpleType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"job"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:JobSummary"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
             This is the information that is returned when a GET is made  
             for a single job resource - i.e. /(jobs)/(jobid)  
          </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"phase"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ExecutionPhase"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
             the execution phase - returned at /(jobs)/(jobid)/phase  
          </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"quote"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:dateTime"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
             A Quote predicts when the job is likely to complete - returned at /(jobs)/(jobid)/quote  
             TODO - how to encode "don't know"  
          </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"executionDuration"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:int"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"false"</span><span class="markup">&gt;</span><div class="comment">&lt;!-- TODO look if xs:duration here has any benefits --&gt;</div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
             The duration (in seconds) for which the job should be allowed to run - a value of 0 is intended to mean unlimited - returned at /(jobs)/(jobid)/executionduration  
          </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"destruction"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:dateTime"</span> <span class="attribute-name">nillable</span><span class="markup">=</span><span class="attribute-value">"true"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
             The time at which the whole job + records + results will be destroyed. returned at /(jobs)/(jobid)/destruction  
          </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"jobList"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
               The list of job references returned at /(jobs)  
            </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
                   ISSUE - do we want to have any sort of paging or  
                   selection mechanism in case the job list gets very  
                   large? Or is that an unnecessary complication...  
                </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"jobref"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ShortJobDescription"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"unbounded"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ResultReference"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
             A reference to a UWS result  
          </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:phase"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">/&gt;</span></div><div class="comment">&lt;!-- TODO why is this here - pah? --&gt;</div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"id"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span> <span class="attribute-name">use</span><span class="markup">=</span><span class="attribute-value">"required"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attributeGroup</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:reference"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"resultList"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
               The element returned for /(jobs)/(jobid)/results  
            </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"result"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ResultReference"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"unbounded"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ErrorSummary"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">  
             A short summary of the error  
          </span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:sequence</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"message"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span><span class="markup">/&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:element</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"detail"</span> <span class="attribute-name">maxOccurs</span><span class="markup">=</span><span class="attribute-value">"1"</span> <span class="attribute-name">minOccurs</span><span class="markup">=</span><span class="attribute-value">"0"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:complexType</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:attributeGroup</span> <span class="attribute-name">ref</span><span class="markup">=</span><span class="attribute-value">"uws:reference"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:element</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:sequence</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:attribute</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"type"</span> <span class="attribute-name">type</span><span class="markup">=</span><span class="attribute-value">"uws:ErrorType"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:annotation</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:documentation</span><span class="markup">&gt;</span><span class="text">characterization of the type of the error</span><span class="markup">&lt;/</span><span class="end-tag">xs:documentation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:annotation</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:attribute</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:complexType</span><span class="markup">&gt;</span></div><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:simpleType</span> <span class="attribute-name">name</span><span class="markup">=</span><span class="attribute-value">"ErrorType"</span><span class="markup">&gt;</span><div class="element"><span class="markup">&lt;</span><span class="start-tag">xs:restriction</span> <span class="attribute-name">base</span><span class="markup">=</span><span class="attribute-value">"xs:string"</span><span class="markup">&gt;</span><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"transient"</span><span class="markup">/&gt;</span></div><div class="indent"><span class="markup">&lt;</span><span class="start-tag">xs:enumeration</span> <span class="attribute-name">value</span><span class="markup">=</span><span class="attribute-value">"fatal"</span><span class="markup">/&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:restriction</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:simpleType</span><span class="markup">&gt;</span></div><span class="markup">&lt;/</span><span class="end-tag">xs:schema</span><span class="markup">&gt;</span></div><div class="comment">&lt;!--  
   
  --&gt;</div></div></div>  
   
 </div>  
 </div>  
1026  </div>  </div>
1027  <p style="text-align: right; font-size: x-small; color: #888;">  <p style="text-align: right; font-size: x-small; color: #888;">
1028  $Revision: 847 $ $Date: 2008-10-29 14:33:57 +0000 (Wed, 29. Oct 2008) $  $Revision: 847 $ $Date: 2008-10-29 14:33:57 +0000 (Wed, 29. Oct 2008) $

Legend:
Removed from v.1091  
changed lines
  Added in v.1092

msdemlei@ari.uni-heidelberg.de
ViewVC Help
Powered by ViewVC 1.1.26