/[volute]/trunk/projects/dm/STC/Trans/vo-dml/Trans_v1.0.xsd
ViewVC logotype

Diff of /trunk/projects/dm/STC/Trans/vo-dml/Trans_v1.0.xsd

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

revision 5761 by mdittmar, Mon Sep 16 16:51:48 2019 UTC revision 5762 by mdittmar, Mon Mar 30 20:36:12 2020 UTC
# Line 4  Line 4 
4              xmlns:xsd="http://www.w3.org/2001/XMLSchema"              xmlns:xsd="http://www.w3.org/2001/XMLSchema"
5              xmlns:trans="http://ivoa.net/dm/models/vo-dml/xsd/trans"              xmlns:trans="http://ivoa.net/dm/models/vo-dml/xsd/trans"
6              xmlns:ivoa="http://ivoa.net/dm/models/vo-dml/xsd/ivoa"              xmlns:ivoa="http://ivoa.net/dm/models/vo-dml/xsd/ivoa"
7                xmlns:coords="http://ivoa.net/dm/models/vo-dml/xsd/coords"
8              targetNamespace="http://ivoa.net/dm/models/vo-dml/xsd/trans">              targetNamespace="http://ivoa.net/dm/models/vo-dml/xsd/trans">
9     <xsd:import namespace="http://www.ivoa.net/xml/vo-dml/xsd/base/v0.1"     <xsd:import namespace="http://www.ivoa.net/xml/vo-dml/xsd/base/v0.1"
10                 schemaLocation="http://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/xsd/vodml-base.xsd"/>                 schemaLocation="http://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/xsd/vodml-base.xsd"/>
11     <xsd:import namespace="http://ivoa.net/dm/models/vo-dml/xsd/ivoa"     <xsd:import namespace="http://ivoa.net/dm/models/vo-dml/xsd/ivoa"
12                 schemaLocation="http://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models/ivoa/vo-dml/IVOA.xsd"/>                 schemaLocation="http://volute.g-vo.org/svn/trunk/projects/dm/vo-dml/models/ivoa/vo-dml/IVOA.xsd"/>
13     <xsd:complexType name="TMapping" abstract="true">     <xsd:import namespace="http://ivoa.net/dm/models/vo-dml/xsd/coords"
14                   schemaLocation="http://volute.g-vo.org/svn/trunk/projects/dm/STC/Coords/vo-dml/Coords_v1.0.xsd"/>
15       <xsd:complexType name="Mapping" abstract="true">
16        <xsd:annotation>        <xsd:annotation>
17           <xsd:documentation>Bi-directional mapping, contains the forward and inverse transform operation specifications.  Many operations, such as a shift, rotation, and many matrix operations, have a natural inverse.  For these cases, it is not necessary to define and propogate both the forward and inverse operations since the inverse can be easily derived from the forward.  In other cases, an explicit inverse specification may be needed.           <xsd:documentation>A Mapping instance describes the relation from one coordinate system to another.  The design of this model supports specifications from very simple relations to arbitrarily complex relations built from a set of component maps.  Since not every step of a mapping sequence will have a formally defined coordinate system, we separate these features, such that the Mapping provides the path, and the TransformSet associates a Mapping with its source and target coordinate systems.
18    
19  This class serves as the building block, from which arbitrarily complex operations can be built.</xsd:documentation>  A mapping can always contain enough information to support both the forward and inverse transform operations.  Many mappings, such as shift, rotation, and many matrix instances, have a natural inverse, and both directions can be supported by a single set of parameters.  Others, like polynomial, do not have a natural inverse.  For these, a BiDirectional mapping can be used to assign a different mapping for each direction.
20    
21    Mappings MUST always be constructed so that the forward transform is in the direction FROM the source coordinate system (A) TO the target coordinate system (B).  If the content, for whatever reason, describes the inverse path (from B to A), the 'invert' flag MUST be set to True.
22    
23    We note that while the Mapping class supports the specification of bi-directional paths between coordinate systems, users are not required to do so.  There are many cases where a only single direction is required, and for those, only a single direction need be specified.
24    </xsd:documentation>
25           <xsd:appinfo>           <xsd:appinfo>
26              <vodml-ref>trans:TMapping</vodml-ref>              <vodml-ref>trans:Mapping</vodml-ref>
27           </xsd:appinfo>           </xsd:appinfo>
28        </xsd:annotation>        </xsd:annotation>
29        <xsd:complexContent>        <xsd:complexContent>
# Line 30  Line 38 
38  In addition, the invert flag allows a complex compound transformation to be be inverted simply by toggling its invert flag.  Without such a flag each component would need to be re-written to represent its inverse (if possible), and the order of serial transformations would need to be reversed - a much more complex and error prone process.  In addition, the invert flag allows a complex compound transformation to be be inverted simply by toggling its invert flag.  Without such a flag each component would need to be re-written to represent its inverse (if possible), and the order of serial transformations would need to be reversed - a much more complex and error prone process.
39  </xsd:documentation>  </xsd:documentation>
40                       <xsd:appinfo>                       <xsd:appinfo>
41                          <vodml-ref>trans:TMapping.invert</vodml-ref>                          <vodml-ref>trans:Mapping.invert</vodml-ref>
42                       </xsd:appinfo>                       </xsd:appinfo>
43                    </xsd:annotation>                    </xsd:annotation>
44                 </xsd:element>                 </xsd:element>
# Line 39  Line 47 
47        </xsd:complexContent>        </xsd:complexContent>
48     </xsd:complexType>     </xsd:complexType>
49    
50     <xsd:complexType name="TAtomic">     <xsd:complexType name="CompoundMap" abstract="true">
       <xsd:annotation>  
          <xsd:documentation>Single stage bi-directional mapping.</xsd:documentation>  
          <xsd:appinfo>  
             <vodml-ref>trans:TAtomic</vodml-ref>  
          </xsd:appinfo>  
       </xsd:annotation>  
       <xsd:complexContent>  
          <xsd:extension base="trans:TMapping">  
             <xsd:sequence>  
                <xsd:element name="forward" type="trans:TForward" minOccurs="1" maxOccurs="1"/>  
                <xsd:element name="inverse" type="trans:TInverse" minOccurs="0" maxOccurs="1"/>  
             </xsd:sequence>  
          </xsd:extension>  
       </xsd:complexContent>  
    </xsd:complexType>  
   
    <xsd:complexType name="TCompound" abstract="true">  
51        <xsd:annotation>        <xsd:annotation>
52           <xsd:documentation>Abstract class to facilitate the combination of Mappings in various ways.           <xsd:documentation>Abstract class to facilitate the combination of Mappings in various ways.  Since they are themselves mappings, they can be used as a components in other compound mappings to create arbitrarily complex transform expressions.  
53  </xsd:documentation>  </xsd:documentation>
54           <xsd:appinfo>           <xsd:appinfo>
55              <vodml-ref>trans:TCompound</vodml-ref>              <vodml-ref>trans:CompoundMap</vodml-ref>
          </xsd:appinfo>  
       </xsd:annotation>  
       <xsd:complexContent>  
          <xsd:extension base="trans:TMapping">  
             <xsd:sequence>  
                <xsd:element name="map" type="trans:TMapping" minOccurs="1" maxOccurs="unbounded"/>  
             </xsd:sequence>  
          </xsd:extension>  
       </xsd:complexContent>  
    </xsd:complexType>  
   
    <xsd:complexType name="TCompose">  
       <xsd:annotation>  
          <xsd:documentation>A complex operation which executes the component maps in sequence.    
 This allows the building of multi-stage transforms such as a Matrix operation followed by a WCS Projection.</xsd:documentation>  
          <xsd:appinfo>  
             <vodml-ref>trans:TCompose</vodml-ref>  
          </xsd:appinfo>  
       </xsd:annotation>  
       <xsd:complexContent>  
          <xsd:extension base="trans:TCompound"/>  
       </xsd:complexContent>  
    </xsd:complexType>  
   
    <xsd:complexType name="TConcatenate">  
       <xsd:annotation>  
          <xsd:documentation>Combines operations in parallel.  This class enables the building of an operation which covers the full dimension space of the input.  Axes are distributed to the  component operations in order.  For example, to perform a shift on a 2-dimensional coordinate (x,y), one would join two Shift operations giving the offset in x and y respectively.   Since this class is an operation itself, it can be used as a component in other complex operations.</xsd:documentation>  
          <xsd:appinfo>  
             <vodml-ref>trans:TConcatenate</vodml-ref>  
