Skip to content

Enable generic FIELD/PARAM metadata #29

@mbtaylor

Description

@mbtaylor

There is a discussion at ivoa-std/DataLink#51 about how to label PARAM elements as required or optional, as well as indicating their cardinality. Various more or less unsatisfactory possibilities (ab)using existing VOTable features have been suggested (add new value "optional" to the existing "type"/"location"/"trigger" vocabulary of the rarely-used @type attribute; use some syntax within the @utype attribute; use LINK with some RDF semantics; do it using GROUPs). Maybe some of these solutions could do the job, but they are really not intuitive and not using the VOTable elements in the way that they were intended.

This sort of thing (wanting to transmit column metadata that does not fit well into the existing VOTable schema) has cropped up several times in the past; another example is wanting to record the HEALPix Order of a column containing a HEALPix index (http://mail.ivoa.net/pipermail/apps/2016-August/001131.html). It may also occur in other communities wanting to re-use VOTable; e.g. the Cluster Science Archive at ESA is now using TAP and hence VOTable; their columns have metadata labelled "CAIO ATTRIBUTE" (see https://www.cosmos.esa.int/web/csa-guide/tap-tables-and-views) which doesn't fit anywhere in the VOTable metadata model.

GROUPs can probably be made to do these jobs, but the result is verbose, error-prone, and hard to read.

I suggested a long time ago (2009? but I can't find a record of it) the possibility to allow generic per-column metadata in VOTable, but it didn't seem to be popular then; a decade on I'm going to have another go.

So: I suggest the option to include arbitrary key-value pairs within the FIELD element (and hence PARAM which derives from it). We could define a new element for this, say like:

   <FIELD name="healpix_id" datatype="int">
     <META key="healpix_order" value="8"/>
   </FIELD>

or we could re-use the existing INFO (or even PARAM) element:

  <FIELD name="healpix_id" datatype="int">
    <INFO name="healpix_order" value="8"/>
  </FIELD>

VOTable itself would not impose any constraints on the key content beyond declaring it an xs:token or similar; but the general mechanism would be available for other standards or private conventions to use where required. I believe this is a fairly low-impact modification to the VOTable schema that could provide an easy way forward for ivoa-std/DataLink#51 (add to relevant PARAMs a META child with key="required" or "cardinality" or even something PDL-related) and to other similar items we're likely to come up against in the future. Note this approach has some things in common with the Extensible Vocabulary idea used (I claim successfully) in SAMP.

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs_discussionMore discussion needed before fixing

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions