The global TAP schema collects information on
tables and columns from known TAP servers. This facilitates locating
queriable data by physics (via UCD) or keywords (via description).
Note that this shouldn't really be necessary as all information
present here should be exposed through Registry records. However,
in reality data providers currently are much more liable to give
column metadata in their tap_schema than in their Registry records.
Hence, for the time being, we maintain this service by harvesting
tap_schemas about monthly.
500
2010-07-26T13:39:00
virtual-observatories
astronomy-databases
GloTS, the Global TAP Schema
This service lets you find columns within VO
\RSTservicelink{/__system__/tap/run/info}{TAP} services by
\RSTservicelink{/ucds/ui/ui/form}{UCD} or
description words.
For UCD, you will frequently want to use regular expression matches (e.g., ``~
pos.eq*``). Note that, unfortunately, some services still use
old-style UCDs (see `Moving to UCD1+`_). Thus, to find all interesting
columns, you may need to search multiple times.
The table can also be queried using TAP or on our
\RSTservicelink{/adql}{ad-hoc ADQL service}.
.. _Moving to UCD1+: http://www.ivoa.net/Documents/WD/UCD/UCD-20040521.html
execDef.spawnPython("bin/retrieveTAPServices.py")
execDef.spawnPython("bin/ingest.py")
GloTS 1.0
ivo://org.gavo.dc/std/glots#tables-1.0
A table of TAP services harvested from the
registry (and some spoon-fed).
A table of tables accesible through the TAP
services known to glots.services.
lower(table_name) gin_trgm_ops
to_tsvector('english', table_desc)
A table of columns within the tables listed
in glots.tables.
lower(table_name) gin_trgm_ops
lower(column_name) gin_trgm_ops
to_tsvector('english', description)
CREATE VIEW glots.allcols AS (
SELECT column_name, columns.description, ucd, unit, indexed,
table_name, table_desc,
services.ivoid,
services.accessurl
FROM (
glots.tables JOIN glots.columns USING (ivoid, table_name))
JOIN glots.services USING (ivoid))
yield "to_tsvector(table_desc) @@ plainto_tsquery(%%(%s)s)"%(
base.getSQLKey("tablewords", inPars["tablewords"], outPars))
yield "to_tsvector(description) @@ plainto_tsquery(%%(%s)s)"%(
base.getSQLKey("columnwords", inPars["columnwords"], outPars))
tableName, ivoId = data
return T.a(href="/glots/q/showcols/form?__nevow_form__=genForm"
"&table_name=%s&ivoid=%s"%(
urllib.parse.quote(tableName), urllib.parse.quote(ivoId)))[tableName]
return T.a(href="/glots/q/showtables/qp/%s"%urllib.parse.quote(data))[
data[6:]]
GloTS plain
Global TAP Schema Simple Search
\internallink{glots/q/servers/form}
return T.a(href="/glots/q/showtables/qp/%s"%urllib.parse.quote(data))[
data[6:]]
GloTS servers list
Global TAP Servers List
A list of TAP servers in the VO, mostly
taken from the registry.
\internallink{glots/q/plain/form}
Just sending an empty form will give you
a list of all TAP servers we know of. Note that some of them actually
are not TAP servers at all or have some functional deficiencies. Trying
to follow their table links will yield 404 ("Not found") errors.
GloTS tables
GloTS tables for service
A list of tables for a TAP service specified
in the URL by its ivo-id.
res/tablestemplate.html
res/tablestemplate.html
res/tablestemplate.html
ivoid
# wants n:data="result"
ctx.tag.clear()
if data:
return ctx.tag["GloTS tables for service(s) '%s'"%(
self.queryMeta["inputTable"].getParam("ivoid"))]
else:
return ctx.tag["GloTS tables for service X"]
tableName, ivoId = data
return T.a(href="/glots/q/showcols/form?__nevow_form__=genForm"
"&table_name=%s&ivoid=%s"%(
urllib.parse.quote(tableName), urllib.parse.quote(ivoId)))[tableName]
GloTS tabcol
GloTS columns for table
Columns within TAP-accessible tables.
res/columnstemplate.html
# wants n:data="result"
ctx.tag.clear()
return ctx.tag["GloTS columns for table %s"%(
self.queryMeta["formal_data"]["table_name"])]
# wants n:data=result
fd = self.queryMeta["formal_data"]
return ctx.tag["Table %s on service %s contains the following columns:"%(
fd["table_name"], fd["ivoid"])]
showcols/form
row = self.getFirstVOTableRow(rejectExtras=False)
self.assertEqual(row["description"], "B mag from USNO-B, first epoch")
self.assertEqual(row["datatype"], "float")
self.assertEqual(row["table_name"], "ppmxl.main")
/tap/sync
row = self.getFirstVOTableRow()
self.assertEqual(row["description"], "'Resulting' parallax p_res"
" of the star. This is either the HIPPARCOS parallax or a"
" photometric/spectroscopic parallax.")
self.assertEqual(row["table_desc"], "The union of all published parts"
" of FK6, comprising only the common\\nfields.")
showtables/form
rr.res_role')
]]>