56           </xsd:appinfo>           </xsd:appinfo>
57        </xsd:annotation>        </xsd:annotation>
58        <xsd:complexContent>        <xsd:complexContent>
59           <xsd:extension base="trans:TCompound"/>           <xsd:extension base="trans:Mapping">
       </xsd:complexContent>  
    </xsd:complexType>  
   
    <xsd:complexType name="TOperation" abstract="true">  
       <xsd:annotation>  
          <xsd:documentation>Uni-directional transform operation, executes the contained function.</xsd:documentation>  
          <xsd:appinfo>  
             <vodml-ref>trans:TOperation</vodml-ref>  
          </xsd:appinfo>  
       </xsd:annotation>  
       <xsd:complexContent>  
          <xsd:extension base="vodml-base:VODMLObject">  
60              <xsd:sequence>              <xsd:sequence>
61                 <xsd:element name="operation" type="trans:TFunction" minOccurs="1" maxOccurs="1"/>                 <xsd:element name="cptMap" type="trans:MapRef" minOccurs="1" maxOccurs="unbounded"/>
62              </xsd:sequence>              </xsd:sequence>
63           </xsd:extension>           </xsd:extension>
64        </xsd:complexContent>        </xsd:complexContent>
65     </xsd:complexType>     </xsd:complexType>
66    
67     <xsd:complexType name="TForward">     <xsd:complexType name="ComposeMap">
       <xsd:annotation>  
          <xsd:documentation>Defines the forward transform operation of the mapping.</xsd:documentation>  
          <xsd:appinfo>  
             <vodml-ref>trans:TForward</vodml-ref>  
          </xsd:appinfo>  
       </xsd:annotation>  
       <xsd:complexContent>  
          <xsd:extension base="trans:TOperation"/>  
       </xsd:complexContent>  
    </xsd:complexType>  
   
    <xsd:complexType name="TInverse">  
68        <xsd:annotation>        <xsd:annotation>
69           <xsd:documentation>Defines the inverse transform operation of the mapping.</xsd:documentation>           <xsd:documentation>Combines the component mappings in sequence. This allows the building of multi-stage transforms such as a Matrix operation followed by a WCS Projection.  When the invert flag is 'True', the forward operation (from A to B) is defined by the inverse of the content, iterating the component list in reverse order, executing the inverse operation of each component.
70    </xsd:documentation>
71           <xsd:appinfo>           <xsd:appinfo>
72              <vodml-ref>trans:TInverse</vodml-ref>              <vodml-ref>trans:ComposeMap</vodml-ref>
73           </xsd:appinfo>           </xsd:appinfo>
74        </xsd:annotation>        </xsd:annotation>
75        <xsd:complexContent>        <xsd:complexContent>
76           <xsd:extension base="trans:TOperation"/>           <xsd:extension base="trans:CompoundMap"/>
77        </xsd:complexContent>        </xsd:complexContent>
78     </xsd:complexType>     </xsd:complexType>
79    
80     <xsd:complexType name="TFunction" abstract="true">     <xsd:complexType name="ConcatenateMap">
81        <xsd:annotation>        <xsd:annotation>
82           <xsd:documentation>Transform Function (TFunction) defines a mathematical operation to be performed on its inputs.           <xsd:documentation>Combines the component mappings in parallel. This enables the building of a mapping which covers the full dimension space of the input. Axes are distributed to the component mappings in order. For example, to perform a shift on a 2-dimensional coordinate (x,y), one would join two Shift maps giving the offset in x and y respectively.
83  </xsd:documentation>  When the 'invert' flag is True, the forward operation (from A to B) is defined by applying the inverse of the component mappings.</xsd:documentation>
84           <xsd:appinfo>           <xsd:appinfo>
85              <vodml-ref>trans:TFunction</vodml-ref>              <vodml-ref>trans:ConcatenateMap</vodml-ref>
86           </xsd:appinfo>           </xsd:appinfo>
87        </xsd:annotation>        </xsd:annotation>
88        <xsd:complexContent>        <xsd:complexContent>
89           <xsd:extension base="vodml-base:VODMLObject"/>           <xsd:extension base="trans:CompoundMap"/>
90        </xsd:complexContent>        </xsd:complexContent>
91     </xsd:complexType>     </xsd:complexType>
92    
# Line 164  Line 103 
103           </xsd:appinfo>           </xsd:appinfo>
104        </xsd:annotation>        </xsd:annotation>
105        <xsd:complexContent>        <xsd:complexContent>
106           <xsd:extension base="trans:TFunction">           <xsd:extension base="trans:Mapping">
107              <xsd:sequence>              <xsd:sequence>
108                 <xsd:element name="numSourceAxes" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1">                 <xsd:element name="numSourceAxes" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1">
109                    <xsd:annotation>                    <xsd:annotation>
# Line 214  Line 153 
153    
154     <xsd:complexType name="Unit">     <xsd:complexType name="Unit">
155        <xsd:annotation>        <xsd:annotation>
156           <xsd:documentation>A 1-Dimensional operation which makes no change to the inputs. ( X' = X )</xsd:documentation>           <xsd:documentation>A 1-Dimensional operation which makes no change to the inputs. ( X' = X )
157    </xsd:documentation>
158           <xsd:appinfo>           <xsd:appinfo>
159              <vodml-ref>trans:Unit</vodml-ref>              <vodml-ref>trans:Unit</vodml-ref>
160           </xsd:appinfo>           </xsd:appinfo>
161        </xsd:annotation>        </xsd:annotation>
162        <xsd:complexContent>        <xsd:complexContent>
163           <xsd:extension base="trans:TFunction"/>           <xsd:extension base="trans:Mapping"/>
164        </xsd:complexContent>        </xsd:complexContent>
165     </xsd:complexType>     </xsd:complexType>
166    
167     <xsd:complexType name="Shift">     <xsd:complexType name="Shift">
168        <xsd:annotation>        <xsd:annotation>
169           <xsd:documentation>A 1-Dimensional operation defining a simple offset.  ( X' = X + offset )</xsd:documentation>           <xsd:documentation>A 1-Dimensional operation defining a simple offset. ( X' = X + offset )
170    </xsd:documentation>
171           <xsd:appinfo>           <xsd:appinfo>
172              <vodml-ref>trans:Shift</vodml-ref>              <vodml-ref>trans:Shift</vodml-ref>
173           </xsd:appinfo>           </xsd:appinfo>
174        </xsd:annotation>        </xsd:annotation>
175        <xsd:complexContent>        <xsd:complexContent>
176           <xsd:extension base="trans:TFunction">           <xsd:extension base="trans:Mapping">
177              <xsd:sequence>              <xsd:sequence>
178                 <xsd:element name="offset" type="xsd:float" minOccurs="1" maxOccurs="1">                 <xsd:element name="offset" type="xsd:float" minOccurs="1" maxOccurs="1">
179                    <xsd:annotation>                    <xsd:annotation>
180                       <xsd:documentation>The amount of offset to apply.</xsd:documentation>                       <xsd:documentation>The amount of offset to apply.
181    </xsd:documentation>
182                       <xsd:appinfo>                       <xsd:appinfo>
183                          <vodml-ref>trans:Shift.offset</vodml-ref>                          <vodml-ref>trans:Shift.offset</vodml-ref>
184                       </xsd:appinfo>                       </xsd:appinfo>
# Line 249  Line 191 
191    
192     <xsd:complexType name="Scale">     <xsd:complexType name="Scale">
193        <xsd:annotation>        <xsd:annotation>
194           <xsd:documentation>A 1-Dimensional operator for simple scaling. ( X' = factor*X )</xsd:documentation>           <xsd:documentation>A 1-Dimensional operator for simple scaling. ( X' = factor*X )
195    </xsd:documentation>
196           <xsd:appinfo>           <xsd:appinfo>
197              <vodml-ref>trans:Scale</vodml-ref>              <vodml-ref>trans:Scale</vodml-ref>
198           </xsd:appinfo>           </xsd:appinfo>
199        </xsd:annotation>        </xsd:annotation>
200        <xsd:complexContent>        <xsd:complexContent>
201           <xsd:extension base="trans:TFunction">           <xsd:extension base="trans:Mapping">
202              <xsd:sequence>              <xsd:sequence>
203                 <xsd:element name="factor" type="xsd:float" minOccurs="1" maxOccurs="1">                 <xsd:element name="factor" type="xsd:float" minOccurs="1" maxOccurs="1">
204                    <xsd:annotation>                    <xsd:annotation>
205                       <xsd:documentation>The scale factor.</xsd:documentation>                       <xsd:documentation>The scale factor.
206    </xsd:documentation>
207                       <xsd:appinfo>                       <xsd:appinfo>
208                          <vodml-ref>trans:Scale.factor</vodml-ref>                          <vodml-ref>trans:Scale.factor</vodml-ref>
209                       </xsd:appinfo>                       </xsd:appinfo>
# Line 272  Line 216 
216    
217     <xsd:complexType name="Rotate2D">     <xsd:complexType name="Rotate2D">
218        <xsd:annotation>        <xsd:annotation>
219           <xsd:documentation>A 2-Dimensional rotation operation.  </xsd:documentation>           <xsd:documentation>A 2-Dimensional rotation operation.
220    </xsd:documentation>
221           <xsd:appinfo>           <xsd:appinfo>
222              <vodml-ref>trans:Rotate2D</vodml-ref>              <vodml-ref>trans:Rotate2D</vodml-ref>
223           </xsd:appinfo>           </xsd:appinfo>
224        </xsd:annotation>        </xsd:annotation>
225        <xsd:complexContent>        <xsd:complexContent>
226           <xsd:extension base="trans:TFunction">           <xsd:extension base="trans:Mapping">
227              <xsd:sequence>              <xsd:sequence>
228                 <xsd:element name="angle" type="xsd:float" minOccurs="1" maxOccurs="1">                 <xsd:element name="angle" type="xsd:float" minOccurs="1" maxOccurs="1">
229                    <xsd:annotation>                    <xsd:annotation>
230                       <xsd:documentation>Rotation angle, in degrees, from the positive direction of axis 1 toward the positive direction of axis 2.</xsd:documentation>                       <xsd:documentation>Rotation angle, in degrees, from the positive direction of axis 1 toward the positive direction of axis 2.
231    </xsd:documentation>
232                       <xsd:appinfo>                       <xsd:appinfo>
233                          <vodml-ref>trans:Rotate2D.angle</vodml-ref>                          <vodml-ref>trans:Rotate2D.angle</vodml-ref>
234                       </xsd:appinfo>                       </xsd:appinfo>
# Line 302  Line 248 
248           </xsd:appinfo>           </xsd:appinfo>
249        </xsd:annotation>        </xsd:annotation>
250        <xsd:complexContent>        <xsd:complexContent>
251           <xsd:extension base="trans:TFunction">           <xsd:extension base="trans:Mapping">
252              <xsd:sequence>              <xsd:sequence>
253                 <xsd:element name="eulerAngle" type="trans:EulerAngle" minOccurs="1" maxOccurs="unbounded"/>                 <xsd:element name="eulerAngle" type="trans:EulerAngle" minOccurs="1" maxOccurs="unbounded"/>
254              </xsd:sequence>              </xsd:sequence>
# Line 312  Line 258 
258    
259     <xsd:complexType name="EulerAngle">     <xsd:complexType name="EulerAngle">
260        <xsd:annotation>        <xsd:annotation>
261           <xsd:documentation>Angular rotation about a particular axis of a 3-dimensional cartesian coordinate space.</xsd:documentation>           <xsd:documentation>Angular rotation about a particular axis of a 3-dimensional cartesian coordinate space.
262    </xsd:documentation>
263           <xsd:appinfo>           <xsd:appinfo>
264              <vodml-ref>trans:EulerAngle</vodml-ref>              <vodml-ref>trans:EulerAngle</vodml-ref>
265           </xsd:appinfo>           </xsd:appinfo>
# Line 322  Line 269 
269              <xsd:sequence>              <xsd:sequence>
270                 <xsd:element name="rotationAxis" type="xsd:string" minOccurs="1" maxOccurs="1">                 <xsd:element name="rotationAxis" type="xsd:string" minOccurs="1" maxOccurs="1">
271                    <xsd:annotation>                    <xsd:annotation>
272                       <xsd:documentation>Identifies the axis of rotation.  MUST be 'x', 'y', or 'z'.</xsd:documentation>                       <xsd:documentation>Identifies the axis of rotation. MUST be 'x', 'y', or 'z'
273    </xsd:documentation>
274                       <xsd:appinfo>                       <xsd:appinfo>
275                          <vodml-ref>trans:EulerAngle.rotationAxis</vodml-ref>                          <vodml-ref>trans:EulerAngle.rotationAxis</vodml-ref>
276                       </xsd:appinfo>                       </xsd:appinfo>
# Line 330  Line 278 
278                 </xsd:element>                 </xsd:element>
279                 <xsd:element name="angle" type="xsd:float" minOccurs="1" maxOccurs="1">                 <xsd:element name="angle" type="xsd:float" minOccurs="1" maxOccurs="1">
280                    <xsd:annotation>                    <xsd:annotation>
281                       <xsd:documentation>Angle of rotation, in degrees.  Angle sign follows the right-hand rule, where positive values indicate clockwise rotation (looking in +axis direction), negative values for counter-clockwise.</xsd:documentation>                       <xsd:documentation>Angle of rotation, in degrees. Angle sign follows the right-hand rule, where positive values indicate clockwise rotation (looking in +axis direction), negative values for counter-clockwise.
282    </xsd:documentation>
283                       <xsd:appinfo>                       <xsd:appinfo>
284                          <vodml-ref>trans:EulerAngle.angle</vodml-ref>                          <vodml-ref>trans:EulerAngle.angle</vodml-ref>
285                       </xsd:appinfo>                       </xsd:appinfo>
# Line 350  Line 299 
299           </xsd:appinfo>           </xsd:appinfo>
300        </xsd:annotation>        </xsd:annotation>
301        <xsd:complexContent>        <xsd:complexContent>
302           <xsd:extension base="trans:TFunction">           <xsd:extension base="trans:Mapping">
303              <xsd:sequence>              <xsd:sequence>
304                 <xsd:element name="M" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1">                 <xsd:element name="M" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1">
305                    <xsd:annotation>                    <xsd:annotation>
306                       <xsd:documentation>Number of rows in the matrix.</xsd:documentation>                       <xsd:documentation>Number of rows in the matrix.
307    </xsd:documentation>
308                       <xsd:appinfo>                       <xsd:appinfo>
309                          <vodml-ref>trans:Matrix.M</vodml-ref>                          <vodml-ref>trans:Matrix.M</vodml-ref>
310                       </xsd:appinfo>                       </xsd:appinfo>
# Line 362  Line 312 
312                 </xsd:element>                 </xsd:element>
313                 <xsd:element name="N" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1">                 <xsd:element name="N" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1">
314                    <xsd:annotation>                    <xsd:annotation>
315                       <xsd:documentation>Number of columns in the matrix.</xsd:documentation>                       <xsd:documentation>Number of columns in the matrix.
316    </xsd:documentation>
317                       <xsd:appinfo>                       <xsd:appinfo>
318                          <vodml-ref>trans:Matrix.N</vodml-ref>                          <vodml-ref>trans:Matrix.N</vodml-ref>
319                       </xsd:appinfo>                       </xsd:appinfo>
# Line 376  Line 327 
327    
328     <xsd:complexType name="MatrixElement">     <xsd:complexType name="MatrixElement">
329        <xsd:annotation>        <xsd:annotation>
330           <xsd:documentation>The value of cell m,n in an M x N matrix.</xsd:documentation>           <xsd:documentation>The value of cell m,n in an M x N matrix.
331    </xsd:documentation>
332           <xsd:appinfo>           <xsd:appinfo>
333              <vodml-ref>trans:MatrixElement</vodml-ref>              <vodml-ref>trans:MatrixElement</vodml-ref>
334           </xsd:appinfo>           </xsd:appinfo>
# Line 386  Line 338 
338              <xsd:sequence>              <xsd:sequence>
339                 <xsd:element name="m" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1">                 <xsd:element name="m" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1">
340                    <xsd:annotation>                    <xsd:annotation>
341                       <xsd:documentation>Matrix cell row number.</xsd:documentation>                       <xsd:documentation>Matrix cell row number.
342    </xsd:documentation>
343                       <xsd:appinfo>                       <xsd:appinfo>
344                          <vodml-ref>trans:MatrixElement.m</vodml-ref>                          <vodml-ref>trans:MatrixElement.m</vodml-ref>
345                       </xsd:appinfo>                       </xsd:appinfo>
# Line 394  Line 347 
347                 </xsd:element>                 </xsd:element>
348                 <xsd:element name="n" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1">                 <xsd:element name="n" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1">
349                    <xsd:annotation>                    <xsd:annotation>
350                       <xsd:documentation>Matrix cell column number.</xsd:documentation>                       <xsd:documentation>Matrix cell column number.
351    </xsd:documentation>
352                       <xsd:appinfo>                       <xsd:appinfo>
353                          <vodml-ref>trans:MatrixElement.n</vodml-ref>                          <vodml-ref>trans:MatrixElement.n</vodml-ref>
354                       </xsd:appinfo>                       </xsd:appinfo>
# Line 402  Line 356 
356                 </xsd:element>                 </xsd:element>
357                 <xsd:element name="value" type="xsd:float" minOccurs="1" maxOccurs="1">                 <xsd:element name="value" type="xsd:float" minOccurs="1" maxOccurs="1">
358                    <xsd:annotation>                    <xsd:annotation>
359                       <xsd:documentation>Matrix cell value.</xsd:documentation>                       <xsd:documentation>Matrix cell value.
360    </xsd:documentation>
361                       <xsd:appinfo>                       <xsd:appinfo>
362                          <vodml-ref>trans:MatrixElement.value</vodml-ref>                          <vodml-ref>trans:MatrixElement.value</vodml-ref>
363                       </xsd:appinfo>                       </xsd:appinfo>
# Line 422  Line 377 
377           </xsd:appinfo>           </xsd:appinfo>
378        </xsd:annotation>        </xsd:annotation>
379        <xsd:complexContent>        <xsd:complexContent>
380           <xsd:extension base="trans:TFunction">           <xsd:extension base="trans:Mapping">
381              <xsd:sequence>              <xsd:sequence>
382                 <xsd:element name="param" type="trans:ProjectionParam" minOccurs="0" maxOccurs="unbounded"/>                 <xsd:element name="param" type="trans:ProjectionParam" minOccurs="0" maxOccurs="unbounded"/>
383              </xsd:sequence>              </xsd:sequence>
# Line 432  Line 387 
387    
388     <xsd:complexType name="ProjectionParam">     <xsd:complexType name="ProjectionParam">
389        <xsd:annotation>        <xsd:annotation>
390           <xsd:documentation>Simple parameter specification for WCS Projections.  The parameter is modeled as a simple name/value pair.  The details of expectations for the various projection algorithms is left to the WCS paper describing the algorithm.</xsd:documentation>           <xsd:documentation>Simple parameter specification for WCS Projections. The parameter is modeled as a simple name/value pair. The details of expectations for the various projection algorithms is left to the WCS paper describing the algorithm.
391    </xsd:documentation>
392           <xsd:appinfo>           <xsd:appinfo>
393              <vodml-ref>trans:ProjectionParam</vodml-ref>              <vodml-ref>trans:ProjectionParam</vodml-ref>
394           </xsd:appinfo>           </xsd:appinfo>
# Line 442  Line 398 
398              <xsd:sequence>              <xsd:sequence>
399                 <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1">                 <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1">
400                    <xsd:annotation>                    <xsd:annotation>
401                       <xsd:documentation>The parameter name as described in the WCS papers for each operation type.</xsd:documentation>                       <xsd:documentation>The parameter name as described in the WCS papers for each operation type.
402    </xsd:documentation>
403                       <xsd:appinfo>                       <xsd:appinfo>
404                          <vodml-ref>trans:ProjectionParam.name</vodml-ref>                          <vodml-ref>trans:ProjectionParam.name</vodml-ref>
405                       </xsd:appinfo>                       </xsd:appinfo>
# Line 450  Line 407 
407                 </xsd:element>                 </xsd:element>
408                 <xsd:element name="value" type="xsd:float" minOccurs="1" maxOccurs="1">                 <xsd:element name="value" type="xsd:float" minOccurs="1" maxOccurs="1">
409                    <xsd:annotation>                    <xsd:annotation>
410                       <xsd:documentation>The value for the parameter. </xsd:documentation>                       <xsd:documentation>The value for the parameter.
411    </xsd:documentation>
412                       <xsd:appinfo>                       <xsd:appinfo>
413                          <vodml-ref>trans:ProjectionParam.value</vodml-ref>                          <vodml-ref>trans:ProjectionParam.value</vodml-ref>
414                       </xsd:appinfo>                       </xsd:appinfo>
# Line 463  Line 421 
421    
422     <xsd:complexType name="SkyProjection">     <xsd:complexType name="SkyProjection">
423        <xsd:annotation>        <xsd:annotation>
424           <xsd:documentation>This class corresponds to the Spherical Projection component of the FITS WCS paper II.  As in the paper, this operation describes the mapping between the intermediate "Projection Plane" and the "Native Spherical" coordinate systems.  This model supports all defined projection types, where the appropriate code is specified in the algorithm attribute.  All projection parameters are to be provided through the ProjectionParam list according to the descriptions given in the FITS WCS paper.           <xsd:documentation>This class corresponds to the Spherical Projection component of the FITS WCS paper II. As in the paper, this operation describes the mapping from the intermediate &amp;quot;Projection Plane&amp;quot; to the &amp;quot;Native Spherical&amp;quot; coordinate system. This model supports all defined projection types, where the appropriate code is specified in the algorithm attribute. All projection parameters are to be provided through the ProjectionParam list according to the descriptions given in the FITS WCS paper.
425  </xsd:documentation>  </xsd:documentation>
426           <xsd:appinfo>           <xsd:appinfo>
427              <vodml-ref>trans:SkyProjection</vodml-ref>              <vodml-ref>trans:SkyProjection</vodml-ref>
# Line 474  Line 432 
432              <xsd:sequence>              <xsd:sequence>
433                 <xsd:element name="algorithm" type="trans:SkyProjectionType" minOccurs="1" maxOccurs="1">                 <xsd:element name="algorithm" type="trans:SkyProjectionType" minOccurs="1" maxOccurs="1">
434                    <xsd:annotation>                    <xsd:annotation>
435                       <xsd:documentation>The projection algorithm to apply.  The value MUST be taken from the enumeration of standard sky projection algorithms.  Extracted from 'ctype' in the FITS WCS representations.</xsd:documentation>                       <xsd:documentation>The projection algorithm to apply. The value MUST be taken from the enumeration of standard sky projection algorithms. Extracted from &amp;#39;ctype&amp;#39; in the FITS WCS representations.
436    </xsd:documentation>
437                       <xsd:appinfo>                       <xsd:appinfo>
438                          <vodml-ref>trans:SkyProjection.algorithm</vodml-ref>                          <vodml-ref>trans:SkyProjection.algorithm</vodml-ref>
439                       </xsd:appinfo>                       </xsd:appinfo>
# Line 487  Line 446 
446    
447     <xsd:complexType name="SkyProjRotate">     <xsd:complexType name="SkyProjRotate">
448        <xsd:annotation>        <xsd:annotation>
449           <xsd:documentation>This class extends SkyProjection to include the Spherical Rotation component of the FITS WCS paper II. This operation describes the mapping between the "Native Spherical" and "Celestial" coordinate systems. The reference values are provided at the appropriate attribute, while all other parameters (e.g. LONPOLE, LATPOLE) are to be provided through the ProjectionParam list according to the descriptions given in the FITS WCS paper.           <xsd:documentation>This class extends SkyProjection to include the Spherical Rotation component of the FITS WCS paper II. This operation describes the mapping from the "Native Spherical" coordinate system to the "Celestial" coordinate system. The reference values are provided at the appropriate attribute, while all other parameters (e.g. LONPOLE, LATPOLE) are to be provided through the ProjectionParam list according to the descriptions given in the FITS WCS paper.
450  </xsd:documentation>  </xsd:documentation>
451           <xsd:appinfo>           <xsd:appinfo>
452              <vodml-ref>trans:SkyProjRotate</vodml-ref>              <vodml-ref>trans:SkyProjRotate</vodml-ref>
# Line 498  Line 457 
457              <xsd:sequence>              <xsd:sequence>
458                 <xsd:element name="referenceValue" type="xsd:float" minOccurs="2" maxOccurs="2">                 <xsd:element name="referenceValue" type="xsd:float" minOccurs="2" maxOccurs="2">
459                    <xsd:annotation>                    <xsd:annotation>
460                       <xsd:documentation>The target reference values in each dimension.  Equivalent to 'crval' in FITS WCS representations.</xsd:documentation>                       <xsd:documentation>The target reference values in each dimension. Equivalent to 'crval' in FITS WCS representations.
461    </xsd:documentation>
462                       <xsd:appinfo>                       <xsd:appinfo>
463                          <vodml-ref>trans:SkyProjRotate.referenceValue</vodml-ref>                          <vodml-ref>trans:SkyProjRotate.referenceValue</vodml-ref>
464                       </xsd:appinfo>                       </xsd:appinfo>
# Line 511  Line 471 
471    
472     <xsd:complexType name="SpectralProjection">     <xsd:complexType name="SpectralProjection">
473        <xsd:annotation>        <xsd:annotation>
474           <xsd:documentation>This class represents a nonlinear one-dimensional spectral transform as detailed in the FITS WCS paper III.</xsd:documentation>           <xsd:documentation>This class represents a nonlinear one-dimensional spectral transform as detailed in the FITS WCS paper III.
475    </xsd:documentation>
476           <xsd:appinfo>           <xsd:appinfo>
477              <vodml-ref>trans:SpectralProjection</vodml-ref>              <vodml-ref>trans:SpectralProjection</vodml-ref>
478           </xsd:appinfo>           </xsd:appinfo>
# Line 521  Line 482 
482              <xsd:sequence>              <xsd:sequence>
483                 <xsd:element name="referenceValue" type="xsd:float" minOccurs="1" maxOccurs="1">                 <xsd:element name="referenceValue" type="xsd:float" minOccurs="1" maxOccurs="1">
484                    <xsd:annotation>                    <xsd:annotation>
485                       <xsd:documentation>The target reference value for the axis.  Equivalent to 'crval' in FITS WCS representations.</xsd:documentation>                       <xsd:documentation>The target reference value for the axis. Equivalent to 'crval' in FITS WCS representations.</xsd:documentation>
486                       <xsd:appinfo>                       <xsd:appinfo>
487                          <vodml-ref>trans:SpectralProjection.referenceValue</vodml-ref>                          <vodml-ref>trans:SpectralProjection.referenceValue</vodml-ref>
488                       </xsd:appinfo>                       </xsd:appinfo>
# Line 530  Line 491 
491                 <xsd:element name="algorithm" type="trans:SpectralProjectionType" minOccurs="1"                 <xsd:element name="algorithm" type="trans:SpectralProjectionType" minOccurs="1"
492                              maxOccurs="1">                              maxOccurs="1">
493                    <xsd:annotation>                    <xsd:annotation>
494                       <xsd:documentation>The projection algorithm to apply.  The value MUST be taken from the enumeration of non-linear spectral projection algorithms.  Extracted from 'ctype' in FITS WCS representations.</xsd:documentation>                       <xsd:documentation>The projection algorithm to apply. The value MUST be taken from the enumeration of non-linear spectral projection algorithms. Extracted from 'ctype' in FITS WCS representations.
495    </xsd:documentation>
496                       <xsd:appinfo>                       <xsd:appinfo>
497                          <vodml-ref>trans:SpectralProjection.algorithm</vodml-ref>                          <vodml-ref>trans:SpectralProjection.algorithm</vodml-ref>
498                       </xsd:appinfo>                       </xsd:appinfo>
# Line 538  Line 500 
500                 </xsd:element>                 </xsd:element>
501                 <xsd:element name="coordType" type="trans:SpectralCoordType" minOccurs="1" maxOccurs="1">                 <xsd:element name="coordType" type="trans:SpectralCoordType" minOccurs="1" maxOccurs="1">
502                    <xsd:annotation>                    <xsd:annotation>
503                       <xsd:documentation>The resulting spectral coordinate type code.  Values MUST be taken from the enumerated list of spectral coordinate types.  Extracted from 'ctype' in FITS WCS representations.</xsd:documentation>                       <xsd:documentation>The resulting spectral coordinate type code. Values MUST be taken from the enumerated list of spectral coordinate types. Extracted from 'ctype' in FITS WCS representations.
504    </xsd:documentation>
505                       <xsd:appinfo>                       <xsd:appinfo>
506                          <vodml-ref>trans:SpectralProjection.coordType</vodml-ref>                          <vodml-ref>trans:SpectralProjection.coordType</vodml-ref>
507                       </xsd:appinfo>                       </xsd:appinfo>
# Line 557  Line 520 
520           </xsd:appinfo>           </xsd:appinfo>
521        </xsd:annotation>        </xsd:annotation>
522        <xsd:complexContent>        <xsd:complexContent>
523           <xsd:extension base="trans:TFunction">           <xsd:extension base="trans:Mapping">
524              <xsd:sequence>              <xsd:sequence>
525                 <xsd:element name="order" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1">                 <xsd:element name="order" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1">
526                    <xsd:annotation>                    <xsd:annotation>
527                       <xsd:documentation>The order, or degree, of the polynomial expression.</xsd:documentation>                       <xsd:documentation>The order, or degree, of the polynomial expression.
528    </xsd:documentation>
529                       <xsd:appinfo>                       <xsd:appinfo>
530                          <vodml-ref>trans:Polynomial.order</vodml-ref>                          <vodml-ref>trans:Polynomial.order</vodml-ref>
531                       </xsd:appinfo>                       </xsd:appinfo>
# Line 574  Line 538 
538    
539     <xsd:complexType name="Polynomial1D">     <xsd:complexType name="Polynomial1D">
540        <xsd:annotation>        <xsd:annotation>
541           <xsd:documentation>A 1-Dimensional Polynomial transform represented by the expression:  X' = SUM( Ci*X**i),  i=0..order.  Each term is provided by a PolyCoeff1D object.  Missing terms are considered to have a coefficient of 0.0.</xsd:documentation>           <xsd:documentation>A 1-Dimensional Polynomial transform represented by the expression: X' = SUM( Ci*X**i), i=0..order. Each term is provided by a PolyCoeff1D object. Missing terms are considered to have a coefficient of 0.0.</xsd:documentation>
542           <xsd:appinfo>           <xsd:appinfo>
543              <vodml-ref>trans:Polynomial1D</vodml-ref>              <vodml-ref>trans:Polynomial1D</vodml-ref>
544           </xsd:appinfo>           </xsd:appinfo>
# Line 590  Line 554 
554    
555     <xsd:complexType name="PolyCoeff1D">     <xsd:complexType name="PolyCoeff1D">
556        <xsd:annotation>        <xsd:annotation>
557           <xsd:documentation>A term of the polynomial expression.  This object provides the coefficient (c) and power (p) of the term, forming the expression  c*X**p.           <xsd:documentation>A term of the polynomial expression. This object provides the coefficient (c) and power (p) of the term, forming the expression c*X**p.
558   </xsd:documentation>  </xsd:documentation>
559           <xsd:appinfo>           <xsd:appinfo>
560              <vodml-ref>trans:PolyCoeff1D</vodml-ref>              <vodml-ref>trans:PolyCoeff1D</vodml-ref>
561           </xsd:appinfo>           </xsd:appinfo>
# Line 601  Line 565 
565              <xsd:sequence>              <xsd:sequence>
566                 <xsd:element name="coeff" type="xsd:float" minOccurs="1" maxOccurs="1">                 <xsd:element name="coeff" type="xsd:float" minOccurs="1" maxOccurs="1">
567                    <xsd:annotation>                    <xsd:annotation>
568                       <xsd:documentation>Multiplicitive coefficient of the term.</xsd:documentation>                       <xsd:documentation>Multiplicitive coefficient of the term.
569    </xsd:documentation>
570                       <xsd:appinfo>                       <xsd:appinfo>
571                          <vodml-ref>trans:PolyCoeff1D.coeff</vodml-ref>                          <vodml-ref>trans:PolyCoeff1D.coeff</vodml-ref>
572                       </xsd:appinfo>                       </xsd:appinfo>
# Line 609  Line 574 
574                 </xsd:element>                 </xsd:element>
575                 <xsd:element name="power" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1">                 <xsd:element name="power" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1">
576                    <xsd:annotation>                    <xsd:annotation>
577                       <xsd:documentation>The power to raise the value for this term.</xsd:documentation>                       <xsd:documentation>The power to raise the value for this term.
578    </xsd:documentation>
579                       <xsd:appinfo>                       <xsd:appinfo>
580                          <vodml-ref>trans:PolyCoeff1D.power</vodml-ref>                          <vodml-ref>trans:PolyCoeff1D.power</vodml-ref>
581                       </xsd:appinfo>                       </xsd:appinfo>
# Line 622  Line 588 
588    
589     <xsd:complexType name="Polynomial2D">     <xsd:complexType name="Polynomial2D">
590        <xsd:annotation>        <xsd:annotation>
591           <xsd:documentation>A 2-Dimensional Polynomial transform represented by the expression:  X' = SUMi,j( Cij*X**i*Y**j),  i+j&lt;=order.  Each term is provided by a PolyCoeff2D object.  Missing terms are considered to have a coefficient of 0.0.</xsd:documentation>           <xsd:documentation>A 2-Dimensional Polynomial transform represented by the expression: X' = SUMi,j( Cij*X**i*Y**j), i+j&lt;=order. Each term is provided by a PolyCoeff2D object. Missing terms are considered to have a coefficient of 0.0.
592    </xsd:documentation>
593           <xsd:appinfo>           <xsd:appinfo>
594              <vodml-ref>trans:Polynomial2D</vodml-ref>              <vodml-ref>trans:Polynomial2D</vodml-ref>
595           </xsd:appinfo>           </xsd:appinfo>
# Line 638  Line 605 
605    
606     <xsd:complexType name="PolyCoeff2D">     <xsd:complexType name="PolyCoeff2D">
607        <xsd:annotation>        <xsd:annotation>
608           <xsd:documentation>A term of the polynomial expression.  This object provides the coefficient (c) and power (p) of the term, forming the expression  c*X**p[0]*Y**p[1].           <xsd:documentation>A term of the polynomial expression. This object provides the coefficient (c) and power (p) of the term, forming the expression c*X**p[0]*Y**p[1].</xsd:documentation>
  </xsd:documentation>  
