pyvo icon indicating copy to clipboard operation
pyvo copied to clipboard

VOSITables look for <description> tag in child table endpoint

Open stargaser opened this issue 5 years ago • 1 comments

When table descriptions are requested for a VOSITable, the individual table information is fetched from the child table resource, including the <description> tag. The <description> tag is optional in the child table resource. In at least some cases, the <description> tag is present in the tables endpoint but that information is ignored.

We discovered this in the IRSA TAP server with this code:

import pyvo
service=pyvo.dal.TAPService('https://irsa.ipac.caltech.edu/TAP')
print(service.tables['akari_irc'].name, service.tables['akari_irc'].description)

(warning: the <description> tag is likely to be added to the child resources for this service, so this example may start returning descriptions.)

In the VOSITables._get_table(name) method, the child resource is queried if table.columns and table.foreignkeys do not exist. But table.description is overwritten with None if the child resource does not include <description>.

I propose that if the child resource does not include <description>, then the existing table description from the tables endpoint should be used instead. If there is agreement that this is the desired behavior, I can make a pull request to implement this inside dal.vosi.VOSITables._get_table().

stargaser avatar Mar 04 '20 21:03 stargaser

Agreed.

At the same time, though, I would also support an initiative at the IVOA to develop a clarification to the VOSI standard that would say that a "child table" resource SHALL (or at least SHOULD) provide at least as much information on the selected table as is provided in the parent resource. It seems a bit weird for what is basically a "give me more detail on table X" resource to end up sometimes giving less detail.

gpdf avatar Mar 04 '20 21:03 gpdf