/[volute]/trunk/projects/utypes/current-usage/utypes-usage-fmt.html
ViewVC logotype

Diff of /trunk/projects/utypes/current-usage/utypes-usage-fmt.html

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

revision 2123 by volute@g-vo.org, Mon Apr 22 12:38:03 2013 UTC revision 2124 by volute@g-vo.org, Mon Apr 22 12:47:41 2013 UTC
# Line 106  Line 106 
106    </div>    </div>
107  </div>  </div>
108    
109  <h1>UTypes: current usages and practices in the IVOA<br clear="none"/>  <h1>Utypes: current usages and practices in the IVOA<br clear="none"/>
110  Version <span class="docversion">1.0</span></h1>  Version <span class="docversion">1.0</span></h1>
111  <h2 class="subtitle">IVOA Note  13 February 2013</h2>  <h2 class="subtitle">IVOA Note  13 February 2013</h2>
112    
113  <dl><dt>Working Groups:</dt><dd>  <dl><dt>Working Groups:</dt><dd>
114                  <a href="http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/TCG" shape="rect">UTypes tiger team</a></dd>                  <a href="http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/TCG" shape="rect">Utypes tiger team</a></dd>
115                  <dt>This version:</dt>                  <dt>This version:</dt>
116                    <dd><a class="currentlink" href="http://www.ivoa.net/Documents/utypes-usage-20130213">http://www.ivoa.net/Documents/utypes-usage-20130213</a></dd>                    <dd><a class="currentlink" href="http://www.ivoa.net/Documents/utypes-usage-20130213">http://www.ivoa.net/Documents/utypes-usage-20130213</a></dd>
117            <dt><b>Latest version:</b></dt>            <dt><b>Latest version:</b></dt>
# Line 177  Line 177 
177    
178  <div class="section"><h2><a id="introduction" shape="rect"><span class="secnum">1. </span>Introduction</a></h2>  <div class="section"><h2><a id="introduction" shape="rect"><span class="secnum">1. </span>Introduction</a></h2>
179    
180  <p>UTypes are a core part of the IVOA Architecture (see Fig. 1);  <p>Utypes are a core part of the IVOA Architecture (see Fig. 1);
181    however, they currently lack a formal definition within the IVOA    however, they currently lack a formal definition within the IVOA
182    (see <a href="#ref_UTypes" shape="rect">[UTYPES]</a> for the current state).    (see <a href="#ref_UTypes" shape="rect">[UTYPES]</a> for the current state).
183    In spite of this, they are employed in a number of situations. The most    In spite of this, they are employed in a number of situations. The most
# Line 189  Line 189 
189    inheritance, extensibility, etc.</p>    inheritance, extensibility, etc.</p>
190    
191  <div class="figure">  <div class="figure">
192  <img src="UTypes-arch.png" alt="UTypes within the VO architecture" width="95%" align="center"/>  <img src="UTypes-arch.png" alt="Utypes within the VO architecture" width="95%" align="center"/>
193  <p class="figurecaption"><strong>Figure 1:</strong> IVOA Architecture diagram with UTypes and  <p class="figurecaption"><strong>Figure 1:</strong> IVOA Architecture diagram with utypes and
194  the related standards marked up.</p>  the related standards marked up.</p>
195  </div> <!-- figure -->  </div> <!-- figure -->
196    
197  <p>The growing availability and usage of data models within the IVOA  <p>The growing availability and usage of data models within the IVOA
198  — e.g., <a href="#ref_ObsCore" shape="rect">[ObsCore]</a>, <a href="#ref_SpecDM" shape="rect">[SpecDM]</a>, <a href="#ref_STC" shape="rect">[STC]</a> — and, by extension, UTypes means that a  — e.g., <a href="#ref_ObsCore" shape="rect">[ObsCore]</a>, <a href="#ref_SpecDM" shape="rect">[SpecDM]</a>, <a href="#ref_STC" shape="rect">[STC]</a> — and, by extension, Utypes means that a
199  consistent (and formal) definition is required for interoperability  consistent (and formal) definition is required for interoperability
200  as well as implementation reusability.  as well as implementation reusability.
201  A survey of current usages and practices is useful input to the  A survey of current usages and practices is useful input to the
# Line 204  Line 204 
204  of proposed solutions on current practices.  of proposed solutions on current practices.
205  This document aims to provide such a summary. </p>  This document aims to provide such a summary. </p>
206    
207  <p>We note that the May 2012 IVOA Working Draft on UTypes <a href="#ref_UTypes" shape="rect">[UTYPES]</a>  <p>We note that the May 2012 IVOA Working Draft on utypes <a href="#ref_UTypes" shape="rect">[UTYPES]</a>
208  presents an approach to defining UTypes within a broader context of  presents an approach to defining utypes within a broader context of
209  standardizing data model definition and serialization. UTypes are  standardizing data model definition and serialization. Utypes are
210  defined as data model labels that point to their associated data model  defined as data model labels that point to their associated data model
211  element — they are a string representation of the logical path through  element — they are a string representation of the logical path through
212  the classes and attributes in a UML representation of a data model  the classes and attributes in a UML representation of a data model
213  from the main data model element to a particular part of the data  from the main data model element to a particular part of the data
214  model. A generating syntax is proposed based on this premise and the  model. A generating syntax is proposed based on this premise and the
215  resulting usage patterns for UTypes in data model (de-)serialization  resulting usage patterns for utypes in data model (de-)serialization
216  described. This is, however, work in progress and does not necessarily  described. This is, however, work in progress and does not necessarily
217  reflect the existing community of practice which this document seeks  reflect the existing community of practice which this document seeks
218  to capture.</p>  to capture.</p>
# Line 221  Line 221 
221    
222  <div class="section"><h2><a id="currentusages" shape="rect"><span class="secnum">2. </span>Current usages</a></h2>  <div class="section"><h2><a id="currentusages" shape="rect"><span class="secnum">2. </span>Current usages</a></h2>
223    
224  <p>The current usages and practices regarding UTypes may be presented  <p>The current usages and practices regarding utypes may be presented
225    in several ways, e.g., by specification (VOTable, ObsCore, etc.) or by    in several ways, e.g., by specification (VOTable, ObsCore, etc.) or by
226    application (TOPCAT, IRIS, etc.). One useful perspective is to    application (TOPCAT, IRIS, etc.). One useful perspective is to
227    consider UTypes from an IVOA Working Group standpoint, i.e., their    consider utypes from an IVOA Working Group standpoint, i.e., their
228    usages within specific subdomains of VO activity, which is the    usages within specific subdomains of VO activity, which is the
229    approach we have taken in this summary. Note that we have only    approach we have taken in this summary. Note that we have only
230    considered UType references in current IVOA Recommendations as normative    considered UType references in current IVOA Recommendations as normative
# Line 236  Line 236 
236    
237  <p>Unsurprisingly the bulk of usages and practices of usage arise in  <p>Unsurprisingly the bulk of usages and practices of usage arise in
238    the various data models defined by the DM Working Group, with most    the various data models defined by the DM Working Group, with most
239    defining UTypes in tables using different conventions.</p>    defining utypes in tables using different conventions.</p>
240    
241  <div class="section"><h4><a id="definition" shape="rect"><span class="secnum">2.1.1. </span>Definition</a></h4>  <div class="section"><h4><a id="definition" shape="rect"><span class="secnum">2.1.1. </span>Definition</a></h4>
242        
# Line 248  Line 248 
248    element referred to". Although there are similarities with XPath,    element referred to". Although there are similarities with XPath,
249    it is stressed that the UType does not indicate the exact position of    it is stressed that the UType does not indicate the exact position of
250    an element in an instance but is merely a label for a data model    an element in an instance but is merely a label for a data model
251    field. Note, however, that unique UTypes within a group in a VOTable    field. Note, however, that unique utypes within a group in a VOTable
252    serialization of a Spectrum "can be used to infer the data-model    serialization of a Spectrum "can be used to infer the data-model
253    structure".</p>    structure".</p>
254    
# Line 285  Line 285 
285  using TUTYPn header cards.</p>  using TUTYPn header cards.</p>
286    
287    <p>The Photometry DM 1.0 <a href="#ref_phot1.0">[PHOT]</a> defines    <p>The Photometry DM 1.0 <a href="#ref_phot1.0">[PHOT]</a> defines
288    its UTypes "following the IVOA rules applied for other IVOA data    its utypes "following the IVOA rules applied for other IVOA data
289    models and derived from a simplified XML schema." The form of a    models and derived from a simplified XML schema." The form of a
290    UType is now "ns:a.b.c.d" where the element before the colon — 'ns'    UType is now "ns:a.b.c.d" where the element before the colon — 'ns'
291    — identifies the data model being used.</p>    — identifies the data model being used.</p>
292    
293    <p>The ObsCore DM 1.0 <a href="#ref_obsccore1.0">[OBSCORE]</a>    <p>The ObsCore DM 1.0 <a href="#ref_obsccore1.0">[OBSCORE]</a>
294    defines a convention that UTypes created from the UML ObsCore model    defines a convention that utypes created from the UML ObsCore model
295    follow a Camel case syntax with "attributes of a class starting with    follow a Camel case syntax with "attributes of a class starting with
296    a lower case letter."  Most of obscore's concepts orginate in other    a lower case letter."  Most of obscore's concepts orginate in other
297    data model (Spectral, Characterization, ...), which entails some    data model (Spectral, Characterization, ...), which entails some
# Line 319  Line 319 
319    that a UType is a "pointer into a data model" and that it "should    that a UType is a "pointer into a data model" and that it "should
320    allow one to uniquely identify a concept in a data model". It notes    allow one to uniquely identify a concept in a data model". It notes
321    that it has become common practice for IVOA data models to provide a    that it has become common practice for IVOA data models to provide a
322    list of UTypes that they are defining. It then specifies a set of    list of utypes that they are defining. It then specifies a set of
323    rules for deriving UTypes directly from a UML data model rather than    rules for deriving utypes directly from a UML data model rather than
324    as a separate process:</p>    as a separate process:</p>
325    
326    <pre>    <pre>
# Line 343  Line 343 
343    
344  <p>In fact, all material associated with the Simulation DM is  <p>In fact, all material associated with the Simulation DM is
345  generated from the UML model using the VO-URP framework/tool <a href="#vourp">[VOURP]</a> developed by Laurent Borges and Gerard  generated from the UML model using the VO-URP framework/tool <a href="#vourp">[VOURP]</a> developed by Laurent Borges and Gerard
346  Lemson. A similar approach is described in the UTypes Working Draft  Lemson. A similar approach is described in the utypes Working Draft
347  and highlights the advantages of a common data model strategy and a  and highlights the advantages of a common data model strategy and a
348  meta-model framework. Further discussion of this is outside the scope  meta-model framework. Further discussion of this is outside the scope
349  of this document.</p>  of this document.</p>
# Line 352  Line 352 
352  <div class="section"><h4><a id="inheritance" shape="rect"><span class="secnum">2.1.2. </span>Inheritance</a></h4>  <div class="section"><h4><a id="inheritance" shape="rect"><span class="secnum">2.1.2. </span>Inheritance</a></h4>
353    
354  <p>The Spectrum DM 1.1 implies that when data models are inherited,  <p>The Spectrum DM 1.1 implies that when data models are inherited,
355    UTypes with the same form except for the leftmost element    utypes with the same form except for the leftmost element
356    (identifying the model) are equivalent: "we say that SSA inherits    (identifying the model) are equivalent: "we say that SSA inherits
357    the Spectrum model, so that 'SSA.' UTypes overlap with the Spectrum    the Spectrum model, so that 'SSA:' UTypes overlap with the Spectrum
358    ones.". An unnoted consequence of this is that the same concept    ones.". An unnoted consequence of this is that the same concept
359    across data models must have the same 'b.c.d' identifier.</p>    across data models must have the same 'b.c.d' identifier.</p>
360    
# Line 373  Line 373 
373    
374  <p>Although not actually laid out in standards documents, discussion within  <p>Although not actually laid out in standards documents, discussion within
375  the IVOA has frequently addressed user-extensability of data models and,  the IVOA has frequently addressed user-extensability of data models and,
376  by extension, UTypes.  A simple example of how this should work is  by extension, utypes.  A simple example of how this should work is
377  NED SEDs that use <code>FluxAxis.Published.Value</code>, which is  NED SEDs that use <code>FluxAxis.Published.Value</code>, which is
378  supposed to be related to the standard  supposed to be related to the standard
379  standard FluxAxis element.  standard FluxAxis element.
# Line 387  Line 387 
387    
388  <div class="section"><h3><a id="dal" shape="rect"><span class="secnum">2.2. </span>Data Access Layer</a></h3>  <div class="section"><h3><a id="dal" shape="rect"><span class="secnum">2.2. </span>Data Access Layer</a></h3>
389    
390  <p>SSA 1.1 <a href="#ref_ssa">[SSA]</a> defines UTypes as "pointers to  <p>SSA 1.1 <a href="#ref_ssa">[SSA]</a> defines utypes as "pointers to
391    data model elements" and a mechanism    data model elements" and a mechanism
392    to "flatten a hierarchical data model so that all fields are    to "flatten a hierarchical data model so that all fields are
393    represented by fixed strings in a flat namespace." It notes,    represented by fixed strings in a flat namespace." It notes,
# Line 397  Line 397 
397    are "flat" (one-level) GROUP elements reflecting the structure of the    are "flat" (one-level) GROUP elements reflecting the structure of the
398    utypes.</p>    utypes.</p>
399    
400    <p>Although nothing is explicitly said about UTypes being parsable,    <p>Although nothing is explicitly said about utypes being parsable,
401    this is certainly implied by the pseudo-grammar defined with a UType    this is certainly implied by the pseudo-grammar defined with a UType
402    being constructed using "embedded period characters to delimit the    being constructed using "embedded period characters to delimit the
403    fields of the UType". UTypes are defined within a single namespace    fields of the UType". Utypes are defined within a single namespace
404    identifying the data model with the form "(component-name).(field-name)"    identifying the data model with the form "(component-name).(field-name)"
405    and are unique only within the context of the specified data model.    and are unique only within the context of the specified data model.
406    However, a convention is also described whereby concepts that are    However, a convention is also described whereby concepts that are
# Line 409  Line 409 
409    response; hence "Spectrum.Target.Name" and "Target.Name" are    response; hence "Spectrum.Target.Name" and "Target.Name" are
410    to be considered equivalent in this particular context. </p>    to be considered equivalent in this particular context. </p>
411    
412    <p>UTypes are also case-insensitive.</p>    <p>Utypes are also case-insensitive.</p>
413    
414  <p>A 2011 survey of UType practices in SSA <a href="#ref_ssastate">[SSASTATE]</a> response documents showed rather  <p>A 2011 survey of UType practices in SSA <a href="#ref_ssastate">[SSASTATE]</a> response documents showed rather
415  inconsistent results .</p>  inconsistent results .</p>
416    
417  <p>In <a href="#ref_tap">TAP</a>, UTypes enter as columns in TAP_SCHEMA.  <p>In <a href="#ref_tap">TAP</a>, utypes enter as columns in TAP_SCHEMA.
418  They can be assigned to schemas, tables, columns, and foreign keys (this is analogous  They can be assigned to schemas, tables, columns, and foreign keys (this is analogous
419  to VODataService; cf. Registry).  UTypes for columns are already used by  to VODataService; cf. Registry).  Utypes for columns are already used by
420  Obscore.  No further details are given on the content of the columns  Obscore.  No further details are given on the content of the columns
421  containing UTypes by the TAP specification, but obviously at least these  containing utypes by the TAP specification, but obviously at least these
422  particular UTypes will have to work as simple, and presumably opaque,  particular utypes will have to work as simple, and presumably opaque,
423  strings if they are to be useful in SQL queries.  That foreign keys can  strings if they are to be useful in SQL queries.  That foreign keys can
424  have utypes furthermore demonstrates that, at least for TAP, utypes not  have utypes furthermore demonstrates that, at least for TAP, utypes not
425  only annotate concrete data or metadata items but also relations between  only annotate concrete data or metadata items but also relations between
# Line 430  Line 430 
430    
431  <div class="section"><h4><a id="app-votable" shape="rect"><span class="secnum">2.3.1. </span>VOTable</a></h4>  <div class="section"><h4><a id="app-votable" shape="rect"><span class="secnum">2.3.1. </span>VOTable</a></h4>
432        
433  <p>UTypes were introduced as an attribute of many VOTable elements in  <p>Utypes were introduced as an attribute of many VOTable elements in
434  VOTable 1.1 <a href="#ref_votable1.1">[VOT1.1]</a> (FIELD, PARAM,  VOTable 1.1 <a href="#ref_votable1.1">[VOT1.1]</a> (FIELD, PARAM,
435  FIELDref, PARAMref, RESOURCE, TABLE, and GROUP) as an identifier for  FIELDref, PARAMref, RESOURCE, TABLE, and GROUP) as an identifier for
436  something in an external data model. They should have the form  something in an external data model. They should have the form
# Line 459  Line 459 
459  Abusing XML namespace declaration for the purpose of binding data model  Abusing XML namespace declaration for the purpose of binding data model
460  names to URIs is explicitely discouraged.</p>  names to URIs is explicitely discouraged.</p>
461    
462  <p>The UTypes themselves are defined essentially through XPaths into  <p>The utypes themselves are defined essentially through XPaths into
463  STC-X instance documents, although child element and attribute names are  STC-X instance documents, although child element and attribute names are
464  treated analogously (i.e., <code>&lt;elem attr="bla"/&gt;</code> and  treated analogously (i.e., <code>&lt;elem attr="bla"/&gt;</code> and
465  <code>&lt;elem&gt;&lt;attr&gt;bla&lt;/attr&gt;&lt;/elem&gt;</code> are  <code>&lt;elem&gt;&lt;attr&gt;bla&lt;/attr&gt;&lt;/elem&gt;</code> are
# Line 489  Line 489 
489  <div class="section"><h4><a id="app-splat"><span class="secnum">2.3.2. </span>SPLAT</a></h4>  <div class="section"><h4><a id="app-splat"><span class="secnum">2.3.2. </span>SPLAT</a></h4>
490    
491  <p>The SSAP client SPLAT (written by Peter Draper and Margarida Castro Neves)  <p>The SSAP client SPLAT (written by Peter Draper and Margarida Castro Neves)
492  <a href="#ref_vosplat">[SPLAT]</a> uses UTypes in serveral ways.</p>  <a href="#ref_vosplat">[SPLAT]</a> uses utypes in serveral ways.</p>
493    
494  <p>When processing an SSA response, it tries to locate the columns  <p>When processing an SSA response, it tries to locate the columns
495  interesting to it using UTypes.  The approach may be illustrated by a  interesting to it using utypes.  The approach may be illustrated by a
496  comment in the code that states:</p>  comment in the code that states:</p>
497    
498  <blockquote>The choices  <blockquote>The choices
499  are controlled by a series of regular expressions that can be extended as  are controlled by a series of regular expressions that can be extended as
500  needed, or by looking for the standard set of UTypes defined by the IVOA  needed, or by looking for the standard set of utypes defined by the IVOA
501  Spectral Data Model (1.0).</blockquote>  Spectral Data Model (1.0).</blockquote>
502    
503  <p>— which is supposed to mean that, when UType  <p>— which is supposed to mean that, when UType
# Line 511  Line 511 
511    
512  <p>Within a spectrum deemed compliant to the Spectral Data Model,  <p>Within a spectrum deemed compliant to the Spectral Data Model,
513  SPLAT tries to locate flux and  SPLAT tries to locate flux and
514  spectral axes as well as errors and units of those using UTypes. Again, the  spectral axes as well as errors and units of those using utypes. Again, the
515  match is case insensitive and employs suffix rules.</p>  match is case insensitive and employs suffix rules.</p>
516    
517  <p>When processing a spectrum in VOTable format, SPLAT searches for TABLE  <p>When processing a spectrum in VOTable format, SPLAT searches for TABLE
# Line 522  Line 522 
522  </div> <!-- subsubsection app-splat -->  </div> <!-- subsubsection app-splat -->
523    
524  <div class="section"><h4><a id="app-aladin" shape="rect"><span class="secnum">2.3.3. </span>Aladin</a></h4>  <div class="section"><h4><a id="app-aladin" shape="rect"><span class="secnum">2.3.3. </span>Aladin</a></h4>
525  <p>Aladin (written by Pierre Fernique and others) <a href="#ref_aladin">[ALADIN]</a> employs UTypes for:</p>  <p>Aladin (written by Pierre Fernique and others) <a href="#ref_aladin">[ALADIN]</a> employs utypes for:</p>
526    
527  <ul>  <ul>
528  <li>Finding and interpreting coordinate columns</li>  <li>Finding and interpreting coordinate columns</li>
# Line 532  Line 532 
532  <li>Interpreting DAL SSA responses</li>  <li>Interpreting DAL SSA responses</li>
533  </ul>  </ul>
534    
535  <p>The full list of UTypes required for each task is given in <a href="#appendixa">Appendix A</a>.</p>  <p>The full list of utypes required for each task is given in <a href="#appendixa">Appendix A</a>.</p>
536    
537  </div> <!-- subsubsection app-aladin -->  </div> <!-- subsubsection app-aladin -->
538    
539  <div class="section"><h4><a id="app-vospec" shape="rect"><span class="secnum">2.3.4. </span>VOSpec</a></h4>  <div class="section"><h4><a id="app-vospec" shape="rect"><span class="secnum">2.3.4. </span>VOSpec</a></h4>
540    
541  <p>VOSpec (written by Juan Gonzalez) <a href="#ref_vospec">[VOSpec]</a> uses UTypes for:</p>  <p>VOSpec (written by Juan Gonzalez) <a href="#ref_vospec">[VOSpec]</a> uses utypes for:</p>
542    
543  <ul>    <ul>  
544  <li>SSAP parsing: UTypes are identified by direct string comparison of  <li>SSAP parsing: utypes are identified by direct string comparison of
545  fragments with the documented UTypes, i.e., after converting the UType  fragments with the documented utypes, i.e., after converting the UType
546  found in the table to upper case, a check is made whether this UType  found in the table to upper case, a check is made whether this UType
547  contains a fragment of a certain fragment of the UType defined in the specification.  In case the required UType is not found, a check of UCDs and ids is also  contains a fragment of a certain fragment of the UType defined in the specification.  In case the required UType is not found, a check of UCDs and ids is also
548  done in some cases to cope with severely non-compliant services.</li>  done in some cases to cope with severely non-compliant services.</li>
# Line 557  Line 557 
557  string comparison.</li>  string comparison.</li>
558    
559  <li> Spectral DM files in XML parsing: Case insensitive comparison with  <li> Spectral DM files in XML parsing: Case insensitive comparison with
560  UTypes defined in Spectrum DM document.</li>  utypes defined in Spectrum DM document.</li>
561  </ul>  </ul>
562    
563  <p>In summary, VOSpec uses utypes in case insensitive string comparison.  <p>In summary, VOSpec uses utypes in case insensitive string comparison.
# Line 573  Line 573 
573  <ul>    <ul>  
574   <li>Semantically aware usage of terms in the existing UType vocabulary/ies</li>   <li>Semantically aware usage of terms in the existing UType vocabulary/ies</li>
575   <li>Semantically unaware manipulation of UType strings</li>   <li>Semantically unaware manipulation of UType strings</li>
576   <li>Places where UTypes could/might/should be used UTypes but are not</li>   <li>Places where utypes could/might/should be used but are not</li>
577   </ul>   </ul>
578    
579    
# Line 590  Line 590 
590  <div class="section"><h4><a id="app-topcat-semunaware"><span class="secnum">2.3.5.2. </span>Semantically unaware usages</a></h4>  <div class="section"><h4><a id="app-topcat-semunaware"><span class="secnum">2.3.5.2. </span>Semantically unaware usages</a></h4>
591    
592    
593  <p>UTypes are read/written in various places by the table I/O layer.  <p>Utypes are read/written in various places by the table I/O layer.
594  UTypes are part of STIL's internal table model, and so UType values  Utypes are part of STIL's internal table model, and so UType values
595  which are associated with columns are read in and recorded from  which are associated with columns are read in and recorded from
596  table formats which support UTypes, and the UTypes are propagated  table formats which support utypes, and the utypes are propagated
597  to output tables if the output format supports that.  True support  to output tables if the output format supports that.  True support
598  for UTypes is only provided in VOTable, but STIL has an internal  for utypes is only provided in VOTable, but STIL has an internal
599  convention of using TUTYPnnn header cards for FITS tables analogous to  convention of using TUTYPnnn header cards for FITS tables analogous to
600  the FITS serialization of the spectral data model.  In the  the FITS serialization of the spectral data model.  In the
601  case of a UType which is too long to fit in a FITS header  case of a UType which is too long to fit in a FITS header
602  (&gt;68 characters) the UType is not propagated to the output  (&gt;68 characters) the UType is not propagated to the output
603  (it is lost).</p>  (it is lost).</p>
604    
605  <p>UTypes are displayed, and can be added/edited, in the TOPCAT GUI  <p>Utypes are displayed, and can be added/edited, in the TOPCAT GUI
606  for table columns and parameters.</p>  for table columns and parameters.</p>
607    
608  <p>One use of utypes propagated in this way is to address  <p>One use of utypes propagated in this way is to address
# Line 622  Line 622 
622  can be addressed using the expression "utype$obscore_target_name"  can be addressed using the expression "utype$obscore_target_name"
623  as an alternative to using the column name.</p>  as an alternative to using the column name.</p>
624    
625  <p>taplint (the TAP service validator) checks that UTypes match between  <p>taplint (the TAP service validator) checks that utypes match between
626  TAP_SCHEMA and the /tables endpoint.  It also checks that UTypes are correct  TAP_SCHEMA and the /tables endpoint.  It also checks that utypes are correct
627  for tables declaring themselves ObsCore.</p>  for tables declaring themselves ObsCore.</p>
628    
629  <p>The SAMP MType spectrum.load.ssa-generic requires all UCDs and UTypes  <p>The SAMP MType spectrum.load.ssa-generic requires all UCDs and utypes
630  to be bundled up as name/value pairs in the "meta" map.  The  to be bundled up as name/value pairs in the "meta" map.  The
631  documentation at  documentation at
632  <a href="http://wiki.ivoa.net/twiki/bin/view/IVOA/SampMTypes#spectrum_load_ssa_generic ">http://wiki.ivoa.net/twiki/bin/view/IVOA/SampMTypes#spectrum_load_ssa_generic</a>  <a href="http://wiki.ivoa.net/twiki/bin/view/IVOA/SampMTypes#spectrum_load_ssa_generic ">http://wiki.ivoa.net/twiki/bin/view/IVOA/SampMTypes#spectrum_load_ssa_generic</a>
# Line 634  Line 634 
634  <blockquote>  <blockquote>
635    meta (map):    meta (map):
636       Additional metadata describing the spectral data found at       Additional metadata describing the spectral data found at
637       the URL. Key-&gt;Value pairs represent either UTypes or UCDs as       the URL. Key-&gt;Value pairs represent either utypes or UCDs as
638       defined or used in some version of the SSA specification or its       defined or used in some version of the SSA specification or its
639       predecessors. Example map keys are Access.Format (SSA 1.0 MIME       predecessors. Example map keys are Access.Format (SSA 1.0 MIME
640       type Utype) or VOX:Spectrum_Format (pre-1.0 SSA MIME type UCD). It       type Utype) or VOX:Spectrum_Format (pre-1.0 SSA MIME type UCD). It
# Line 667  Line 667 
667    
668  <div class="section"><h4><a id="app-topcat-nonusage"><span class="secnum">2.3.5.3. </span>Non-usages</a></h4>  <div class="section"><h4><a id="app-topcat-nonusage"><span class="secnum">2.3.5.3. </span>Non-usages</a></h4>
669    
670  <p>STILTS does not allow you to set/read UTypes for columns/parameters  <p>STILTS does not allow you to set/read utypes for columns/parameters
671  from the command line, though it does allow you to do that for UCDs.  from the command line, though it does allow you to do that for UCDs.
672  Probably, it should do it for UTypes.</p>  Probably, it should do it for utypes.</p>
673    
674  <p>STILTS/TOPCAT allows you to do multiple SSA (and SIA) positional  <p>STILTS/TOPCAT allows you to do multiple SSA (and SIA) positional
675  searches in the same way as multiple cone searches.  As a non-essential  searches in the same way as multiple cone searches.  As a non-essential
# Line 679  Line 679 
679  in the event that there are more than one within the requested radius.  in the event that there are more than one within the requested radius.
680  So it wants to work out RA and Dec from an SSA response, though if it  So it wants to work out RA and Dec from an SSA response, though if it
681  fails to do it, the multi-SSA still works.  fails to do it, the multi-SSA still works.
682  It does <strong>not</strong> use UTypes for this.  Here is the comment from the code:</p>  It does <strong>not</strong> use utypes for this.  Here is the comment from the code:</p>
683  <pre>  <pre>
684     // Could work harder here (and for getDecIndex); the correct thing     // Could work harder here (and for getDecIndex); the correct thing
685     // to do for SSA 1.04 would be to look for the column with     // to do for SSA 1.04 would be to look for the column with
# Line 708  Line 708 
708    contains metadata found in input files. That is enough to build a    contains metadata found in input files. That is enough to build a
709    searchable repository, but not to build VO compliant services. For    searchable repository, but not to build VO compliant services. For
710    that, native metadata must be enriched with quantities which are not    that, native metadata must be enriched with quantities which are not
711    necessarily in data files: namely UCDs, units, UTypes and    necessarily in data files: namely UCDs, units, utypes and
712    descriptions. These quantities can be set in metadata by a simple    descriptions. These quantities can be set in metadata by a simple
713    drag &amp; drop (see Fig. 2). That is very relevant for UCDs and units    drag &amp; drop (see Fig. 2). That is very relevant for UCDs and units
714    which can be used to query data (e.g. [phys.veloc] &gt; 1000 [km/s]).    which can be used to query data (e.g. [phys.veloc] &gt; 1000 [km/s]).
715    UTypes can also be mapped that way but this operation remains out of    Utypes can also be mapped that way but this operation remains out of
716    the scope of any data model.</p>    the scope of any data model.</p>
717    
718  <div class="figure">  <div class="figure">
# Line 725  Line 725 
725  The mapper shown in Fig. 3 binds DM fields with arithmetic operations on database columns.  The mapper shown in Fig. 3 binds DM fields with arithmetic operations on database columns.
726  The resulting mapping expressions are used by the Saada VO interface  The resulting mapping expressions are used by the Saada VO interface
727  to format the query results in a way compliant with the DM supported  to format the query results in a way compliant with the DM supported
728  by a given service. UTypes are used here to identify DM fields. They  by a given service. Utypes are used here to identify DM fields. They
729  are considered as simple strings without regards on their inner  are considered as simple strings without regards on their inner
730  structure.</p>  structure.</p>
731    
# Line 734  Line 734 
734  <p class="figurecaption"><strong>Figure 3:</strong> DM mapping in Saada</p>  <p class="figurecaption"><strong>Figure 3:</strong> DM mapping in Saada</p>
735  </div> <!-- figure -->    </div> <!-- figure -->  
736    
737  <p>Note that the Saada query engine is also enable to process constrains expressed with UTypes as it does with UCDs.</p>  <p>Note that the Saada query engine is also enable to process constrains expressed with utypes as it does with UCDs.</p>
738    
739  </div> <!-- subsubsection app-saada -->  </div> <!-- subsubsection app-saada -->
740    
# Line 756  Line 756 
756  particular, SEDLib implements the Data Model described by the XML  particular, SEDLib implements the Data Model described by the XML
757  schema, which is not equivalent to the UML diagrams in the Spectrum 1.03 document, but is more suited to a concrete implementation.</p>  schema, which is not equivalent to the UML diagrams in the Spectrum 1.03 document, but is more suited to a concrete implementation.</p>
758    
759  <p>UTypes are used to map the Spectra/SED VOTable metadata to the DM  <p>Utypes are used to map the Spectra/SED VOTable metadata to the DM
760  implemented by SEDLib.  All the UTyped values are made available by  implemented by SEDLib.  All the UTyped values are made available by
761  SEDLib in a Sed class instance. Thus, users can browse all the metadata  SEDLib in a Sed class instance. Thus, users can browse all the metadata
762  in a more consistent way: all the values that refer to the same concept  in a more consistent way: all the values that refer to the same concept
763  (i.e. UTypes without the prefix are the same) are displayed in the same  (i.e. utypes without the prefix are the same) are displayed in the same
764  column in the metadata browser, and users can build boolean expressions  column in the metadata browser, and users can build boolean expressions
765  to filter their data. Also, all the components (either native or from  to filter their data. Also, all the components (either native or from
766  third party plugins) can programmatically access, as input/output, all  third party plugins) can programmatically access, as input/output, all
767  the values in the original file, thus adding science capabilities to  the values in the original file, thus adding science capabilities to
768  Iris.</p>  Iris.</p>
769    
770  <p>The UTypes prefix ("namespace") is ignored when comparing UTypes,  <p>The utypes prefix ("namespace") is ignored when comparing utypes,
771  but it is used (as "spec:") when writing out the files. Note that, in  but it is used (as "spec:") when writing out the files. Note that, in
772  accordance with Spectrum 1.1, only UTypes with the spec prefix are  accordance with Spectrum 1.1, only utypes with the spec prefix are
773  interpreted as part of the Spectrum DM, even though Spectrum 1.1  interpreted as part of the Spectrum DM, even though Spectrum 1.1
774  imports classes from the CharDM (prefix char), which in turn imports  imports classes from the CharDM (prefix char), which in turn imports
775  STC classes (prefix stc). As a result, even though the classes, in  STC classes (prefix stc). As a result, even though the classes, in
776  most cases, are the same, stc: and char: UTypes are not interpreted,  most cases, are the same, stc: and char: utypes are not interpreted,
777  unless the unprefixed UTypes were the same; this is never the case for  unless the unprefixed utypes were the same; this is never the case for
778  Spectrum 1.1, because the *:Spectrum.* pattern that spoils the blind  Spectrum 1.1, because the *:Spectrum.* pattern that spoils the blind
779  string comparison.</p>  string comparison.</p>
780    
# Line 784  Line 784 
784  converted to the quantities of the other segments in a SED, an exception  converted to the quantities of the other segments in a SED, an exception
785  is thrown when one tries to add that segment to the SED.</p>  is thrown when one tries to add that segment to the SED.</p>
786    
787  <p>Some services (notably NED) add some UTypes for tagging metadata  <p>Some services (notably NED) add some utypes for tagging metadata
788  related to the provenance of the data (e.g. the bibcode reference to  related to the provenance of the data (e.g. the bibcode reference to
789  the paper whence the data has been drawn). This information is  the paper whence the data has been drawn). This information is
790  available in SEDLib, but in order to be used (e.g. by plugins  available in SEDLib, but in order to be used (e.g. by plugins
791  dedicated to those services) they must be accessed using the UTypes  dedicated to those services) they must be accessed using the utypes
792  string. In compliance with the assumption that UTypes should not be  string. In compliance with the assumption that utypes should not be
793  parsed, and in the absence of a proper extensibility specification, the  parsed, and in the absence of a proper extensibility specification, the
794  use of this metadata is naïve. Nonetheless, custom metadata is shown to  use of this metadata is naïve. Nonetheless, custom metadata is shown to
795  the user and can be used for filtering purposes.</p>  the user and can be used for filtering purposes.</p>
796    
797  <p>Several changes will need to be made when Iris is updated to the  <p>Several changes will need to be made when Iris is updated to the
798  Spectral 2.0 DM: the UType namespace will change and all the Spectrum  Spectral 2.0 DM: the UType namespace will change and all the Spectrum
799  1.1 UTypes will be replicated with a different prefix: "sdm". All the  1.1 utypes will be replicated with a different prefix: "sdm". All the
800  UTypes in Spectrum 1.1 will be changed by removing the Spectrum string.</p>  utypes in Spectrum 1.1 will be changed by removing the Spectrum string.</p>
801    
802  </div> <!-- subsubsection app-iris -->  </div> <!-- subsubsection app-iris -->
803    
# Line 807  Line 807 
807  <div class="section"><h3><a id="reg" shape="rect"><span class="secnum">2.4. </span>Registry</a></h3>  <div class="section"><h3><a id="reg" shape="rect"><span class="secnum">2.4. </span>Registry</a></h3>
808    
809  <p>The VODataService 1.1 <a href="#ref_vods">[VODS]</a> standard allows  <p>The VODataService 1.1 <a href="#ref_vods">[VODS]</a> standard allows
810  UTypes on schemas, tables, columns, and foreign keys (this is analogous to  utypes on schemas, tables, columns, and foreign keys (this is analogous to
811  TAP_SCHEMA; cf. section <span class="xref"><a href="#dal">2.2</a></span>).   The UType element  TAP_SCHEMA; cf. section <span class="xref"><a href="#dal">2.2</a></span>).   The UType element
812  is defined to be of type xs:token.</p>  is defined to be of type xs:token.</p>
813    
814  <p>Comments in the XML schema indicate that from the point of view  <p>Comments in the XML schema indicate that from the point of view
815  of VODataService, a UType on a schema is  of VODataService, a UType on a schema is
816  "an identifier for a concept in a data model that the data in  "an identifier for a concept in a data model that the data in
817  this schema as a whole represent".  UTypes on a foreign key are defined  this schema as a whole represent".  Utypes on a foreign key are defined
818  as "an identifier  as "an identifier
819  for a concept in a data model that the association enabled by this key  for a concept in a data model that the association enabled by this key
820  represents", on tables as "an identifier for a concept in a data model  represents", on tables as "an identifier for a concept in a data model
# Line 826  Line 826 
826  structure is given.  Nothing is said on case normalization.</p>  structure is given.  Nothing is said on case normalization.</p>
827    
828    
829  <p>A working draft for the relational registry 2 <a href="#ref_ridraft">[REGTAP]</a> employs UTypes to</p>  <p>A working draft for the relational registry 2 <a href="#ref_ridraft">[REGTAP]</a> employs utypes to</p>
830  <ul>  <ul>
831  <li>link the VOResource data model as defined by the collection of the  <li>link the VOResource data model as defined by the collection of the
832  related XML schema documents with columns in a set of database  related XML schema documents with columns in a set of database
# Line 835  Line 835 
835  without having to explicitly model all aspects of them.</li>  without having to explicitly model all aspects of them.</li>
836  </ul>  </ul>
837    
838  <p>Generating UTypes for the RegTAP columns and tables is done via XSLT  <p>Generating utypes for the RegTAP columns and tables is done via XSLT
839  that operates on XSD (the XSLT will fail for certain authoring ways that  that operates on XSD (the XSLT will fail for certain authoring ways that
840  do not occur in VOResource). Conceptually, 1:1 relationships are  do not occur in VOResource). Conceptually, 1:1 relationships are
841  represented by concatenating the name of the root type and the  represented by concatenating the name of the root type and the
# Line 845  Line 845 
845    
846  <p>To avoid having to redefine the table structure for every VOResource  <p>To avoid having to redefine the table structure for every VOResource
847  extension newly defined, RegTAP has a table mapping pairs of resource IVORN  extension newly defined, RegTAP has a table mapping pairs of resource IVORN
848  and UType to string values.  The UTypes are computed as above; the  and UType to string values.  The utypes are computed as above; the
849  computability is convenient since it avoids the requirement for authors  computability is convenient since it avoids the requirement for authors
850  of VOResource extensions to manually define UTypes.</p>  of VOResource extensions to manually define utypes.</p>
851    
852  <p>RegTAP requires lowercasing UTypes on ingestion to ensure that  <p>RegTAP requires lowercasing utypes on ingestion to ensure that
853  case-insensitive matching is possible although ADQL has no native operator  case-insensitive matching is possible although ADQL has no native operator
854  reliably doing case-insensitive string comparisons.  In other words,  reliably doing case-insensitive string comparisons.  In other words,
855  RegTAP  RegTAP
856  assumes that UTypes are case-insensitive.</p>  assumes that utypes are case-insensitive.</p>
857  </div> <!-- subsection reg -->  </div> <!-- subsection reg -->
858    
859    
860  <div class="section"><h3><a id="sem" shape="rect"><span class="secnum">2.5. </span>Semantics</a></h3>  <div class="section"><h3><a id="sem" shape="rect"><span class="secnum">2.5. </span>Semantics</a></h3>
861    
862  <p>The current VOUnits proposed recommendation mentions UTypes as a tool to express "the  <p>The current VOUnits proposed recommendation mentions utypes as a tool to express "the
863  nature of the concept" and offer UCDs as an alternative tool; in this way  nature of the concept" and offer UCDs as an alternative tool; in this way
864  each quantity in a model would be "described with a UCD or UType, value  each quantity in a model would be "described with a UCD or UType, value
865  and VOUnit".   As to what a "concept" might be, it suggests as an  and VOUnit".   As to what a "concept" might be, it suggests as an
# Line 879  Line 879 
879    
880  <div class="section"><h3><a id="d2e918"><span class="secnum">2.7. </span>Grid and Web Services</a></h3>  <div class="section"><h3><a id="d2e918"><span class="secnum">2.7. </span>Grid and Web Services</a></h3>
881  <p>The specifications put forward by the Grid and Web Services Working Group  <p>The specifications put forward by the Grid and Web Services Working Group
882  make no use or mention of UTypes in any of its specifications.</p>  make no use or mention of utypes in any of its specifications.</p>
883  </div> <!-- subsection gws -->  </div> <!-- subsection gws -->
884  </div> <!-- section current usages -->  </div> <!-- section current usages -->
885    
# Line 949  Line 949 
949  keyword must be mapped to a utype, where the term "arbitrary" here means  keyword must be mapped to a utype, where the term "arbitrary" here means
950  that there is no algorithmic mapping between data model roles and FITS  that there is no algorithmic mapping between data model roles and FITS
951  keywords. In the concrete example of the SDM, the relationship between  keywords. In the concrete example of the SDM, the relationship between
952  VOTable UTypes and FITS keywords is also degenerate, because in  VOTable utypes and FITS keywords is also degenerate, because in
953  VOTables, some fields can have different values in, e.g., the Data and  VOTables, some fields can have different values in, e.g., the Data and
954  Char section, while in FITS some Char fields are inherited from  Char section, while in FITS some Char fields are inherited from
955  Data.</p>  Data.</p>
# Line 963  Line 963 
963  compliant FITS spectrum is saved to VOTable by a model-unaware  compliant FITS spectrum is saved to VOTable by a model-unaware
964  application. Note that the information loss depends on whether  application. Note that the information loss depends on whether
965  certain piece of metadata is contained in a column or in a parameter  certain piece of metadata is contained in a column or in a parameter
966  inside the header. For columns, the TUTYPn convention allows UTypes to  inside the header. For columns, the TUTYPn convention allows utypes to
967  be linked to columns, but this is not possible for header keywords.</p>  be linked to columns, but this is not possible for header keywords.</p>
968    
969  </div> <!-- section assessement -->  </div> <!-- section assessement -->
# Line 1004  Line 1004 
1004  <div class="appendix"><h2><a id="appendixA" shape="rect"/>Appendix A:  <div class="appendix"><h2><a id="appendixA" shape="rect"/>Appendix A:
1005    Specific UType usage in Aladin</h2>    Specific UType usage in Aladin</h2>
1006    
1007    <p>Here is a list of all UTypes that Aladin interprets as of late 2012:</p>    <p>Here is a list of all utypes that Aladin interprets as of late 2012:</p>
1008    
1009     <ol>     <ol>
1010        <li>For finding and interpreting the coordinate columns.        <li>For finding and interpreting the coordinate columns.

Legend:
Removed from v.2123  
changed lines
  Added in v.2124

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