609           <xsd:appinfo>           <xsd:appinfo>
610              <vodml-ref>trans:PolyCoeff2D</vodml-ref>              <vodml-ref>trans:PolyCoeff2D</vodml-ref>
611           </xsd:appinfo>           </xsd:appinfo>
# Line 649  Line 615 
615              <xsd:sequence>              <xsd:sequence>
616                 <xsd:element name="coeff" type="xsd:float" minOccurs="1" maxOccurs="1">                 <xsd:element name="coeff" type="xsd:float" minOccurs="1" maxOccurs="1">
617                    <xsd:annotation>                    <xsd:annotation>
618                       <xsd:documentation>Multiplicitive coefficient of the term.</xsd:documentation>                       <xsd:documentation>Multiplicitive coefficient of the term.
619    </xsd:documentation>
620                       <xsd:appinfo>                       <xsd:appinfo>
621                          <vodml-ref>trans:PolyCoeff2D.coeff</vodml-ref>                          <vodml-ref>trans:PolyCoeff2D.coeff</vodml-ref>
622                       </xsd:appinfo>                       </xsd:appinfo>
# Line 657  Line 624 
624                 </xsd:element>                 </xsd:element>
625                 <xsd:element name="power" type="xsd:nonNegativeInteger" minOccurs="2" maxOccurs="2">                 <xsd:element name="power" type="xsd:nonNegativeInteger" minOccurs="2" maxOccurs="2">
626                    <xsd:annotation>                    <xsd:annotation>
627                       <xsd:documentation>The power to raise the values for this term in each dimension.</xsd:documentation>                       <xsd:documentation>The power to raise the values for this term in each dimension.
628    </xsd:documentation>
629                       <xsd:appinfo>                       <xsd:appinfo>
630                          <vodml-ref>trans:PolyCoeff2D.power</vodml-ref>                          <vodml-ref>trans:PolyCoeff2D.power</vodml-ref>
631                       </xsd:appinfo>                       </xsd:appinfo>
# Line 670  Line 638 
638    
639     <xsd:complexType name="Lookup">     <xsd:complexType name="Lookup">
640        <xsd:annotation>        <xsd:annotation>
641           <xsd:documentation>Defines a lookup table operation.  The Lookup is comprised of a series of value pairs (LookupEntry).  All members of the series MUST be of the same type.           <xsd:documentation>Defines a lookup table operation. The Lookup is comprised of a series of value pairs (LookupEntry). All members of the series MUST be of the same type. Handling Enumerated data: A common usage of a Lookup operation is to map image pixel index to an enumeration, such as a Polarization state. This can be handled by two means: 1) Define a numeric equivalent for each enumeration literal, and use NumericEntry types. Casting to the corresponding literal occurs outside of the operation. 2) Your local model can define a LookupEntry extension which maps the native value directly the target EnumerationLiteral. The details of either approach for particular enumerations is considered outside the scope of this document.
 Handling Enumerated data:  
   A common usage of a Lookup operation is to map image pixel index to an enumeration, such as a Polarization state.  This can be handled by two means:    
     1) Define a numeric equivalent for each enumeration literal, and use NumericEntry types.  Casting to the corresponding literal occurs outside of the operation.    
     2) Your local model can define a LookupEntry extension which maps the native value directly the target EnumerationLiteral.    
   
 The details of either approach for particular enumerations is considered outside the scope of this document.  
