Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable generic FIELD/PARAM metadata #29

Open
mbtaylor opened this issue Oct 20, 2021 · 5 comments
Open

Enable generic FIELD/PARAM metadata #29

mbtaylor opened this issue Oct 20, 2021 · 5 comments
Labels
needs_discussion More discussion needed before fixing

Comments

@mbtaylor
Copy link
Member

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.

@msdemlei
Copy link
Contributor

msdemlei commented Oct 20, 2021 via email

@mbtaylor
Copy link
Member Author

LINK is rather under-documented. It has 8 attributes, all optional, and it's not obvious to me why you'd write "<LINK action='rdf' content-role='#mandatory'/>" rather than for instance "<LINK content-role='rdf' title='mandatory'/>" or something else (the latter looks more in line with the content-role values documented in VOTable Sec 3.7). What the LINK documentation does say is that its supposed to "provide pointers to external resources through a URI", which I don't think is what's happening here (it has no href, or indeed gref).

I'm sure you could come up with a way to do it, but if so I'd argue for documenting that, in the VOTable document, as a standard way to represent miscellaneous key/value metadata. If that can be done in a way that's easy to re-use for the next time we come up against this sort of thing, I'll be happy enough.

I admit to not understanding RDF(a) well enough to know what benefits we'd get from tying into that (somewhat complicated) standard.

@msdemlei
Copy link
Contributor

msdemlei commented Oct 21, 2021 via email

@mbtaylor
Copy link
Member Author

On the other hand, from a marketing perspective being able to claim
"our container format is ready for Linked Data by virtue of RDFa"
might help when trying to infatuate the funding agencies.

I'm not saying your cynicism is necessarily out of whack with reality here, but I'm a bit shocked to hear politics-over-engineering-quality arguments coming from you. In any case my guess is we'll be disappointed if we base our decisions on the expectation of funding bodies packed with RDFa enthusiasts, so let's not use this as a consideration.

@msdemlei
Copy link
Contributor

msdemlei commented Oct 27, 2021 via email

@tomdonaldson tomdonaldson added the needs_discussion More discussion needed before fixing label Feb 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs_discussion More discussion needed before fixing
Projects
None yet
Development

No branches or pull requests

3 participants