JS module helping users to query and browse complex data exposed in a IVOA TAP service Retrieving Complex Data in TAP services
Thanks to the Virtual Observatory, users can query services through a common language (ADQL) to get data directly from databases and they can choose an output format derived from a simple table serialization: votable, TSV and so on.
To write advanced queries, users must first understand the database schema to identify the tables containing data of interest and to figure out how to join them. Some tools (TOPCAT, TAPHandle, Aladin) propose generic interfaces helping for this but none of these tools is capable of providing a convenient view of a table set containing complex data. It is furthermore difficult to reconstruct complex data structures from flattened tables usually returned by SQL queries. TAP Simbad is a significant example of this difficulty with data spread out over 25 tables linked by foreign keys.
We are working on a client module addressing this issue for TAP Web interfaces . The database schema, namely the TAP_SCHEMA, is analysed to build a JSON representation of complex data that can be annotated with query constraints set by the user. So that complex queries can be easily setup and run. Query results are parsed out to reconstruct the data structure in JSON strings, where top level data are explicitly listed and subcomponents can be fetched with appropriate synchronous TAP queries. These queries are generated by the parser and included within the JSON output. Thus, users can unfold on demand any part of the searched data.
This mechanism is being implemented in Javascript to be proposed as a new overlay for both Simbad and TAPHandle interfaces.
TapComplex can be tested here