642  </xsd:documentation>  </xsd:documentation>
643           <xsd:appinfo>           <xsd:appinfo>
644              <vodml-ref>trans:Lookup</vodml-ref>              <vodml-ref>trans:Lookup</vodml-ref>
645           </xsd:appinfo>           </xsd:appinfo>
646        </xsd:annotation>        </xsd:annotation>
647        <xsd:complexContent>        <xsd:complexContent>
648           <xsd:extension base="trans:TFunction">           <xsd:extension base="trans:Mapping">
649              <xsd:sequence>              <xsd:sequence>
650                 <xsd:element name="interpolation" type="trans:InterpolationMethod" minOccurs="0"                 <xsd:element name="interpolation" type="trans:InterpolationMethod" minOccurs="0"
651                              maxOccurs="1">                              maxOccurs="1">
652                    <xsd:annotation>                    <xsd:annotation>
653                       <xsd:documentation>Specifies the form of interpolation, if any, prescribed to be performed.</xsd:documentation>                       <xsd:documentation>Specifies the form of interpolation, if any, prescribed to be performed.
654    </xsd:documentation>
655                       <xsd:appinfo>                       <xsd:appinfo>
656                          <vodml-ref>trans:Lookup.interpolation</vodml-ref>                          <vodml-ref>trans:Lookup.interpolation</vodml-ref>
657                       </xsd:appinfo>                       </xsd:appinfo>
# Line 696  Line 659 
659                 </xsd:element>                 </xsd:element>
660                 <xsd:element name="bounds_error" type="xsd:boolean" minOccurs="0" maxOccurs="1">                 <xsd:element name="bounds_error" type="xsd:boolean" minOccurs="0" maxOccurs="1">
661                    <xsd:annotation>                    <xsd:annotation>
662                       <xsd:documentation>Flag to specify behaviour outside the lookup table data bounds.  True indicates an error condition, False indicates that the associated "fill" entry should be returned.  If no "fill" entry is provided, the value should be extrapolated.</xsd:documentation>                       <xsd:documentation>Flag to specify behaviour outside the lookup table data bounds. True indicates an error condition, False indicates that the associated "fill" entry should be returned. If no "fill" entry is provided, the value should be extrapolated.
663    </xsd:documentation>
664                       <xsd:appinfo>                       <xsd:appinfo>
665                          <vodml-ref>trans:Lookup.bounds_error</vodml-ref>                          <vodml-ref>trans:Lookup.bounds_error</vodml-ref>
666                       </xsd:appinfo>                       </xsd:appinfo>
# Line 710  Line 674 
674    
675     <xsd:complexType name="LookupEntry" abstract="true">     <xsd:complexType name="LookupEntry" abstract="true">
676        <xsd:annotation>        <xsd:annotation>
677           <xsd:documentation>This is an abstract head of lookup table entry objects.  Each entry provides a discrete translation of a 'native' value to the corresponding 'target' value. </xsd:documentation>           <xsd:documentation>This is an abstract head of lookup table entry objects. Each entry provides a discrete translation of a 'native' value to the corresponding 'target' value.
678    </xsd:documentation>
679           <xsd:appinfo>           <xsd:appinfo>
680              <vodml-ref>trans:LookupEntry</vodml-ref>              <vodml-ref>trans:LookupEntry</vodml-ref>
681           </xsd:appinfo>           </xsd:appinfo>
# Line 720  Line 685 
685              <xsd:sequence>              <xsd:sequence>
686                 <xsd:element name="fill" type="xsd:boolean" minOccurs="0" maxOccurs="1">                 <xsd:element name="fill" type="xsd:boolean" minOccurs="0" maxOccurs="1">
687                    <xsd:annotation>                    <xsd:annotation>
688                       <xsd:documentation>When TRUE, the entry provides values to be used outside the Lookup table data domain.  MUST only appear first or last in the sequence.  If missing, it is considered to be FALSE.</xsd:documentation>                       <xsd:documentation>When TRUE, the entry provides values to be used outside the Lookup table data domain. MUST only appear first or last in the sequence. If missing, it is considered to be FALSE.
689    </xsd:documentation>
690                       <xsd:appinfo>                       <xsd:appinfo>
691                          <vodml-ref>trans:LookupEntry.fill</vodml-ref>                          <vodml-ref>trans:LookupEntry.fill</vodml-ref>
692                       </xsd:appinfo>                       </xsd:appinfo>
# Line 733  Line 699 
699    
700     <xsd:complexType name="NumericEntry">     <xsd:complexType name="NumericEntry">
701        <xsd:annotation>        <xsd:annotation>
702           <xsd:documentation>A 1-Dimensional discrete mapping of numeric values. </xsd:documentation>           <xsd:documentation>A 1-Dimensional discrete mapping of numeric values.</xsd:documentation>
703           <xsd:appinfo>           <xsd:appinfo>
704              <vodml-ref>trans:NumericEntry</vodml-ref>              <vodml-ref>trans:NumericEntry</vodml-ref>
705           </xsd:appinfo>           </xsd:appinfo>
# Line 751  Line 717 
717                 </xsd:element>                 </xsd:element>
718                 <xsd:element name="targetValue" type="xsd:float" minOccurs="1" maxOccurs="1">                 <xsd:element name="targetValue" type="xsd:float" minOccurs="1" maxOccurs="1">
719                    <xsd:annotation>                    <xsd:annotation>
720                       <xsd:documentation>The target, or resulting, value of the lookup entry.</xsd:documentation>                       <xsd:documentation>The target, or resulting, value of the lookup entry.
721    </xsd:documentation>
722                       <xsd:appinfo>                       <xsd:appinfo>
723                          <vodml-ref>trans:NumericEntry.targetValue</vodml-ref>                          <vodml-ref>trans:NumericEntry.targetValue</vodml-ref>
724                       </xsd:appinfo>                       </xsd:appinfo>
# Line 764  Line 731 
731    
732     <xsd:complexType name="NumericEntry2D">     <xsd:complexType name="NumericEntry2D">
733        <xsd:annotation>        <xsd:annotation>
734           <xsd:documentation>A 2-Dimensional discrete mapping of numeric values. </xsd:documentation>           <xsd:documentation>A 2-Dimensional discrete mapping of numeric values.
735    </xsd:documentation>
736           <xsd:appinfo>           <xsd:appinfo>
737              <vodml-ref>trans:NumericEntry2D</vodml-ref>              <vodml-ref>trans:NumericEntry2D</vodml-ref>
738           </xsd:appinfo>           </xsd:appinfo>
# Line 774  Line 742 
742              <xsd:sequence>              <xsd:sequence>
743                 <xsd:element name="nativeValue" type="xsd:float" minOccurs="2" maxOccurs="2">                 <xsd:element name="nativeValue" type="xsd:float" minOccurs="2" maxOccurs="2">
744                    <xsd:annotation>                    <xsd:annotation>
745                       <xsd:documentation>The native, or reference, value of the lookup entry.</xsd:documentation>                       <xsd:documentation>The native, or reference, value of the lookup entry.
746    </xsd:documentation>
747                       <xsd:appinfo>                       <xsd:appinfo>
748                          <vodml-ref>trans:NumericEntry2D.nativeValue</vodml-ref>                          <vodml-ref>trans:NumericEntry2D.nativeValue</vodml-ref>
749                       </xsd:appinfo>                       </xsd:appinfo>
# Line 782  Line 751 
751                 </xsd:element>                 </xsd:element>
752                 <xsd:element name="targetValue" type="xsd:float" minOccurs="2" maxOccurs="2">                 <xsd:element name="targetValue" type="xsd:float" minOccurs="2" maxOccurs="2">
753                    <xsd:annotation>                    <xsd:annotation>
754                       <xsd:documentation>The target, or resulting, value of the lookup entry.</xsd:documentation>                       <xsd:documentation>The target, or resulting, value of the lookup entry.
755    </xsd:documentation>
756                       <xsd:appinfo>                       <xsd:appinfo>
757                          <vodml-ref>trans:NumericEntry2D.targetValue</vodml-ref>                          <vodml-ref>trans:NumericEntry2D.targetValue</vodml-ref>
758                       </xsd:appinfo>                       </xsd:appinfo>
# Line 795  Line 765 
765    
766     <xsd:complexType name="StringEntry">     <xsd:complexType name="StringEntry">
767        <xsd:annotation>        <xsd:annotation>
768           <xsd:documentation>A 1-Dimensional discrete mapping of an integer counter to a corresponding string form.  Since the result is non-numeric, a Lookup operation with StringEntry-s can only be used at the end of a Transform sequence.</xsd:documentation>           <xsd:documentation>A 1-Dimensional discrete mapping of an integer counter to a corresponding string form. Since the result is non-numeric, a Lookup operation with StringEntry-s can only be used at the end of a Transform sequence.
769    </xsd:documentation>
770           <xsd:appinfo>           <xsd:appinfo>
771              <vodml-ref>trans:StringEntry</vodml-ref>              <vodml-ref>trans:StringEntry</vodml-ref>
772           </xsd:appinfo>           </xsd:appinfo>
# Line 805  Line 776 
776              <xsd:sequence>              <xsd:sequence>
777                 <xsd:element name="nativeValue" type="xsd:int" minOccurs="1" maxOccurs="1">                 <xsd:element name="nativeValue" type="xsd:int" minOccurs="1" maxOccurs="1">
778                    <xsd:annotation>                    <xsd:annotation>
779                       <xsd:documentation>The native, or reference, value of the lookup entry.</xsd:documentation>                       <xsd:documentation>The native, or reference, value of the lookup entry.
780    </xsd:documentation>
781                       <xsd:appinfo>                       <xsd:appinfo>
782                          <vodml-ref>trans:StringEntry.nativeValue</vodml-ref>                          <vodml-ref>trans:StringEntry.nativeValue</vodml-ref>
783                       </xsd:appinfo>                       </xsd:appinfo>
# Line 822  Line 794 
794              </xsd:sequence>              </xsd:sequence>
795           </xsd:extension>           </xsd:extension>
796        </xsd:complexContent>        </xsd:complexContent>
797       </xsd:complexType>
798    
799       <xsd:complexType name="TransNode">
800          <xsd:annotation>
801             <xsd:documentation>TransNode is a container object relating a parent coordinate system and a target coordinate system (that of the node) with the mapping from the parent to target coordinate systems.  A base node will only have the target coordinate system specified.  ie: the base coordinate system.   The coordinate systems themselves are described in the IVOA "Astronomical Coordinates and Coordinate Systems" model. </xsd:documentation>
802             <xsd:appinfo>
803                <vodml-ref>trans:TransNode</vodml-ref>
804             </xsd:appinfo>
805          </xsd:annotation>
806          <xsd:complexContent>
807             <xsd:extension base="vodml-base:VODMLObject">
808                <xsd:sequence>
809                   <xsd:element name="parent" type="vodml-base:VODMLReference" minOccurs="0" maxOccurs="1">
810                      <xsd:annotation>
811                         <xsd:documentation>This identifies the source coordinate system node.  The associated mapping describes the transformation from this parent system to the target system of this node.  Will be NULL for base nodes.</xsd:documentation>
812                         <xsd:appinfo>
813                            <vodml-ref>trans:TransNode.parent</vodml-ref>
814                         </xsd:appinfo>
815                      </xsd:annotation>
816                   </xsd:element>
817                   <xsd:element name="target" type="vodml-base:VODMLReference" minOccurs="1" maxOccurs="1">
818                      <xsd:annotation>
819                         <xsd:documentation>This identifies the target coordinate system node.  It is the represenitive coordinate system for this node.  The associated mapping describes the transformation from the parent system of this node to this target system.</xsd:documentation>
820                         <xsd:appinfo>
821                            <vodml-ref>trans:TransNode.target</vodml-ref>
822                         </xsd:appinfo>
823                      </xsd:annotation>
824                   </xsd:element>
825                   <xsd:element name="mapping" type="vodml-base:VODMLReference" minOccurs="0" maxOccurs="1">
826                      <xsd:annotation>
827                         <xsd:documentation>This is a reference to the mapping relating the parent coordinate system to the target system.</xsd:documentation>
828                         <xsd:appinfo>
829                            <vodml-ref>trans:TransNode.mapping</vodml-ref>
830                         </xsd:appinfo>
831                      </xsd:annotation>
832                   </xsd:element>
833                </xsd:sequence>
834             </xsd:extension>
835          </xsd:complexContent>
836       </xsd:complexType>
837    
838       <xsd:complexType name="MapRef">
839          <xsd:annotation>
840             <xsd:documentation>An entry in the CompountMap component mapping list.  Holds a reference to the component mapping.</xsd:documentation>
841             <xsd:appinfo>
842                <vodml-ref>trans:MapRef</vodml-ref>
843             </xsd:appinfo>
844          </xsd:annotation>
845          <xsd:complexContent>
846             <xsd:extension base="vodml-base:VODMLObject">
847                <xsd:sequence>
848                   <xsd:element name="ref" type="vodml-base:VODMLReference" minOccurs="1" maxOccurs="1">
849                      <xsd:annotation>
850                         <xsd:documentation>Reference to the component Mapping.</xsd:documentation>
851                         <xsd:appinfo>
852                            <vodml-ref>trans:MapRef.ref</vodml-ref>
853                         </xsd:appinfo>
854                      </xsd:annotation>
855                   </xsd:element>
856                </xsd:sequence>
857             </xsd:extension>
858          </xsd:complexContent>
859       </xsd:complexType>
860    
861       <xsd:complexType name="BiDirectionalMap">
862          <xsd:annotation>
863             <xsd:documentation>The BiDirectionalMap supports cases where one wants to explicitely define independent paths for the forward and inverse direction.  This may be because a mapping does not have a natural inverse, or dictated by the requirements of the application.  The associated mappings do not have to be of the same type.  The forward transformation is supported by the forward operation of the forwardMap, the inverse transformation by the inverse operation of the inverseMap.  If the 'invert' flag is True, this is reversed so that the forward transformation is supported by the inverse operation of the inverseMap, and the inverse transformation by the forward operation of the forwardMap.</xsd:documentation>
864             <xsd:appinfo>
865                <vodml-ref>trans:BiDirectionalMap</vodml-ref>
866             </xsd:appinfo>
867          </xsd:annotation>
868          <xsd:complexContent>
869             <xsd:extension base="trans:Mapping">
870                <xsd:sequence>
871                   <xsd:element name="inverseMap" type="vodml-base:VODMLReference" minOccurs="1" maxOccurs="1">
872                      <xsd:annotation>
873                         <xsd:documentation>The Mapping which supports the inverse operation of this mapping.  Note, the target Mapping MUST be defined from system A to system B like all Mappings.  It is the inverse operation of the target mapping which is applied.</xsd:documentation>
874                         <xsd:appinfo>
875                            <vodml-ref>trans:BiDirectionalMap.inverseMap</vodml-ref>
876                         </xsd:appinfo>
877                      </xsd:annotation>
878                   </xsd:element>
879                   <xsd:element name="forwardMap" type="vodml-base:VODMLReference" minOccurs="1" maxOccurs="1">
880                      <xsd:annotation>
881                         <xsd:documentation>The Mapping which supports the forward operation of this mapping.</xsd:documentation>
882                         <xsd:appinfo>
883                            <vodml-ref>trans:BiDirectionalMap.forwardMap</vodml-ref>
884                         </xsd:appinfo>
885                      </xsd:annotation>
886                   </xsd:element>
887                </xsd:sequence>
888             </xsd:extension>
889          </xsd:complexContent>
890       </xsd:complexType>
891    
892       <xsd:complexType name="TransformSet">
893          <xsd:annotation>
894             <xsd:documentation>TransformSet supports the relation of coordinate systems via Mappings.  The design is such that it supports the relation of collections of related coordinates systems by the various mappings between them.  For example, a single TransformSet can relate a web of spatial coordinate systems
895      * pixel - chip - tiled detector - detector - tangent plane
896      * chip - chip physical
897      * detector - mirror spherical
898      * tangent plane - celestial
899    Each transition is encapsulated by a TransNode instance linking the parent coordinate system to the target coordinate system (that of the TransNode) with a Mapping (from the parent to target systems).  A simple transform from system A to system B requires two TransNodes related by a single Mapping.
900    </xsd:documentation>
901             <xsd:appinfo>
902                <vodml-ref>trans:TransformSet</vodml-ref>
903             </xsd:appinfo>
904          </xsd:annotation>
905          <xsd:complexContent>
906             <xsd:extension base="vodml-base:VODMLObject">
907                <xsd:sequence>
908                   <xsd:element name="node" type="trans:TransNode" minOccurs="1" maxOccurs="unbounded"/>
909                </xsd:sequence>
910             </xsd:extension>
911          </xsd:complexContent>
912     </xsd:complexType>     </xsd:complexType>
913    
914     <xsd:simpleType name="InterpolationMethod">     <xsd:simpleType name="InterpolationMethod">

Legend:
Removed from v.5761  
changed lines
  Added in v.5762

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