24. EPN-TAP 1: Discovery

EPN-TAP is a protocol for distributing solar system data; essentially, it’s normal VO TAP plus a pre-defined table structure; the tables are always called epn_core.

Let’s try an all-VO query for data on Mars. For discovery, we use GloTS:

glots_svc = pyvo.dal.TAPService("http://dc.g-vo.org/tap")
epn_services = glots_svc.run_sync(
  "SELECT accessurl, ivo_string_agg(table_name, '#') as tables"
  "  FROM glots.services NATURAL JOIN glots.tables"
  "  WHERE table_name LIKE '%epn_core'"
  "  GROUP BY accessurl")

GloTS, the global TAP schema, is a service that iterates over all TAP services out there and harvests their TAP schemas. The union of those, annotated with the source service, are then published as glots.services, glots.tables, an glots.columns. This is a private initiative and should be supplanted by the registry soon-ish. While it exists, it’s pretty nifty, though.

The official way to discover EPN-TAP services is a normal registry query looking like this:

SELECT ivoid, access_url
FROM rr.capability
NATURAL JOIN rr.interface
NATURAL JOIN rr.res_table
WHERE
  standard_id LIKE 'ivo://ivoa.net/std/tap%'
  AND table_utype LIKE 'ivo://vopdc.obspm/std/epncore#schema-2.%'

– however, this assumes that all EPN-TAP services properly publish table metadata, and, unfortunately, not all do, yet. Which is why we recommend using GloTS for now.


Markus Demleitner, Hendrik Heinl