<?xml-stylesheet href='/static/xsl/oai.xsl' type='text/xsl'?>
<ri:Resource created="2020-10-22T14:06:38.688" status="active" updated="2026-02-28T23:01:55.093" version="1.2" xmlns:esatapplus="http://esa.int/xml/EsaTapPlus" xmlns:ri="http://www.ivoa.net/xml/RegistryInterface/v1.0" xmlns:tr="http://www.ivoa.net/xml/TAPRegExt/v1.0" xmlns:vr="http://www.ivoa.net/xml/VOResource/v1.0" xmlns:vs="http://www.ivoa.net/xml/VODataService/v1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ivoa.net/xml/TAPRegExt/v1.0 http://vo.ari.uni-heidelberg.de/docs/schemata/TAPRegExt.xsd http://www.ivoa.net/xml/VOResource/v1.0 http://vo.ari.uni-heidelberg.de/docs/schemata/VOResource.xsd http://www.ivoa.net/xml/VODataService/v1.1 http://vo.ari.uni-heidelberg.de/docs/schemata/VODataService.xsd" xsi:type="vs:CatalogService">
           <title>European JWST Archive TAP</title>
           <shortName>JWST</shortName>
           <identifier>ivo://esavo/jwst/tap</identifier>
           <curation>
              <publisher>European Space Agency</publisher>
              <contact>
                 <name>Bruno Merin</name>
                 <email>esdc_leads@cosmos.esa.int</email>
                 <telephone>+34918131456</telephone>
              </contact>
           </curation>
           <content>
              <subject>ESA, JWST, James Webb, Archive, ESAC</subject>
              <description>This service provides access to observations from the European JWST Science Archive hosted at the ESAC Science Data Centre.</description>
              <referenceURL>https://jwst.esac.esa.int/archive</referenceURL>
           </content> 
           <capability standardID="ivo://ivoa.net/std/TAP" xsi:type="tr:TableAccess">
              <interface role="std" version="1.1" xsi:type="vs:ParamHTTP">
                 <accessURL use="base">https://jwst.esac.esa.int/server/tap</accessURL>
              </interface>
              <dataModel ivo-id="ivo://ivoa.net/std/ObsCore#core-1.1">ObsCore-1.1</dataModel>
              <language>
                 <name>ADQL</name>
                 <version ivo-id="ivo://ivoa.net/std/ADQL#v2.0">2.0</version>
                 <version ivo-id="ivo://ivoa.net/std/ADQL#v2.1">2.1</version>
                 <description>ADQL 2.1</description>
                 <languageFeatures type="ivo://ivoa.net/std/tapregext#features-udf">
                    <feature>
                       <form>esdc_array_dims(n VARCHAR) -&gt; VARCHAR</form>
                       <description>
        						Returns a text representation of array dimensions
        						Parameters:
        							n: Input array.</description>
                    </feature>
                    <feature>
                       <form>esdc_array_element(n VARCHAR, position INTEGER) -&gt; VARCHAR</form>
                       <description>
        						Returns the requested element (second argument) of the provided array as first argument in the input
        						Parameters:
        							n: Input array.
        							position: array position of the element to be retrieved where position = 1 refers to the first array element</description>
                    </feature>
                    <feature>
                       <form>esdc_array_length(n VARCHAR, dim INTEGER) -&gt; INTEGER</form>
                       <description>
        						Returns the length of the requested array dimension
        						Parameters:
        							n: Input array.
        							dim: Input dimension.</description>
                    </feature>
                    <feature>
                       <form>esdc_array_ndims(n VARCHAR) -&gt; INTEGER</form>
                       <description>
        						Returns the number of dimensions of the array.
        						Parameters:
        							n: Input array.</description>
                    </feature>
                    <feature>
                       <form>esdc_astrometric_parameter_error(e_ra_deg DOUBLE, e_de_deg DOUBLE, e_plx DOUBLE, e_pm_ra DOUBLE, e_pm_de DOUBLE, de_ra DOUBLE, plx_ra DOUBLE, pm_ra_ra DOUBLE, pm_de_ra DOUBLE, plx_de DOUBLE, pm_ra_de DOUBLE, pm_de_de DOUBLE, pm_ra_plx DOUBLE, pm_de_plx DOUBLE, pm_de_pm_ra DOUBLE, parallax DOUBLE, radial_velocity DOUBLE, e_rv DOUBLE) -&gt; DOUBLE[21]</form>
                       <description>
        						Returns the astrometric parameter errors double array to be used as input for epoch_prop() function
        						Parameters:
        							e_ra_deg: Standard Error in Right Ascension (mas)
        							e_de_deg: Standard Error in Declination (mas)
        							e_plx: Standard Error in Parallax (mas)
        							e_pm_ra: Standard Error in Proper Motion in RA (mas/yr)
        							e_pm_de: Standard Error in Proper Motion in Dec (mas/yr)
        							de_ra: Correlation Coefficient RA/Dec
        							plx_ra: Correlation Coefficient Parallax/RA
        							pm_ra_ra: Correlation Coefficient Proper Motion in RA/RA
        							pm_de_ra: Correlation Coefficient Proper Motion in Dec/RA
        							plx_de: Correlation Coefficient Parallax/Dec
        							pm_ra_de: Correlation Coefficient Proper Motion in RA/Dec
        							pm_de_de: Correlation Coefficient, Proper Motion in Dec/Dec
        							pm_ra_plx: Correlation Coefficient Proper Motion in RA/Parallax
        							pm_de_plx: Correlation Coefficient, Proper Motion in Dec/Parallax
        							pm_de_pm_ra: Correlation Coefficient, Proper Motion in RA/Proper Motion in Dec
        							parallax: Parallax (mas)
        							radial_velocity: Radial Velocity (km/s)
        							e_rv: Standard Error in Radial Velocity (km/s)</description>
                    </feature>
                    <feature>
                       <form>esdc_astrometric_parameters(ra DOUBLE, de DOUBLE, parallax DOUBLE, pm_ra DOUBLE, pm_de DOUBLE, radial_velocity DOUBLE) -&gt; DOUBLE[6]</form>
                       <description>
        						Returns the astrometric parameters double array to be used as input for epoch_prop() function
        						Parameters:
        							ra: Right Ascension (deg)
        							de: Declination (deg)
        							parallax: Parallax (mas)
        							pm_ra: Proper Motion in Right Ascension (mas/yr)
        							pm_de: Proper Motion in Declination (mas/yr)
        							radial_velocity: Radial Velocity (km/s)</description>
                    </feature>
                    <feature>
                       <form>esdc_cardinality(n VARCHAR) -&gt; INTEGER</form>
                       <description>
        						Returns the total number of elements in the array, or 0 if the array is empty.
        						Parameters:
        							n: Input array.</description>
                    </feature>
                    <feature>
                       <form>esdc_case_condition(default_value VARCHAR, conditions VARCHAR, results VARCHAR) -&gt; VARCHAR</form>
                       <description>
        						For an array of input conditions and results, return the first one found true.
        						Parameters:
        							default_value: Value to return if all conditions are false.
        							conditions: Input conditions array.
        							results: Input results array.</description>
                    </feature>
                    <feature>
                       <form>esdc_case_expression(input_value VARCHAR, default_value VARCHAR, condition_values VARCHAR, results VARCHAR) -&gt; VARCHAR</form>
                       <description>
        						For an array of input conditions and results, return the first one found equal to input value.
        						Parameters:
        							input_value: Value to compare condition values with.
        							default_value: Value to return if none of condition_values equal input_value.
        							condition_values: Input results array.
        							results: Input results array.</description>
                    </feature>
                    <feature>
                       <form>esdc_coalesce(n VARCHAR) -&gt; VARCHAR</form>
                       <description>
        						Returns the first of its arguments that is not null
        						Parameters:
        							n: Nth input element.</description>
                    </feature>
                    <feature>
                       <form>esdc_crossmatch_positional(table_schema_a VARCHAR, table_name_a VARCHAR, table_schema_b VARCHAR, table_name_b VARCHAR, radius DOUBLE, output_table_name VARCHAR) -&gt; BIGINT</form>
                       <description>
        						For input tables, create a positional crossmatch for input radius and store it in a separate table.
        						Parameters:
        							table_schema_a: First table schema.
        							table_name_a: First table name.
        							table_schema_b: Second table schema.
        							table_name_b: Second table name.
        							radius: Crossmatch radius.
        							output_table_name: Output table name.</description>
                    </feature>
                    <feature>
                       <form>esdc_current_date() -&gt; TIMESTAMP</form>
                       <description>
        						Returns a DATE value that represents the current date
        						Parameters:</description>
                    </feature>
                    <feature>
                       <form>esdc_epoch_prop(astrometric_parameters DOUBLE[6], ref_epoch DOUBLE, out_epoch DOUBLE) -&gt; DOUBLE[6]</form>
                       <description>
        						Returns all six input parameters (ra,dec,parallax,pm_ra,pm_dec,radial_velocity) propagated at the new arbitrary input epoch. Please note that the input argument radial_velocity denotes radial velocity in km/s while the corresponding output quantity is the radial proper motion in mas/yr computed as radial_velocity * parallax / 4.740,470,464
        						Parameters:
        							astrometric_parameters: Array with the full six input parameters needed (ra[deg],dec[deg],plx[mas],pm_ra[mas/yr],pm_dec[mas/yr],pm_rv[mas/yr])
        							ref_epoch: Reference Julian Epoch
        							out_epoch: Final Julian Epoch</description>
                    </feature>
                    <feature>
                       <form>esdc_epoch_prop(ra DOUBLE, de DOUBLE, parallax DOUBLE, pm_ra DOUBLE, pm_de DOUBLE, radial_velocity DOUBLE, ref_epoch DOUBLE, out_epoch DOUBLE) -&gt; DOUBLE[6]</form>
                       <description>
        						Returns all six input parameters (ra,dec,parallax,pm_ra,pm_dec,radial_velocity) propagated at the new arbitrary input epoch. Please note that the input argument radial_velocity denotes radial velocity in km/s while the corresponding output quantity is the radial proper motion in mas/yr computed as radial_velocity * parallax / 4.740,470,464
        						Parameters:
        							ra: Right Ascension (deg)
        							de: Declination (deg)
        							parallax: Parallax (mas)
        							pm_ra: Proper Motion in Right Ascension (mas/yr)
        							pm_de: Proper Motion in Declination (mas/yr)
        							radial_velocity: Radial Velocity (km/s)
        							ref_epoch: Reference Julian Epoch
        							out_epoch: Final Julian Epoch</description>
                    </feature>
                    <feature>
                       <form>esdc_epoch_prop_covariance(ra DOUBLE, dec DOUBLE, parallax DOUBLE, pm_ra DOUBLE, pm_de DOUBLE, radial_velocity DOUBLE, e_ra_deg DOUBLE, e_de_deg DOUBLE, e_plx DOUBLE, e_pm_ra DOUBLE, e_pm_de DOUBLE, e_rv DOUBLE, de_ra DOUBLE, plx_ra DOUBLE, plx_de DOUBLE, pm_ra_ra DOUBLE, pm_ra_de DOUBLE, pm_ra_plx DOUBLE, pm_de_ra DOUBLE, pm_de_de DOUBLE, pm_de_plx DOUBLE, pm_de_pm_ra DOUBLE, ref_epoch DOUBLE, out_epoch DOUBLE) -&gt; DOUBLE[6][6]</form>
                       <description>
        						Returns the propagated covariance matrix from the epoch_prop function
        						Parameters:
        							ra: Right Ascension (deg)
        							dec: Declination (deg)
        							parallax: Parallax (mas)
        							pm_ra: Proper Motion in Right Ascension (mas/yr)
        							pm_de: Proper Motion in Declination (mas/yr)
        							radial_velocity: Radial Velocity (km/s)
        							e_ra_deg: Standard Error in Right Ascension (mas)
        							e_de_deg: Standard Error in Declination (mas)
        							e_plx: Standard Error in Parallax (mas)
        							e_pm_ra: Standard Error in Proper Motion in RA (mas/yr)
        							e_pm_de: Standard Error in Proper Motion in Dec (mas/yr)
        							e_rv: Standard Error in Radial Velocity (km/s)
        							de_ra: Correlation Coefficient RA/Dec
        							plx_ra: Correlation Coefficient Parallax/RA
        							plx_de: Correlation Coefficient Parallax/Dec
        							pm_ra_ra: Correlation Coefficient Proper Motion in RA/RA
        							pm_ra_de: Correlation Coefficient Proper Motion in RA/Dec
        							pm_ra_plx: Correlation Coefficient Proper Motion in RA/Parallax
        							pm_de_ra: Correlation Coefficient Proper Motion in Dec/RA
        							pm_de_de: Correlation Coefficient, Proper Motion in Dec/Dec
        							pm_de_plx: Correlation Coefficient, Proper Motion in Dec/Parallax
        							pm_de_pm_ra: Correlation Coefficient, Proper Motion in RA/Proper Motion in Dec
        							ref_epoch: Reference Julian Epoch (yr)
        							out_epoch: Final Julian Epoch (yr)</description>
                    </feature>
                    <feature>
                       <form>esdc_epoch_prop_error(ra DOUBLE, de DOUBLE, parallax DOUBLE, pm_ra DOUBLE, pm_de DOUBLE, radial_velocity DOUBLE, e_ra_deg DOUBLE, e_de_deg DOUBLE, e_plx DOUBLE, e_pm_ra DOUBLE, e_pm_de DOUBLE, e_rv DOUBLE, de_ra DOUBLE, plx_ra DOUBLE, pm_ra_ra DOUBLE, pm_de_ra DOUBLE, plx_de DOUBLE, pm_ra_de DOUBLE, pm_de_de DOUBLE, pm_ra_plx DOUBLE, pm_de_plx DOUBLE, pm_de_pm_ra DOUBLE, ref_epoch DOUBLE, out_epoch DOUBLE) -&gt; DOUBLE[21]</form>
                       <description>
        						Returns the error vector with the uncertainties associated to the propagated astrometric parameters plus the set of propagated correlation parameters
        						Parameters:
        							ra: Right Ascension (deg)
        							de: Declination (deg)
        							parallax: Parallax (mas)
        							pm_ra: Proper Motion in Right Ascension (mas/yr)
        							pm_de: Proper Motion in Declination (mas/yr)
        							radial_velocity: Radial Velocity (km/s)
        							e_ra_deg: Standard Error in Right Ascension (mas)
        							e_de_deg: Standard Error in Declination (mas)
        							e_plx: Standard Error in Parallax (mas)
        							e_pm_ra: Standard Error in Proper Motion in RA (mas/yr)
        							e_pm_de: Standard Error in Proper Motion in Dec (mas/yr)
        							e_rv: Standard Error in Radial Velocity (km/s)
        							de_ra: Correlation Coefficient RA/Dec
        							plx_ra: Correlation Coefficient Parallax/RA
        							pm_ra_ra: Correlation Coefficient Proper Motion in RA/RA
        							pm_de_ra: Correlation Coefficient Proper Motion in Dec/RA
        							plx_de: Correlation Coefficient Parallax/Dec
        							pm_ra_de: Correlation Coefficient Proper Motion in RA/Dec
        							pm_de_de: Correlation Coefficient, Proper Motion in Dec/Dec
        							pm_ra_plx: Correlation Coefficient Proper Motion in RA/Parallax
        							pm_de_plx: Correlation Coefficient, Proper Motion in Dec/Parallax
        							pm_de_pm_ra: Correlation Coefficient, Proper Motion in RA/Proper Motion in Dec
        							ref_epoch: Reference Julian Epoch (yr)
        							out_epoch: Final Julian Epoch (yr)</description>
                    </feature>
                    <feature>
                       <form>esdc_epoch_prop_error(astrometric_parameters DOUBLE[6], astrometric_parameter_error DOUBLE[21], ref_epoch DOUBLE, out_epoch DOUBLE) -&gt; DOUBLE[21]</form>
                       <description>
        						Returns the error vector with the uncertainties associated to the propagated astrometric parameters plus the set of propagated correlation parameters
        						Parameters:
        							astrometric_parameters: Array with the full six input parameters needed (ra[deg],dec[deg],plx[mas],pm_ra[mas/yr],pm_dec[mas/yr],pm_rv[mas/yr])
        							astrometric_parameter_error: Array with the 21 covariance matrix elements (output from astrometric_parameter_error ADQL function)
        							ref_epoch: Reference Julian Epoch
        							out_epoch: Final Julian Epoch</description>
                    </feature>
                    <feature>
                       <form>esdc_epoch_prop_pos(ra DOUBLE, de DOUBLE, parallax DOUBLE, pm_ra DOUBLE, pm_de DOUBLE, radial_velocity DOUBLE, ref_epoch DOUBLE, out_epoch DOUBLE) -&gt; VARCHAR</form>
                       <description>
        						Returns the new position (ra,dec) of the source at the new arbitrary input epoch
        						Parameters:
        							ra: Right Ascension (deg)
        							de: Declination (deg)
        							parallax: Parallax (mas)
        							pm_ra: Proper Motion in Right Ascension (mas/yr)
        							pm_de: Proper Motion in Declination (mas/yr)
        							radial_velocity: Radial Velocity (km/s)
        							ref_epoch: Reference Julian Epoch
        							out_epoch: Final Julian Epoch</description>
                    </feature>
                    <feature>
                       <form>esdc_greatest(v1 DOUBLE, v2 DOUBLE) -&gt; DOUBLE</form>
                       <description>
        						Select the largest value among given arguments.
        						Parameters:
        							v1: First argument.
        							v2: Second argument.</description>
                    </feature>
                    <feature>
                       <form>esdc_if_then_else(condition VARCHAR, ouput_value VARCHAR, default_value VARCHAR) -&gt; VARCHAR</form>
                       <description>
        						If input condition is true, return output value. Otherwise return default value.
        						Parameters:
        							condition: Value to compare to true.
        							ouput_value: Value to return if condition is true.
        							default_value: Value to return if condition is false.</description>
                    </feature>
                    <feature>
                       <form>esdc_least(v1 DOUBLE, v2 DOUBLE) -&gt; DOUBLE</form>
                       <description>
        						Select the smallest value among given arguments.
        						Parameters:
        							v1: First argument.
        							v2: Second argument.</description>
                    </feature>
                    <feature>
                       <form>esdc_left(string VARCHAR, n INTEGER) -&gt; VARCHAR</form>
                       <description>
        						The function returns the first n characters in the string.
        						Parameters:
        							string: a string from which a number of the leftmost characters is returned.
        							n: an integer that specifies the number of left-most characters in the string should be returned. If n is negative, the function returns the leftmost characters in the string but last |n| (absolute) characters.</description>
                    </feature>
                    <feature>
                       <form>esdc_length(string VARCHAR) -&gt; INTEGER</form>
                       <description>
        						The function returns the number of characters in the string.
        						Parameters:
        							string: the string that you want to calculate its length.</description>
                    </feature>
                    <feature>
                       <form>esdc_nullif(value1 VARCHAR, value2 VARCHAR) -&gt; VARCHAR</form>
                       <description>
        						Returns a null value if value1 equals value2; otherwise it returns value1.
        						Parameters:
        							value1: Input value 1.
        							value2: Input value 2.</description>
                    </feature>
                    <feature>
                       <form>esdc_position(substring VARCHAR, string VARCHAR) -&gt; INTEGER</form>
                       <description>
        						The function returns the location of a substring in a string.
        						Parameters:
        							substring: the string that you want to locate.
        							string: the string for which the substring is searched.</description>
                    </feature>
                    <feature>
                       <form>esdc_radial_velocity(pm_rv DOUBLE, parallax DOUBLE) -&gt; DOUBLE</form>
                       <description>
        						Returns the radial velocity in units of mas/yr
        						Parameters:
        							pm_rv: Radial proper motion (mas/yr)
        							parallax: Parallax (mas)</description>
                    </feature>
                    <feature>
                       <form>esdc_right(string VARCHAR, n INTEGER) -&gt; VARCHAR</form>
                       <description>
        						The function returns the last n characters in a string.
        						Parameters:
        							string: a string from which a number of the rightmost characters is returned.
        							n: an integer that specifies the number of right-most characters in the string should be returned. If n is negative, the function returns all characters in the string but first |n| (absolute) characters.</description>
                    </feature>
                    <feature>
                       <form>esdc_stddev(n DOUBLE) -&gt; DOUBLE</form>
                       <description>
        						Standard deviation.
        						Parameters:
        							n: Input value.</description>
                    </feature>
                    <feature>
                       <form>esdc_substring(string VARCHAR, start_position INTEGER, length INTEGER) -&gt; VARCHAR</form>
                       <description>
        						The function returns a part of string.
        						Parameters:
        							string: the string that you want to get a part extracted.
        							start_position: an integer that specifies where you want to extract the substring. If start_position equals zero, the substring starts at the first character of the string. The start_position can be only positive
        							length: a positive integer that determines the number of characters that you want to extract from the string beginning at start_position. If the sum of start_position and length is greater than the number of characters in the string, the substring function returns the whole string beginning at start_position. The length parameter is optional. If you omit the length parameter, the substring function returns the whole string started at start_position.</description>
                    </feature>
                    <feature>
                       <form>esdc_to_bigint(n DOUBLE) -&gt; BIGINT</form>
                       <description>
        						Converts input value to BIGINT type.
        						Parameters:
        							n: Input value.</description>
                    </feature>
                    <feature>
                       <form>esdc_to_boolean(n INTEGER) -&gt; BOOLEAN</form>
                       <description>
        						Converts input value to BOOLEAN type.
        						Parameters:
        							n: Input value.</description>
                    </feature>
                    <feature>
                       <form>esdc_to_char(n DOUBLE) -&gt; VARCHAR</form>
                       <description>
        						Converts input value to VARCHAR type.
        						Parameters:
        							n: Input value.</description>
                    </feature>
                    <feature>
                       <form>esdc_to_double(n DOUBLE) -&gt; DOUBLE</form>
                       <description>
        						Converts input value to DOUBLE type.
        						Parameters:
        							n: Input value.</description>
                    </feature>
                    <feature>
                       <form>esdc_to_integer(n DOUBLE) -&gt; INTEGER</form>
                       <description>
        						Converts input value to INTEGER type.
        						Parameters:
        							n: Input value.</description>
                    </feature>
                    <feature>
                       <form>esdc_to_real(n DOUBLE) -&gt; REAL</form>
                       <description>
        						Converts input value to REAL type.
        						Parameters:
        							n: Input value.</description>
                    </feature>
                    <feature>
                       <form>esdc_to_smallint(n DOUBLE) -&gt; SMALLINT</form>
                       <description>
        						Converts input value to SMALLINT type.
        						Parameters:
        							n: Input value.</description>
                    </feature>
                    <feature>
                       <form>esdc_translate(string VARCHAR, from VARCHAR, to VARCHAR) -&gt; VARCHAR</form>
                       <description>
        						The function performs several single-character, one-to-one translation in one operation.
        						Parameters:
        							string: the string subjected to translation.
        							from: a set of characters in the first argument (_string_) that should be replaced.
        							to: a set of characters that replaces the _from_ in the _string_.</description>
                    </feature>
                    <feature>
                       <form>esdc_trim(characters VARCHAR, string VARCHAR) -&gt; VARCHAR</form>
                       <description>
        						removes the longest string that contains a specific character from a string. By default, the function removes spaces if you don’t specify explicitly which character you want to remove.
        						Parameters:
        							characters: optional parameter that defines a literal specifying explicitly which characters you want to remove in the string. Accepted literals are: LEADING, TRAILING and BOTH. Example of use: TRIM(BOTH, string)
        							string: the string for which the removal is requested. Mandatory parameter: example of use: TRIM(string)</description>
                    </feature>
                    <feature>
                       <form>gavo_ipix(long REAL, lat REAL) -&gt; BIGINT</form>
                       <description>
        						Returns the q3c ipix (Koposov and Bartunov, 2006) for a long/lat pair (it simply wraps the q3c_angpix function).
        						Parameters:
        							long: The longitude to compute the ipix for.
        							lat: The latitude to compute the ipix for.</description>
                    </feature>
                    <feature>
                       <form>ivo_epoch_prop_pos(ra DOUBLE, de DOUBLE, parallax DOUBLE, pm_ra DOUBLE, pm_de DOUBLE, radial_velocity DOUBLE, ref_epoch DOUBLE, out_epoch DOUBLE) -&gt; POINT</form>
                       <description>
        						Returns the new position (ra,dec) of the source at the new arbitrary input epoch
        						Parameters:
        							ra: Right Ascension (deg)
        							de: Declination (deg)
        							parallax: Parallax (mas)
        							pm_ra: Proper Motion in Right Ascension (mas/yr)
        							pm_de: Proper Motion in Declination (mas/yr)
        							radial_velocity: Radial Velocity (km/s)
        							ref_epoch: Reference Julian Epoch
        							out_epoch: Final Julian Epoch</description>
                    </feature>
                    <feature>
                       <form>ivo_geom_transform(from_sys VARCHAR, to_sys VARCHAR, geo VARCHAR) -&gt; VARCHAR</form>
                       <description>
        						The function transforms ADQL geometries between various reference systems.
        						Parameters:
        							from_sys: name of the source reference system.
        							to_sys: name of the target reference system.
        							geo: an ADQL geometry (POINT, CIRCLE, POLYGON).</description>
                    </feature>
                    <feature>
                       <form>ivo_hashlist_has(hashlist VARCHAR, item VARCHAR) -&gt; INTEGER</form>
                       <description>
        						The function returns 1 if, compared case-insensitively, the second argument is in the list of words encoded in the first argument, 0 otherwise.
        						Parameters:
        							hashlist: A string containing hash-separated terms.
        							item: A string containing a single term not containing a hash.</description>
                    </feature>
                    <feature>
                       <form>ivo_hasword(needle VARCHAR, haystack VARCHAR) -&gt; INTEGER</form>
                       <description>
        						Returns 1 if all tokens from the string needle are contained (in some sense) in the string haystack, 0 otherwise.
        						Parameters:
        							needle: A string to locate in haystack.
        							haystack: A text to match needle in.</description>
                    </feature>
                    <feature>
                       <form>ivo_histogram(val REAL, lower REAL, upper REAL, nbins INTEGER) -&gt; INTEGER[*]</form>
                       <description>
        						This aggregate function returns a histogram of val with nbins+2 elements. Assuming 0-based arrays, results[0] contains the number of underflows (i.e., val &lt; lower), result[nbins+1] the number of overflows. Elements 1…nbins are the counts in nbins bins of width (upper−lower)/nbins. Clients will have to convert back to physical units using some external communication, as there currently is no (meta-) data as lower and upper in the TAP response.
        						Parameters:
        							val: the value to bin.
        							lower: the lower limit of the histogram
        							upper: the upper limit of the histogram
        							nbins: the number of "natural" bins in the histogram.</description>
                    </feature>
                    <feature>
                       <form>ivo_interval_overlaps(a1 DOUBLE, b1 DOUBLE, a2 DOUBLE, b2 DOUBLE) -&gt; INTEGER</form>
                       <description>
        						Function returns 1 if the interval [a1…b1] overlaps with the interval [a2…b2].
        						Parameters:
        							a1: The lower bound of the first interval.
        							b1: The upper bound of the first interval.
        							a2: The lower bound of the second interval.
        							b2: The upper bound of the second interval.</description>
                    </feature>
                    <feature>
                       <form>ivo_nocasematch(value VARCHAR, pattern VARCHAR) -&gt; INTEGER</form>
                       <description>
        						Evaluates value ILIKE pattern, i.e., pattern is defined as for the SQL LIKE operator, but the match is performed case-insensitively.
        						Parameters:
        							value: A string-valued SQL expression.
        							pattern: A SQL pattern for LIKE evaluation.</description>
                    </feature>
                    <feature>
                       <form>ivo_normal_random(mu REAL, sigma REAL) -&gt; REAL</form>
                       <description>
        						Returns a random number drawn from a normal distribution.
        						Parameters:
        							mu: The mean of the normal distribution.
        							sigma: The width of the normal distribution..</description>
                    </feature>
                    <feature>
                       <form>ivo_simbadpoint(identifier VARCHAR) -&gt; POINT</form>
                       <description>
        						Queries Simbad for an identifier and returns the corresponding point.
        						Parameters:
        							identifier: A string containing an identifier Simbad can resolve.</description>
                    </feature>
                    <feature>
                       <form>ivo_string_agg(expression VARCHAR, delimiter VARCHAR) -&gt; VARCHAR</form>
                       <description>
        						An aggregate function returning all values of expression concatenated with delimiter.
        						Parameters:
        							expression: A SQL expression giving the strings to concatenate.
        							delimiter: A string used to concatenate the values of expression in each group.</description>
                    </feature>
                    <feature>
                       <form>ivo_to_jd(d TIMESTAMP) -&gt; REAL</form>
                       <description>
        						Converts a timestamp to a Julian date.
        						Parameters:
        							d: The SQL timestamp to convert.</description>
                    </feature>
                    <feature>
                       <form>ivo_to_mjd(d TIMESTAMP) -&gt; REAL</form>
                       <description>
        						Converts a timestamp to modified Julian date.
        						Parameters:
        							d: The SQL timestamp to convert.</description>
                    </feature>
                 </languageFeatures>
                 <languageFeatures type="ivo://ivoa.net/std/tapregext#features-adqlgeo">
                    <feature>
                       <form>AREA</form>
                    </feature>
                    <feature>
                       <form>BOX</form>
                    </feature>
                    <feature>
                       <form>CENTROID</form>
                    </feature>
                    <feature>
                       <form>CIRCLE</form>
                    </feature>
                    <feature>
                       <form>CONTAINS</form>
                    </feature>
                    <feature>
                       <form>COORD1</form>
                    </feature>
                    <feature>
                       <form>COORD2</form>
                    </feature>
                    <feature>
                       <form>COORDSYS</form>
                    </feature>
                    <feature>
                       <form>DISTANCE</form>
                    </feature>
                    <feature>
                       <form>INTERSECTS</form>
                    </feature>
                    <feature>
                       <form>POINT</form>
                    </feature>
                    <feature>
                       <form>POLYGON</form>
                    </feature>
                    <feature>
                       <form>REGION</form>
                    </feature>
                 </languageFeatures>
                 <languageFeatures type="ivo://ivoa.net/std/tapregext#features-adql-common-table">
                    <feature>
                       <form>WITH</form>
                    </feature>
                 </languageFeatures>
                 <languageFeatures type="ivo://ivoa.net/std/tapregext#features-adql-string">
                    <feature>
                       <form>LOWER</form>
                    </feature>
                    <feature>
                       <form>UPPER</form>
                    </feature>
                    <feature>
                       <form>ILIKE</form>
                    </feature>
                 </languageFeatures>
                 <languageFeatures type="ivo://ivoa.net/std/tapregext#features-adql-sets">
                    <feature>
                       <form>UNION</form>
                    </feature>
                    <feature>
                       <form>EXCEPT</form>
                    </feature>
                    <feature>
                       <form>INTERSECT</form>
                    </feature>
                 </languageFeatures>
                 <languageFeatures type="ivo://ivoa.net/std/tapregext#features-adql-offset">
                    <feature>
                       <form>OFFSET</form>
                    </feature>
                 </languageFeatures>
                 <languageFeatures type="ivo://ivoa.net/std/tapregext#features-adql-type">
                    <feature>
                       <form>CAST</form>
                    </feature>
                 </languageFeatures>
              </language>
              <outputFormat>
                 <mime>application/x-votable+xml</mime>
                 <alias>votable_gzip</alias>
              </outputFormat>
              <outputFormat>
                 <mime>application/x-votable+xml</mime>
                 <alias>votable</alias>
              </outputFormat>
              <outputFormat>
                 <mime>application/x-votable+xml</mime>
                 <alias>votable_plain</alias>
              </outputFormat>
              <outputFormat>
                 <mime>text/csv</mime>
                 <alias>csv</alias>
              </outputFormat>
              <outputFormat>
                 <mime>text/ecsv</mime>
                 <alias>ecsv</alias>
              </outputFormat>
              <outputFormat>
                 <mime>text/tab-separated-values</mime>
                 <alias>tsv</alias>
              </outputFormat>
              <outputFormat>
                 <mime>application/json</mime>
                 <alias>json</alias>
              </outputFormat>
              <outputFormat>
                 <mime>application/fits</mime>
                 <alias>fits</alias>
              </outputFormat>
              <outputFormat>
                 <mime>text/xml</mime>
                 <alias>votable_plain_conesearch</alias>
              </outputFormat>
              <uploadMethod ivo-id="ivo://ivoa.net/std/TAPRegExt#upload-inline"/>
              <uploadMethod ivo-id="ivo://ivoa.net/std/TAPRegExt#upload-http"/>
              <uploadMethod ivo-id="ivo://ivoa.net/std/TAPRegExt#upload-ftp"/>
              <retentionPeriod>
                 <default>604800</default>
                 <hard>604800</hard>
              </retentionPeriod>
              <executionDuration>
                 <default>3600</default>
                 <hard>3600</hard>
              </executionDuration>
              <outputLimit>
                 <default unit="row">3000000</default>
                 <hard unit="row">3000000</hard>
              </outputLimit>
              <uploadLimit>
                 <default unit="byte">100000000</default>
                 <hard unit="byte">100000000</hard>
              </uploadLimit>
           </capability>
           <capability standardID="ivo://ivoa.net/std/VOSI#availability">
              <interface role="std" version="1.0" xsi:type="vs:ParamHTTP">
                 <accessURL use="full"> https://jwst.esac.esa.int/server/tap/availability </accessURL>
              </interface>
           </capability>
           <capability standardID="ivo://ivoa.net/std/VOSI#tables-1.1">
              <interface role="std" version="1.1" xsi:type="vs:ParamHTTP">
                 <accessURL use="full">https://jwst.esac.esa.int/server/tap/tables</accessURL>
              </interface>
           </capability>
           <capability standardID="ivo://ivoa.net/std/DALI#examples">
              <interface xsi:type="vr:WebBrowser">
                 <accessURL use="full">https://jwst.esac.esa.int/server/tap/examples/</accessURL>
              </interface>
           </capability>
           <capability standardID="ivo://ivoa.net/std/VOSI#capabilities">
              <interface role="std" version="1.0" xsi:type="vs:ParamHTTP">
                 <accessURL use="full"> https://jwst.esac.esa.int/server/tap/capabilities </accessURL>
              </interface>
           </capability>
           <tableset xsi:schemaLocation="http://www.ivoa.net/xml/VODataService/v1.1 http://www.ivoa.net/xml/VODataService/v1.1 http://esa.int/xml/EsaTapPlus http://jwst.esac.esa.int/server/xml/esaTapPlusAttributes.xsd" xsi:type="vs:TableSet">
              <schema esatapplus:public="true">
                 <name>ivoa</name>
                 <table esatapplus:flags="0" esatapplus:size="597892" esatapplus:size_bytes="0" type="base_table">
                    <name>ivoa.ObsCore</name>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>access_estsize</name>
                       <description>Estimated size of dataset in kilo bytes</description>
                       <unit>kbyte</unit>
                       <ucd>phys.size;meta.file</ucd>
                       <utype>obscore:Access.size</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>access_format</name>
                       <description>File content format</description>
                       <ucd>meta.code.mime</ucd>
                       <utype>obscore:Access.format</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>access_url</name>
                       <description>URL used to access (download) dataset</description>
                       <ucd>meta.ref.url</ucd>
                       <utype>obscore:Access.reference</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>calib_level</name>
                       <description>Calibration level {0, 1, 2, 3, 4}</description>
                       <ucd>meta.code;obs.calib</ucd>
                       <utype>obscore:ObsDataset.calibLevel</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>core_id</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>dataproduct_type</name>
                       <description>Data product type</description>
                       <ucd>meta.code.class</ucd>
                       <utype>obscore:ObsDataset.dataProductType</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>datarelease</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>em_max</name>
                       <description>Stop in spectral coordinates</description>
                       <unit>m</unit>
                       <ucd>em.wl;stat.max</ucd>
                       <utype>obscore:Char.SpectralAxis.Coverage.Bounds.Limits.HiLimit</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>em_min</name>
                       <description>Start in spectral coordinates</description>
                       <unit>m</unit>
                       <ucd>em.wl;stat.min</ucd>
                       <utype>obscore:Char.SpectralAxis.Coverage.Bounds.Limits.LoLimit</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>em_res_power</name>
                       <description>Spectral resolving power</description>
                       <ucd>spect.resolution</ucd>
                       <utype>obscore:Char.SpectralAxis.Resolution.ResolPower.refVal</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>em_ucd</name>
                       <description>Nature of the spectral axis</description>
                       <ucd>meta.ucd</ucd>
                       <utype>obscore:Char.SpectralAxis.ucd</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>em_xel</name>
                       <description>Number of elements along the spectral axis</description>
                       <ucd>meta.number</ucd>
                       <utype>obscore:Char.SpectralAxis.numBins</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>facility_name</name>
                       <description>Name of the facility used for this observation</description>
                       <ucd>meta.id;instr.tel</ucd>
                       <utype>obscore:Provenance.ObsConfig.Facility.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>hipsname</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>instrument_name</name>
                       <description>Name of the instrument used for this observation</description>
                       <ucd>meta.id;instr</ucd>
                       <utype>obscore:Provenance.ObsConfig.Instrument.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>lastmodified</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metarelease</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>o_ucd</name>
                       <description>unitless String UCD of observable</description>
                       <ucd>meta.ucd</ucd>
                       <utype>obscore:Char.ObservableAxis.ucd</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>obs_collection</name>
                       <description>Name of the data collection</description>
                       <ucd>meta.id</ucd>
                       <utype>obscore:DataID.collection</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>obs_id</name>
                       <description>Observation ID</description>
                       <ucd>meta.id</ucd>
                       <utype>obscore:DataID.observationID</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>obs_publisher_did</name>
                       <description>Dataset identifier given by the publisher</description>
                       <ucd>meta.ref.ivoid</ucd>
                       <utype>obscore:Curation.publisherDID</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>obs_release_date</name>
                       <description>Observation release date (ISO 8601)</description>
                       <ucd>time.release</ucd>
                       <utype>obscore:Curation.releaseDate</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observing_mode</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>planeid</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>pol_states</name>
                       <description>List of polarization states or NULL if not applicable</description>
                       <ucd>meta.code;phys.polarization</ucd>
                       <utype>obscore:Char.PolarizationAxis.stateList</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>pol_xel</name>
                       <description>Number of polarization samples</description>
                       <ucd>meta.number</ucd>
                       <utype>obscore:Char.PolarizationAxis.numBins</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_area</name>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_center</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_spoly</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>s_dec</name>
                       <description>Central declination, ICRS</description>
                       <unit>deg</unit>
                       <ucd>pos.eq.dec</ucd>
                       <utype>obscore:Char.SpatialAxis.Coverage.Location.Coord.Position2D.Value2.C2</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>s_fov</name>
                       <description>Diameter (bounds) of the covered region</description>
                       <unit>deg</unit>
                       <ucd>phys.angSize;instr.fov</ucd>
                       <utype>obscore:Char.SpatialAxis.Coverage.Bounds.Extent.diameter</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>s_ra</name>
                       <description>Central right ascension, ICRS</description>
                       <unit>deg</unit>
                       <ucd>pos.eq.ra</ucd>
                       <utype>obscore:Char.SpatialAxis.Coverage.Location.Coord.Position2D.Value2.C1</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>s_region</name>
                       <description>Sky region covered by the data product(expressed in ICRS frame)</description>
                       <ucd>pos.outline;obs.field</ucd>
                       <utype>obscore:Char.SpatialAxis.Coverage.Support.Area</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>s_resolution</name>
                       <description>Spatial resolution of data as FWHM</description>
                       <unit>arcsec</unit>
                       <ucd>pos.angResolution</ucd>
                       <utype>obscore:Char.SpatialAxis.Resolution.Refval.value</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>s_xel1</name>
                       <description>Number of elements along the first spatial axis</description>
                       <ucd>meta.number</ucd>
                       <utype>obscore:Char.SpatialAxis.numBins1</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>s_xel2</name>
                       <description>Number of elements along the second spatial axis</description>
                       <ucd>meta.number</ucd>
                       <utype>obscore:Char.SpatialAxis.numBins2</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>t_exptime</name>
                       <description>Total exposure time</description>
                       <unit>s</unit>
                       <ucd>time.duration;obs.exposure</ucd>
                       <utype>obscore:Char.TimeAxis.Coverage.Support.Extent</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>t_max</name>
                       <description>Stop time in MJD</description>
                       <unit>d</unit>
                       <ucd>time.end;obs.exposure</ucd>
                       <utype>obscore:Char.TimeAxis.Coverage.Bounds.Limits.StopTime</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>t_min</name>
                       <description>Start time in MJD</description>
                       <unit>d</unit>
                       <ucd>time.start;obs.exposure</ucd>
                       <utype>obscore:Char.TimeAxis.Coverage.Bounds.Limits.StartTime</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>t_resolution</name>
                       <description>Temporal resolution FWHM</description>
                       <unit>s</unit>
                       <ucd>time.resolution</ucd>
                       <utype>obscore:Char.TimeAxis.Resolution.Refval.value</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>t_xel</name>
                       <description>Number of elements along the time axis</description>
                       <ucd>meta.number</ucd>
                       <utype>obscore:Char.TimeAxis.numBins</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>target_name</name>
                       <description>Astronomical object observed, if any</description>
                       <ucd>meta.id;src</ucd>
                       <utype>obscore:Target.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                       <flag>primary</flag>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>template</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                 </table>
              </schema>
              <schema esatapplus:public="true">
                 <name>job_upload</name>
              </schema>
              <schema esatapplus:public="true">
                 <name>jwst</name>
                 <description>JWST CAOM-based schema</description>
                 <utype>jwst</utype>
                 <table esatapplus:flags="0" esatapplus:size="1427397" esatapplus:size_bytes="0" type="base_table">
                    <name>jwst.archive</name>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>calibrationlevel</name>
                       <description>Calibration level {0, 1, 2, 3, 4}</description>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>collection</name>
                       <description>Name of the data collection</description>
                       <ucd>meta.id</ucd>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>dataproducttype</name>
                       <description>Data product type</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>detector</name>
                       <description>Name of the detector defined in instrument_keywords</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bandpassname</name>
                       <description>Collection-specific name for energy band (e.g. filter name)</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bounds_lower</name>
                       <description>Start in spectral coordinates</description>
                       <unit>m</unit>
                       <ucd>em.wl;stat.min</ucd>
                       <utype>Char.SpectralAxis.Coverage.Bounds.Limits.LoLimit</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bounds_upper</name>
                       <description>Stop in spectral coordinates</description>
                       <unit>m</unit>
                       <ucd>em.wl;stat.max</ucd>
                       <utype>Char.SpectralAxis.Coverage.Bounds.Limits.HiLimit</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bounds_width</name>
                       <description>Width of the energy bounds</description>
                       <unit>m</unit>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>instrument_name</name>
                       <description>Name of the instrument used for this observation</description>
                       <ucd>meta.id;instr</ucd>
                       <utype>Provenance.ObsConfig.Instrument.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>intent</name>
                       <description>Intended purpose of data (one of: science, calibration)</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>members</name>
                       <description>Members of a composite observation (space-separated list of Observation URIs)</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>members_number</name>
                       <description>Number of observations used to generate this on</description>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observationid</name>
                       <description>Observation ID</description>
                       <ucd>meta.id</ucd>
                       <utype>DataID.observationID</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observing_mode</name>
                       <description>Observing Mode extracted from EXP_KEY keyword</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>obsid</name>
                       <description>Foreign key</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>plane_datarelease</name>
                       <description>Date the data for a plane is public (UTC)</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>planeid</name>
                       <description>Foreign key</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_size</name>
                       <description>Diameter (bounds) of the covered region</description>
                       <unit>deg</unit>
                       <ucd>phys.angSize;instr.fov</ucd>
                       <utype>Char.SpatialAxis.Coverage.Bounds.Extent.diameter</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_spoly</name>
                       <description>Sky region covered by the data product(expressed in ICRS frame)</description>
                       <ucd>pos.outline;obs.field</ucd>
                       <utype>Char.SpatialAxis.Coverage.Support.Area</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>product_url</name>
                       <description>URL used to access (download) dataset</description>
                       <ucd>meta.ref.url</ucd>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_id</name>
                       <description>Collection-specific unique proposal identifier</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_keywords</name>
                       <description>Proposal keywords (separated by |)</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_pi</name>
                       <description>Proposal Principal Investigator</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_reference</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>"public"</name>
                       <description>Checks if observation is public or not</description>
                       <dataType xsi:type="vs:VOTableType">boolean</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>subarray</name>
                       <description>SUBARRAY field extracted from instrument_keywords</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_category</name>
                       <description>TARGETCATEGORY parameter extracted from target_keywords</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_keywords</name>
                       <description>Target keywords (separated by |)</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_moving</name>
                       <description>Flag for moving target</description>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_name</name>
                       <description>Astronomical object observed, if any</description>
                       <ucd>meta.id;src</ucd>
                       <utype>Target.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>targetposition_coordinates_cval1</name>
                       <description>Central right ascension, ICRS</description>
                       <unit>deg</unit>
                       <ucd>pos.eq.ra;meta.main</ucd>
                       <utype>Char.SpatialAxis.Coverage.Location.Coord.Position2D.Value2.C1</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>targetposition_coordinates_cval2</name>
                       <description>Central declination, ICRS</description>
                       <unit>deg</unit>
                       <ucd>pos.eq.dec;meta.main</ucd>
                       <utype>Char.SpatialAxis.Coverage.Location.Coord.Position2D.Value2.C2</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>template</name>
                       <description>TEMPLATE parameter extracted from instrument_keywords</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_bounds_lower</name>
                       <description>Start time in MJD</description>
                       <unit>d</unit>
                       <ucd>time.start;obs.exposure</ucd>
                       <utype>Char.TimeAxis.Coverage.Bounds.Limits.StartTime</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_bounds_upper</name>
                       <description>Stop time in MJD</description>
                       <unit>d</unit>
                       <ucd>time.end;obs.exposure</ucd>
                       <utype>Char.TimeAxis.Coverage.Bounds.Limits.StopTime</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_exposure</name>
                       <description>Total exposure time</description>
                       <unit>s</unit>
                       <ucd>time.duration;obs.exposure</ucd>
                       <utype>Char.TimeAxis.Coverage.Support.Extent</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>vis_cube</name>
                       <description>Flag to determine if cubes are available for this observation</description>
                       <dataType xsi:type="vs:VOTableType">boolean</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>vis_image</name>
                       <description>Central wavelength in spectral coordinates</description>
                       <dataType xsi:type="vs:VOTableType">boolean</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>wave_central</name>
                       <description>Central wavelength in spectral coordinates</description>
                       <unit>µm</unit>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                 </table>
                 <table esatapplus:flags="0" esatapplus:size="39747315" esatapplus:size_bytes="0" type="base_table">
                    <name>jwst.artifact</name>
                    <description>Physical data artifacts (e.g. files)</description>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>accmetachecksum</name>
                       <description>Checksum of the metadata in this entity+children (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Artifact.accMetaChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>artifactid</name>
                       <description>Unique artifact identifier</description>
                       <utype>caom2:Artifact.id</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>contentchecksum</name>
                       <description>Checksum of the content (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Artifact.contentChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>contentlength</name>
                       <description>Size of the representation at uri</description>
                       <unit>byte</unit>
                       <utype>caom2:Artifact.contentLength</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>contenttype</name>
                       <description>Content-type of the representation at uri</description>
                       <utype>caom2:Artifact.contentType</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>filename</name>
                       <description>File Name of the product</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>lastmodified</name>
                       <description>Timestamp of last modification of this row</description>
                       <utype>caom2:Artifact.lastModified</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>maxlastmodified</name>
                       <description>Timestamp of last modification of this entity+children</description>
                       <utype>caom2:Artifact.maxLastModified</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metachecksum</name>
                       <description>Checksum of the metadata in this entity (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Artifact.metaChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metarelease</name>
                       <description>Date the metadata for an observation is public (UTC)</description>
                       <utype>caom2:Observation.metaRelease</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>obsid</name>
                       <description>Foreign key</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>planeid</name>
                       <description>Foreign key</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>producttype</name>
                       <description>Product type (science, calibration, auxiliary, preview)</description>
                       <utype>caom2:Artifact.productType</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>releasetype</name>
                       <description>Release type (data, meta)</description>
                       <utype>caom2:Artifact.releaseType</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>uri</name>
                       <description>External URI for the physical artifact</description>
                       <utype>caom2:Artifact.uri</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>vis_cube</name>
                       <description>Flag SET to true if it is a cube</description>
                       <dataType xsi:type="vs:VOTableType">boolean</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>vis_image</name>
                       <description>Flag SET to true if it contains a 2D image</description>
                       <dataType xsi:type="vs:VOTableType">boolean</dataType>
                    </column>
                 </table>
                 <table esatapplus:flags="0" esatapplus:size="1883844" esatapplus:size_bytes="0" type="base_table">
                    <name>jwst.chunk</name>
                    <description>Description of the data array in a part</description>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>accmetachecksum</name>
                       <description>Checksum of the metadata in this entity+children (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Chunk.accMetaChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>artifactid</name>
                       <description>Foreign key</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>chunkid</name>
                       <description>Unique chunk identifier</description>
                       <utype>caom2:Chunk.id</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_axis_axis_ctype</name>
                       <description>Coordinate type for energy axis</description>
                       <utype>caom2:Chunk.energy.axis.axis.ctype</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_axis_axis_cunit</name>
                       <description>Coordinate unit for energy axis</description>
                       <utype>caom2:Chunk.energy.axis.axis.cunit</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_axis_bounds</name>
                       <description>Coordinate bounds for energy axis (string-encoded)</description>
                       <utype>caom2:Chunk.energy.axis.bounds</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_axis_error_rnder</name>
                       <description>Random coordinate error for energy axis</description>
                       <utype>caom2:Chunk.energy.axis.error.rnder</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_axis_error_syser</name>
                       <description>Systematic coordinate error for energy axis</description>
                       <utype>caom2:Chunk.energy.axis.error.syser</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_axis_function_delta</name>
                       <description>Coordinate function for energy axis</description>
                       <utype>caom2:Chunk.energy.axis.function.delta</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_axis_function_naxis</name>
                       <description>Coordinate function for energy axis</description>
                       <utype>caom2:Chunk.energy.axis.function.naxis</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_axis_function_refcoord_pix</name>
                       <description>Coordinate function for energy axis</description>
                       <utype>caom2:Chunk.energy.axis.function.refCoord.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_axis_function_refcoord_val</name>
                       <description>Coordinate function for energy axis</description>
                       <utype>caom2:Chunk.energy.axis.function.refCoord.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_axis_range_end_pix</name>
                       <description>Coordinate range for energy axis</description>
                       <utype>caom2:Chunk.energy.axis.range.end.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_axis_range_end_val</name>
                       <description>Coordinate range for energy axis</description>
                       <utype>caom2:Chunk.energy.axis.range.end.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_axis_range_start_pix</name>
                       <description>Coordinate range for energy axis</description>
                       <utype>caom2:Chunk.energy.axis.range.start.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_axis_range_start_val</name>
                       <description>Coordinate range for energy axis</description>
                       <utype>caom2:Chunk.energy.axis.range.start.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bandpassname</name>
                       <description>Observatory name for the band (e.g. filter name)</description>
                       <utype>caom2:Chunk.energy.bandpassName</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_resolvingpower</name>
                       <description>Resolving power R</description>
                       <utype>caom2:Chunk.energy.resolvingPower</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_restfrq</name>
                       <description>RESTFRQ</description>
                       <utype>caom2:Chunk.energy.restfrq</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_restwav</name>
                       <description>RESTWAV</description>
                       <utype>caom2:Chunk.energy.restwav</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_specsys</name>
                       <description>SPECSYS</description>
                       <utype>caom2:Chunk.energy.specsys</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_ssysobs</name>
                       <description>SSYSOBS</description>
                       <utype>caom2:Chunk.energy.ssysobs</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_ssyssrc</name>
                       <description>SSYSSRC</description>
                       <utype>caom2:Chunk.energy.ssyssrc</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_transition_species</name>
                       <description>Target element/molecule species</description>
                       <utype>caom2:Chunk.energy.transition.species</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_transition_transition</name>
                       <description>Target energy transition</description>
                       <utype>caom2:Chunk.energy.transition.transition</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_velang</name>
                       <description>VELANG</description>
                       <utype>caom2:Chunk.energy.velang</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_velosys</name>
                       <description>VELOSYS</description>
                       <utype>caom2:Chunk.energy.velosys</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_zsource</name>
                       <description>ZSOURCE</description>
                       <utype>caom2:Chunk.energy.zsource</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energyaxis</name>
                       <description>Axis for the energy coordinate</description>
                       <utype>caom2:Chunk.energyAxis</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>lastmodified</name>
                       <description>Timestamp of last modification of this row</description>
                       <utype>caom2:Chunk.lastModified</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>maxlastmodified</name>
                       <description>Timestamp of last modification of this entity+children</description>
                       <utype>caom2:Chunk.maxLastModified</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metachecksum</name>
                       <description>Checksum of the metadata in this entity (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Chunk.metaChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metarelease</name>
                       <description>Date the metadata for a plane is public (UTC)</description>
                       <utype>caom2:Chunk.metaRelease</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>naxis</name>
                       <description>Number of data axes</description>
                       <utype>caom2:Chunk.naxis</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observable_dependent_axis_ctype</name>
                       <description>Dependent observable axis coordinate type</description>
                       <utype>caom2:Chunk.observable.dependent.axis.ctype</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observable_dependent_axis_cunit</name>
                       <description>Dependent observable axis coordinate unit</description>
                       <utype>caom2:Chunk.observable.dependent.axis.cunit</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observable_dependent_bin</name>
                       <description>Dependent observable pixel value</description>
                       <utype>caom2:Chunk.observable.dependent.bin</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observable_independent_axis_ctype</name>
                       <description>Independent observable axis coordinate type</description>
                       <utype>caom2:Chunk.observable.independent.axis.ctype</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observable_independent_axis_cunit</name>
                       <description>Independent observable axis coordinate unit</description>
                       <utype>caom2:Chunk.observable.independent.axis.cunit</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observable_independent_bin</name>
                       <description>Independent observable pixel value</description>
                       <utype>caom2:Chunk.observable.independent.bin</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observableaxis</name>
                       <description>Axis for the observable quantity</description>
                       <utype>caom2:Chunk.observableAxis</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>obsid</name>
                       <description>Foreign key</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>partid</name>
                       <description>Parent identifier</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>planeid</name>
                       <description>Foreign key</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_axis_axis_ctype</name>
                       <description>Coordinate type for polarization axis</description>
                       <utype>caom2:Chunk.polarization.axis.axis.ctype</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_axis_axis_cunit</name>
                       <description>Coordinate unit for polarization axis</description>
                       <utype>caom2:Chunk.polarization.axis.axis.cunit</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_axis_bounds</name>
                       <description>Coordinate bounds for polarization axis (string-encoded)</description>
                       <utype>caom2:Chunk.polarization.axis.bounds</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_axis_error_rnder</name>
                       <description>Random coordinate error for polarization axis</description>
                       <utype>caom2:Chunk.polarization.axis.error.rnder</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_axis_error_syser</name>
                       <description>Systematic coordinate error for polarization axis</description>
                       <utype>caom2:Chunk.polarization.axis.error.syser</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_axis_function_delta</name>
                       <description>Coordinate function for polarization axis</description>
                       <utype>caom2:Chunk.polarization.axis.function.delta</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_axis_function_naxis</name>
                       <description>Coordinate function for polarization axis</description>
                       <utype>caom2:Chunk.polarization.axis.function.naxis</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_axis_function_refcoord_pix</name>
                       <description>Coordinate function for polarization axis</description>
                       <utype>caom2:Chunk.polarization.axis.function.refCoord.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_axis_function_refcoord_val</name>
                       <description>Coordinate function for polarization axis</description>
                       <utype>caom2:Chunk.polarization.axis.function.refCoord.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_axis_range_end_pix</name>
                       <description>Coordinate range for time axis</description>
                       <utype>caom2:Chunk.polarization.axis.range.end.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_axis_range_end_val</name>
                       <description>Coordinate range for time axis</description>
                       <utype>caom2:Chunk.polarization.axis.range.end.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_axis_range_start_pix</name>
                       <description>Coordinate range for time axis</description>
                       <utype>caom2:Chunk.polarization.axis.range.start.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_axis_range_start_val</name>
                       <description>Coordinate range for time axis</description>
                       <utype>caom2:Chunk.polarization.axis.range.start.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarizationaxis</name>
                       <description>Axis for the polarization coordinate</description>
                       <utype>caom2:Chunk.polarizationAxis</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_axis1_ctype</name>
                       <description>Coordinate type for first position axis</description>
                       <utype>caom2:Chunk.position.axis.axis1.ctype</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_axis1_cunit</name>
                       <description>Coordinate unit for first position axis</description>
                       <utype>caom2:Chunk.position.axis.axis1.cunit</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_axis2_ctype</name>
                       <description>Coordinate type for second position axis</description>
                       <utype>caom2:Chunk.position.axis.axis2.ctype</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_axis2_cunit</name>
                       <description>Coordinate unit for second position axis</description>
                       <utype>caom2:Chunk.position.axis.axis2.cunit</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_bounds</name>
                       <description>Coordinate bounds for position axis (string-encoded)</description>
                       <utype>caom2:Chunk.position.axis.bounds</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_error1_rnder</name>
                       <description>Random coordinate error for first position axis</description>
                       <utype>caom2:Chunk.position.axis.error1.rnder</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_error1_syser</name>
                       <description>Systematic coordinate error for first position axis</description>
                       <utype>caom2:Chunk.position.axis.error1.syser</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_error2_rnder</name>
                       <description>Random coordinate error for second position axis</description>
                       <utype>caom2:Chunk.position.axis.error2.rnder</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_error2_syser</name>
                       <description>Systematic coordinate error for second position axis</description>
                       <utype>caom2:Chunk.position.axis.error2.syser</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_function_cd11</name>
                       <description>Coordinate function for position axis</description>
                       <utype>caom2:Chunk.position.axis.function.cd11</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_function_cd12</name>
                       <description>Coordinate function for position axis</description>
                       <utype>caom2:Chunk.position.axis.function.cd12</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_function_cd21</name>
                       <description>Coordinate function for position axis</description>
                       <utype>caom2:Chunk.position.axis.function.cd21</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_function_cd22</name>
                       <description>Coordinate function for position axis</description>
                       <utype>caom2:Chunk.position.axis.function.cd22</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_function_dimension_naxis1</name>
                       <description>Coordinate function for position axis</description>
                       <utype>caom2:Chunk.position.axis.function.dimension.naxis1</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_function_dimension_naxis2</name>
                       <description>Coordinate function for position axis</description>
                       <utype>caom2:Chunk.position.axis.function.dimension.naxis2</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_function_refcoord_coord1_pix</name>
                       <description>Coordinate function for position axis</description>
                       <utype>caom2:Chunk.position.axis.function.refCoord.coord1.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_function_refcoord_coord1_val</name>
                       <description>Coordinate function for position axis</description>
                       <utype>caom2:Chunk.position.axis.function.refCoord.coord1.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_function_refcoord_coord2_pix</name>
                       <description>Coordinate function for position axis</description>
                       <utype>caom2:Chunk.position.axis.function.refCoord.coord2.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_function_refcoord_coord2_val</name>
                       <description>Coordinate function for position axis</description>
                       <utype>caom2:Chunk.position.axis.function.refCoord.coord2.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_range_end_coord1_pix</name>
                       <description>Coordinate range for position axis</description>
                       <utype>caom2:Chunk.position.axis.range.end.coord1.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_range_end_coord1_val</name>
                       <description>Coordinate range for position axis</description>
                       <utype>caom2:Chunk.position.axis.range.end.coord1.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_range_end_coord2_pix</name>
                       <description>Coordinate range for position axis</description>
                       <utype>caom2:Chunk.position.axis.range.end.coord2.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_range_end_coord2_val</name>
                       <description>Coordinate range for position axis</description>
                       <utype>caom2:Chunk.position.axis.range.end.coord2.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_range_start_coord1_pix</name>
                       <description>Coordinate range for position axis</description>
                       <utype>caom2:Chunk.position.axis.range.start.coord1.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_range_start_coord1_val</name>
                       <description>Coordinate range for position axis</description>
                       <utype>caom2:Chunk.position.axis.range.start.coord1.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_range_start_coord2_pix</name>
                       <description>Coordinate range for position axis</description>
                       <utype>caom2:Chunk.position.axis.range.start.coord2.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_axis_range_start_coord2_val</name>
                       <description>Coordinate range for position axis</description>
                       <utype>caom2:Chunk.position.axis.range.start.coord2.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_coordsys</name>
                       <description>Coordinate system name</description>
                       <utype>caom2:Chunk.position.coordsys</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_equinox</name>
                       <description>Coordinate equinox</description>
                       <unit>a</unit>
                       <utype>caom2:Chunk.position.equinox</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_resolution</name>
                       <description>Median spatial resolution (FWHM) </description>
                       <unit>arcsec</unit>
                       <utype>caom2:Chunk.position.resolution</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>positionaxis1</name>
                       <description>Axis for the first position coordinate</description>
                       <utype>caom2:Chunk.positionAxis1</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>positionaxis2</name>
                       <description>Axis for the second position coordinate</description>
                       <utype>caom2:Chunk.positionAxis2</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>producttype</name>
                       <description>Deprecated</description>
                       <utype>caom2:Chunk.productType</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_axis_axis_ctype</name>
                       <description>Coordinate type for time axis</description>
                       <utype>caom2:Chunk.time.axis.axis.ctype</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_axis_axis_cunit</name>
                       <description>Coordinate unit for time axis</description>
                       <utype>caom2:Chunk.time.axis.axis.cunit</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_axis_bounds</name>
                       <description>Coordinate bounds for time axis (string-encoded)</description>
                       <utype>caom2:Chunk.time.axis.bounds</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_axis_error_rnder</name>
                       <description>Random coordinate error for time axis</description>
                       <utype>caom2:Chunk.time.axis.error.rnder</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_axis_error_syser</name>
                       <description>Systematic coordinate error for time axis</description>
                       <utype>caom2:Chunk.time.axis.error.syser</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_axis_function_delta</name>
                       <description>Coordinate function for time axis</description>
                       <utype>caom2:Chunk.time.axis.function.delta</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_axis_function_naxis</name>
                       <description>Coordinate function for time axis</description>
                       <utype>caom2:Chunk.time.axis.function.naxis</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_axis_function_refcoord_pix</name>
                       <description>Coordinate function for time axis</description>
                       <utype>caom2:Chunk.time.axis.function.refCoord.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_axis_function_refcoord_val</name>
                       <description>Coordinate function for time axis</description>
                       <utype>caom2:Chunk.time.axis.function.refCoord.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_axis_range_end_pix</name>
                       <description>Coordinate range for time axis</description>
                       <utype>caom2:Chunk.time.axis.range.end.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_axis_range_end_val</name>
                       <description>Coordinate range for time axis</description>
                       <utype>caom2:Chunk.time.axis.range.end.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_axis_range_start_pix</name>
                       <description>Coordinate range for time axis</description>
                       <utype>caom2:Chunk.time.axis.range.start.pix</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_axis_range_start_val</name>
                       <description>Coordinate range for time axis</description>
                       <utype>caom2:Chunk.time.axis.range.start.val</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_exposure</name>
                       <description>Median exposure time per pixel</description>
                       <unit>s</unit>
                       <utype>caom2:Chunk.time.exposure</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_mjdref</name>
                       <description>Reference MJD value</description>
                       <unit>d</unit>
                       <utype>caom2:Chunk.time.mjdref</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_resolution</name>
                       <description>Resolution on time axis</description>
                       <unit>s</unit>
                       <utype>caom2:Chunk.time.resolution</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_timesys</name>
                       <description>Time system</description>
                       <utype>caom2:Chunk.time.timesys</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_trefpos</name>
                       <description>Time reference position</description>
                       <utype>caom2:Chunk.time.trefpos</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>timeaxis</name>
                       <description>Axis for the time coordinate</description>
                       <utype>caom2:Chunk.timeAxis</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                 </table>
                 <table esatapplus:flags="0" esatapplus:size="2662838" esatapplus:size_bytes="0" type="base_table">
                    <name>jwst.harvestskipuri</name>
                    <description>Table with CAOM synchronization issues</description>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>cname</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>errormessage</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>id</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>lastmodified</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>skipid</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>source</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>tryafter</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                 </table>
                 <table esatapplus:flags="0" esatapplus:size="8111730" esatapplus:size_bytes="0" type="base_table">
                    <name>jwst.main</name>
                    <description>Table with joins for observation, artifact and plane tables</description>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>algorithm_name</name>
                       <description>Algorithm that defines the observation( exposure for simple, grouping algorithm for composites)</description>
                       <utype>caom2:Observation.algorithm.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>calibrationlevel</name>
                       <description>IVOA ObsCore calibration level + extensions (-1,0,1,2,3,4)</description>
                       <utype>caom2:Plane.calibrationLevel</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>collection</name>
                       <description>Data collection this observation belongs to</description>
                       <utype>caom2:Observation.collection</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>creatorid</name>
                       <description>Unique creator identifier for this product</description>
                       <utype>caom2:Plane.creatorID</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>dataproducttype</name>
                       <description>IVOA ObsCore data product type + extensions</description>
                       <utype>caom2:Plane.dataProductType</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bandpassname</name>
                       <description>Collection-specific name for energy band (e.g. filter name)</description>
                       <utype>caom2:Plane.energy.bandpassName</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bounds</name>
                       <description>Energy coverage (barycentric wavelength)</description>
                       <unit>m</unit>
                       <utype>caom2:Plane.energy.bounds</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bounds_lower</name>
                       <description>Lower bound on energy axis (barycentric wavelength)</description>
                       <unit>m</unit>
                       <utype>caom2:Plane.energy.bounds.lower</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bounds_upper</name>
                       <description>Upper bound on energy axis (barycentric wavelength)</description>
                       <unit>m</unit>
                       <utype>caom2:Plane.energy.bounds.upper</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bounds_width</name>
                       <description>Width of the energy bounds</description>
                       <unit>m</unit>
                       <utype>caom2:Plane.energy.bounds.width</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_dimension</name>
                       <description>Dimension (number of pixels) along energy axis</description>
                       <utype>caom2:Plane.energy.dimension</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_energybands</name>
                       <description>Energy band names (Radio,Millimeter,Infrared,Optical,UV,EUV,X-ray,Gamma-ray separated by | [new in 2.4]</description>
                       <utype>caom2:Plane.energy.energyBands</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_freqsamplesize</name>
                       <description>Median sample (pixel) size on energy axis (convenience: in frequency)</description>
                       <unit>Hz</unit>
                       <utype>caom2:Plane.energy.freqSampleSize</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_freqwidth</name>
                       <description>Width of the energy bounds (convenience: in frequency)</description>
                       <unit>Hz</unit>
                       <utype>caom2:Plane.energy.freqWidth</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_resolvingpower</name>
                       <description>Median spectral resolving power (R)</description>
                       <utype>caom2:Plane.energy.resolvingPower</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_restwav</name>
                       <description>Rest wavelength of target spectral feature (barycentric)</description>
                       <unit>m</unit>
                       <utype>caom2:Plane.energy.restwav</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_samplesize</name>
                       <description>Median sample (pixel) size on energy axis</description>
                       <unit>m</unit>
                       <utype>caom2:Plane.energy.sampleSize</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_transition_species</name>
                       <description>Atom or molecule</description>
                       <utype>caom2:Plane.energy.transition.species</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_transition_transition</name>
                       <description>Specific energy transition of species</description>
                       <utype>caom2:Plane.energy.transition.transition</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>environment_ambienttemp</name>
                       <description>Ambient temperature telescope during observation</description>
                       <unit>C</unit>
                       <utype>caom2:Observation.environment.ambientTemp</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>environment_elevation</name>
                       <description>Elevation above horizon (0 to 90)</description>
                       <unit>deg</unit>
                       <utype>caom2:Observation.environment.elevation</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>environment_humidity</name>
                       <description>Humidity at telescope during observation</description>
                       <utype>caom2:Observation.environment.humidity</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>environment_photometric</name>
                       <description>Conditions were photometric (0=false, 1=true)</description>
                       <utype>caom2:Observation.environment.photometric</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>environment_seeing</name>
                       <description>Atmospheric seeing (FWHM)</description>
                       <unit>arcsec</unit>
                       <utype>caom2:Observation.environment.seeing</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>environment_tau</name>
                       <description>Zenith optical depth</description>
                       <utype>caom2:Observation.environment.tau</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>environment_wavelengthtau</name>
                       <description>Wavelength at which Tau has been measured</description>
                       <unit>m</unit>
                       <utype>caom2:Observation.environment.wavelengthTau</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>instrument_keywords</name>
                       <description>Instrument keywords (separated by |)</description>
                       <utype>caom2:Observation.instrument.keywords</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>instrument_name</name>
                       <description>Name of instrument used to acquire observation</description>
                       <utype>caom2:Observation.instrument.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>intent</name>
                       <description>Intended purpose of data (one of: science, calibration)</description>
                       <utype>caom2:Observation.intent</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>max_cal_level</name>
                       <description>Maximum cal. level available for this observation</description>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>members</name>
                       <description>Members of a composite observation (space-separated list of Observation URIs)</description>
                       <utype>caom2:Observation.members</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metrics_background</name>
                       <description>Background intensity</description>
                       <unit>Jy/pix</unit>
                       <utype>caom2:Plane.metrics.background</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metrics_backgroundstddev</name>
                       <description>Standard deviation in background</description>
                       <unit>Jy/pix</unit>
                       <utype>caom2:Plane.metrics.backgroundStddev</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metrics_fluxdensitylimit</name>
                       <description>Flux density limit where S:N=5 for point source</description>
                       <unit>Jy</unit>
                       <utype>caom2:Plane.metrics.fluxDensityLimit</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metrics_maglimit</name>
                       <description>AB magnitude limit where S:N=5 for point source</description>
                       <utype>caom2:Plane.metrics.magLimit</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metrics_sourcenumberdensity</name>
                       <description>Number density of sources</description>
                       <unit>deg-2</unit>
                       <utype>caom2:Plane.metrics.sourceNumberDensity</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>obs_accmetachecksum</name>
                       <description>Checksum of the metadata in this entity+children (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Observation.accMetaChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>obs_lastmodified</name>
                       <description>Timestamp of last modification of this row</description>
                       <utype>caom2:Observation.lastModified</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>obs_maxlastmodified</name>
                       <description>Timestamp of last modification of this entity+children</description>
                       <utype>caom2:Observation.maxLastModified</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>obs_metachecksum</name>
                       <description>Checksum of the metadata in this entity (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Observation.metaChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>obs_metarelease</name>
                       <description>Date the metadata for a plane is public (UTC)</description>
                       <utype>caom2:Observation.metaRelease</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observationid</name>
                       <description>Collection-specific unique observation identifier</description>
                       <utype>caom2:Observation.observationID</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observationuri</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>obsid</name>
                       <description>Unique observation identifier</description>
                       <utype>caom2:Observation.id</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>parenturi</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>plane_accmetachecksum</name>
                       <description>Checksum of the metadata in this entity+children (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Plane.accMetaChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>plane_datarelease</name>
                       <description>Date the data for a plane is public (UTC)</description>
                       <utype>caom2:Plane.dataRelease</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>plane_lastmodified</name>
                       <description>Timestamp of last modification of this row</description>
                       <utype>caom2:Plane.lastModified</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>plane_maxlastmodified</name>
                       <description>Timestamp of last modification of this entity+children</description>
                       <utype>caom2:Plane.maxLastModified</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>plane_metachecksum</name>
                       <description>Checksum of the metadata in this entity (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Plane.metaChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>plane_metarelease</name>
                       <description>Date the metadata for a plane is public (UTC)</description>
                       <utype>caom2:Observation.metaRelease</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>planeid</name>
                       <description>Unique plane identifier</description>
                       <utype>caom2:Plane.id</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>planeuri</name>
                       <description>Unique internal URI for this product</description>
                       <utype>caom2:Plane.uri</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_dimension</name>
                       <description>Number of samples (pixels) along polarization axis</description>
                       <utype>caom2:Plane.polarization.dimension</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_states</name>
                       <description>Polarization letter codes in canonical order, separated by /</description>
                       <utype>caom2:Plane.polarization.states</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_area</name>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_center</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_size</name>
                       <description>Size of the polygon bounds (diameter of minimum spanning circle)</description>
                       <unit>deg</unit>
                       <utype>caom2:Plane.position.bounds.size</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_spoly</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_dimension_naxis1</name>
                       <description>Dimensions (number of pixels) along one spatial axis</description>
                       <utype>caom2:Plane.position.dimension.naxis1</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_dimension_naxis2</name>
                       <description>Dimensions (number of pixels) along other spatial axis</description>
                       <utype>caom2:Plane.position.dimension.naxis2</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_resolution</name>
                       <description>Median spatial resolution (FWHM)</description>
                       <unit>arcsec</unit>
                       <utype>caom2:Plane.position.resolution</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_samplesize</name>
                       <description>Median sample (pixel) size on spatial axes</description>
                       <unit>arcsec</unit>
                       <utype>caom2:Plane.position.sampleSize</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_timedependent</name>
                       <description>Flag indicating that the position is time-dependent (0=false, 1=true)</description>
                       <utype>caom2:Plane.position.timeDependent</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>productid</name>
                       <description>Name of this product</description>
                       <utype>caom2:Plane.productID</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_id</name>
                       <description>Collection-specific unique proposal identifier</description>
                       <utype>caom2:Observation.proposal.id</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_keywords</name>
                       <description>Proposal keywords (separated by |)</description>
                       <utype>caom2:Observation.proposal.keywords</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_pi</name>
                       <description>Proposal principal investigator</description>
                       <utype>caom2:Observation.proposal.pi</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_project</name>
                       <description>Project that created/acquired the observation</description>
                       <utype>caom2:Observation.proposal.project</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_title</name>
                       <description>Proposal title</description>
                       <utype>caom2:Observation.proposal.title</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_inputs</name>
                       <description>Inputs of the process that created this plane (space-separated list of Plane URIs)</description>
                       <utype>caom2:Plane.provenance.inputs</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_keywords</name>
                       <description>Provenance keywords (separated by |)</description>
                       <utype>caom2:Plane.provenance.keywords</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_lastexecuted</name>
                       <description>Date this process was last executed</description>
                       <utype>caom2:Plane.provenance.lastExecuted</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_name</name>
                       <description>Name of the process that created this plane</description>
                       <utype>caom2:Plane.provenance.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_producer</name>
                       <description>Responsible entity (e.g. person)</description>
                       <utype>caom2:Plane.provenance.producer</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_project</name>
                       <description>Responsible entity (e.g. person)</description>
                       <utype>caom2:Plane.provenance.project</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_reference</name>
                       <description>External reference (URL)</description>
                       <utype>caom2:Plane.provenance.reference</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_runid</name>
                       <description>Responsible entity (e.g. person)</description>
                       <utype>caom2:Plane.provenance.runID</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_version</name>
                       <description>Version of the process/software</description>
                       <utype>caom2:Plane.provenance.version</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>"public"</name>
                       <description>True if datarelease&lt;= now</description>
                       <dataType xsi:type="vs:VOTableType">boolean</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>publisherid</name>
                       <description>Unique publisher identifier for this product</description>
                       <utype>caom2:Plane.publisherID</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>quality_flag</name>
                       <description>Flag describing the data quality (possible values: junk)</description>
                       <utype>caom2:Plane.quality.flag</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>requirements_flag</name>
                       <description>Flag describing satisfied proposal requirements (possible values: fail)</description>
                       <utype>caom2:Observation.requirements.flag</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>sequencenumber</name>
                       <description>Sequence number assigned by the observatory</description>
                       <utype>caom2:Observation.sequenceNumber</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="2" esatapplus:ref="" std="false">
                       <name>target_dec</name>
                       <description>Central declination, ICRS</description>
                       <unit>deg</unit>
                       <ucd>pos.eq.dec;meta.main</ucd>
                       <utype>Char.SpatialAxis.Coverage.Location.Coord.Position2D.Value2.C2</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_keywords</name>
                       <description>Target keywords (separated by |)</description>
                       <utype>caom2:Observation.target.keywords</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_moving</name>
                       <description>Flag for moving target</description>
                       <utype>caom2:Observation.target.moving</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_name</name>
                       <description>Name of intended target</description>
                       <utype>caom2:Observation.target.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="1" esatapplus:ref="" std="false">
                       <name>target_ra</name>
                       <description>Central right ascension, ICRS</description>
                       <unit>deg</unit>
                       <ucd>pos.eq.ra;meta.main</ucd>
                       <utype>Char.SpatialAxis.Coverage.Location.Coord.Position2D.Value2.C1</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_redshift</name>
                       <description>Redshift of intended target</description>
                       <utype>caom2:Observation.target.redshift</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_standard</name>
                       <description>Intended target is a standard (0=false, 1=true)</description>
                       <utype>caom2:Observation.target.standard</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_type</name>
                       <description>Classification of intended target</description>
                       <utype>caom2:Observation.target.type</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>targetposition_coordsys</name>
                       <description>Coordinate system for target position</description>
                       <utype>caom2:Observation.targetPosition.coordsys</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>targetposition_equinox</name>
                       <description>Equinox of target position coordinate system</description>
                       <utype>caom2:Observation.targetPosition.equinox</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>telescope_geolocationx</name>
                       <description>X component of geocentric location of telescope</description>
                       <utype>caom2:Observation.telescope.geoLocationX</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>telescope_geolocationy</name>
                       <description>Y component of geocentric location of telescope</description>
                       <utype>caom2:Observation.telescope.geoLocationY</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>telescope_geolocationz</name>
                       <description>Z component of geocentric location of telescope</description>
                       <utype>caom2:Observation.telescope.geoLocationZ</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>telescope_keywords</name>
                       <description>Telescope keywords (separated by |)</description>
                       <utype>caom2:Observation.telescope.keywords</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>telescope_name</name>
                       <description>Telescope keywords (separated by |)</description>
                       <utype>caom2:Observation.telescope.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_bounds</name>
                       <description>Time coverage (Modified Julian Day)</description>
                       <unit>d</unit>
                       <utype>caom2:Plane.time.bounds</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_bounds_lower</name>
                       <description>Lower bound on time axis (Modified Julian Day)</description>
                       <unit>d</unit>
                       <utype>caom2:Plane.time.bounds.lower</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_bounds_upper</name>
                       <description>Upper bound on time axis (Modified Julian Day)</description>
                       <unit>d</unit>
                       <utype>caom2:Plane.time.bounds.upper</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_bounds_width</name>
                       <description>Width of the time bounds</description>
                       <unit>d</unit>
                       <utype>caom2:Plane.time.bounds.width</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_dimension</name>
                       <description>Dimension (number of pixels) along time axis</description>
                       <utype>caom2:Plane.time.dimension</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_exposure</name>
                       <description>Median exposure time per pixel</description>
                       <unit>s</unit>
                       <utype>caom2:Plane.time.exposure</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_resolution</name>
                       <description>Median resolution on the time axis</description>
                       <unit>d</unit>
                       <utype>caom2:Plane.time.resolution</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_samplesize</name>
                       <description>Median sample (pixel) size on time axis</description>
                       <unit>d</unit>
                       <utype>caom2:Plane.time.sampleSize</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>type</name>
                       <description>Type of data collected (e.g. FITS OBSTYPE header)</description>
                       <utype>caom2:Observation.type</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>typecode</name>
                       <description>Single character code to denote type: S(impleObservation) or C(ompositeOvservation)</description>
                       <utype>caom2:Observation.typeCode</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                 </table>
                 <table esatapplus:flags="0" esatapplus:size="1776142" esatapplus:size_bytes="445259776" type="base_table">
                    <name>jwst.moc</name>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>nside</name>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observationid</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>pixelno</name>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>"public"</name>
                       <dataType xsi:type="vs:VOTableType">boolean</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>stcs</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>type</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                 </table>
                 <table esatapplus:flags="0" esatapplus:size="1425231" esatapplus:size_bytes="0" type="base_table">
                    <name>jwst.mv_archive_angular</name>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>calibrationlevel</name>
                       <description>Calibration level {0, 1, 2, 3, 4}</description>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>collection</name>
                       <description>Name of the data collection</description>
                       <ucd>meta.id</ucd>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>dataproducttype</name>
                       <description>Data product type</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>dec</name>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>detector</name>
                       <description>Name of the detector defined in instrument_keywords</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bandpassname</name>
                       <description>Collection-specific name for energy band (e.g. filter name)</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bounds_lower</name>
                       <description>Start in spectral coordinates</description>
                       <unit>m</unit>
                       <ucd>em.wl;stat.min</ucd>
                       <utype>Char.SpectralAxis.Coverage.Bounds.Limits.LoLimit</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bounds_upper</name>
                       <description>Stop in spectral coordinates</description>
                       <unit>m</unit>
                       <ucd>em.wl;stat.max</ucd>
                       <utype>Char.SpectralAxis.Coverage.Bounds.Limits.HiLimit</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bounds_width</name>
                       <description>Width of the energy bounds</description>
                       <unit>m</unit>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>instrument_name</name>
                       <description>Name of the instrument used for this observation</description>
                       <ucd>meta.id;instr</ucd>
                       <utype>Provenance.ObsConfig.Instrument.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>intent</name>
                       <description>Intended purpose of data (one of: science, calibration)</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>members</name>
                       <description>Members of a composite observation (space-separated list of Observation URIs)</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>members_number</name>
                       <description>Number of observations used to generate this on</description>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observationid</name>
                       <description>Observation ID</description>
                       <ucd>meta.id</ucd>
                       <utype>DataID.observationID</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observing_mode</name>
                       <description>Observing Mode extracted from EXP_KEY keyword</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>obsid</name>
                       <description>Foreign key</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>plane_datarelease</name>
                       <description>Date the data for a plane is public (UTC)</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>planeid</name>
                       <description>Foreign key</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_size</name>
                       <description>Diameter (bounds) of the covered region</description>
                       <unit>deg</unit>
                       <ucd>phys.angSize;instr.fov</ucd>
                       <utype>Char.SpatialAxis.Coverage.Bounds.Extent.diameter</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_spoly</name>
                       <description>Sky region covered by the data product(expressed in ICRS frame)</description>
                       <ucd>pos.outline;obs.field</ucd>
                       <utype>Char.SpatialAxis.Coverage.Support.Area</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>product_url</name>
                       <description>URL used to access (download) dataset</description>
                       <ucd>meta.ref.url</ucd>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_id</name>
                       <description>Collection-specific unique proposal identifier</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_keywords</name>
                       <description>Proposal keywords (separated by |)</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_pi</name>
                       <description>Proposal Principal Investigator</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_reference</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>"public"</name>
                       <description>Checks if observation is public or not</description>
                       <dataType xsi:type="vs:VOTableType">boolean</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>ra</name>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>ra_h</name>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>subarray</name>
                       <description>SUBARRAY field extracted from instrument_keywords</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_category</name>
                       <description>TARGETCATEGORY parameter extracted from target_keywords</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_description</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_keywords</name>
                       <description>Target keywords (separated by |)</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_moving</name>
                       <description>Flag for moving target</description>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_name</name>
                       <description>Astronomical object observed, if any</description>
                       <ucd>meta.id;src</ucd>
                       <utype>Target.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>template</name>
                       <description>TEMPLATE parameter extracted from instrument_keywords</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_bounds_lower</name>
                       <description>Start time in MJD</description>
                       <unit>d</unit>
                       <ucd>time.start;obs.exposure</ucd>
                       <utype>Char.TimeAxis.Coverage.Bounds.Limits.StartTime</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_bounds_upper</name>
                       <description>Stop time in MJD</description>
                       <unit>d</unit>
                       <ucd>time.end;obs.exposure</ucd>
                       <utype>Char.TimeAxis.Coverage.Bounds.Limits.StopTime</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_exposure</name>
                       <description>Total exposure time</description>
                       <unit>s</unit>
                       <ucd>time.duration;obs.exposure</ucd>
                       <utype>Char.TimeAxis.Coverage.Support.Extent</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>vis_cube</name>
                       <description>Flag to determine if cubes are available for this observation</description>
                       <dataType xsi:type="vs:VOTableType">boolean</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>vis_image</name>
                       <description>Central wavelength in spectral coordinates</description>
                       <dataType xsi:type="vs:VOTableType">boolean</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>wave_central</name>
                       <description>Central wavelength in spectral coordinates</description>
                       <unit>µm</unit>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                 </table>
                 <table esatapplus:flags="0" esatapplus:size="436999" esatapplus:size_bytes="0" type="base_table">
                    <name>jwst.observation</name>
                    <description>The main CAOM Observation table</description>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>accmetachecksum</name>
                       <description>Checksum of the metadata in this entity+children (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Observation.accMetaChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>algorithm_name</name>
                       <description>Algorithm that defines the observation( exposure for simple, grouping algorithm for composites)</description>
                       <utype>caom2:Observation.algorithm.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>collection</name>
                       <description>Data collection this observation belongs to</description>
                       <utype>caom2:Observation.collection</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>environment_ambienttemp</name>
                       <description>Ambient temperature telescope during observation</description>
                       <unit>C</unit>
                       <utype>caom2:Observation.environment.ambientTemp</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>environment_elevation</name>
                       <description>Elevation above horizon (0 to 90)</description>
                       <unit>deg</unit>
                       <utype>caom2:Observation.environment.elevation</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>environment_humidity</name>
                       <description>Humidity at telescope during observation</description>
                       <utype>caom2:Observation.environment.humidity</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>environment_photometric</name>
                       <description>Conditions were photometric (0=false, 1=true)</description>
                       <utype>caom2:Observation.environment.photometric</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>environment_seeing</name>
                       <description>Atmospheric seeing (FWHM)</description>
                       <unit>arcsec</unit>
                       <utype>caom2:Observation.environment.seeing</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>environment_tau</name>
                       <description>Zenith optical depth</description>
                       <utype>caom2:Observation.environment.tau</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>environment_wavelengthtau</name>
                       <description>Wavelength at which Tau has been measured</description>
                       <unit>m</unit>
                       <utype>caom2:Observation.environment.wavelengthTau</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>instrument_keywords</name>
                       <description>Instrument keywords (separated by |)</description>
                       <utype>caom2:Observation.instrument.keywords</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>instrument_name</name>
                       <description>Name of instrument used to acquire observation</description>
                       <utype>caom2:Observation.instrument.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>intent</name>
                       <description>Intended purpose of data (one of: science, calibration)</description>
                       <utype>caom2:Observation.intent</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>lastmodified</name>
                       <description>Timestamp of last modification of this row</description>
                       <utype>caom2:Observation.lastModified</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>maxlastmodified</name>
                       <description>Timestamp of last modification of this entity+children</description>
                       <utype>caom2:Observation.maxLastModified</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>members</name>
                       <description>Members of a composite observation (space-separated list of Observation URIs)</description>
                       <utype>caom2:Observation.members</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metachecksum</name>
                       <description>Checksum of the metadata in this entity (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Observation.metaChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metarelease</name>
                       <description>Date the metadata for an observation is public (UTC)</description>
                       <utype>caom2:Observation.metaRelease</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observationid</name>
                       <description>Collection-specific unique observation identifier</description>
                       <utype>caom2:Observation.observationID</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>observationuri</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>obsid</name>
                       <description>Unique observation identifier</description>
                       <utype>caom2:Observation.id</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_id</name>
                       <description>Collection-specific unique proposal identifier</description>
                       <utype>caom2:Observation.proposal.id</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_keywords</name>
                       <description>Proposal keywords (separated by |)</description>
                       <utype>caom2:Observation.proposal.keywords</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_pi</name>
                       <description>Proposal principal investigator</description>
                       <utype>caom2:Observation.proposal.pi</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_project</name>
                       <description>Project that created/acquired the observation</description>
                       <utype>caom2:Observation.proposal.project</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>proposal_title</name>
                       <description>Proposal title</description>
                       <utype>caom2:Observation.proposal.title</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>requirements_flag</name>
                       <description>Flag describing satisfied proposal requirements (possible values: fail)</description>
                       <utype>caom2:Observation.requirements.flag</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>sequencenumber</name>
                       <description>Sequence number assigned by the observatory</description>
                       <utype>caom2:Observation.sequenceNumber</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_keywords</name>
                       <description>Target keywords (separated by |)</description>
                       <utype>caom2:Observation.target.keywords</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_moving</name>
                       <description>Flag for moving target</description>
                       <utype>caom2:Observation.target.moving</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_name</name>
                       <description>Name of intended target</description>
                       <utype>caom2:Observation.target.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_redshift</name>
                       <description>Redshift of intended target</description>
                       <utype>caom2:Observation.target.redshift</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_standard</name>
                       <description>Intended target is a standard (0=false, 1=true)</description>
                       <utype>caom2:Observation.target.standard</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>target_type</name>
                       <description>Classification of intended target</description>
                       <utype>caom2:Observation.target.type</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="1" esatapplus:ref="" std="false">
                       <name>targetposition_coordinates_cval1</name>
                       <description>Central right ascension, ICRS</description>
                       <unit>deg</unit>
                       <ucd>pos.eq.ra;meta.main</ucd>
                       <utype>Char.SpatialAxis.Coverage.Location.Coord.Position2D.Value2.C1</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="2" esatapplus:ref="" std="false">
                       <name>targetposition_coordinates_cval2</name>
                       <description>Central declination, ICRS</description>
                       <unit>deg</unit>
                       <ucd>pos.eq.dec;meta.main</ucd>
                       <utype>Char.SpatialAxis.Coverage.Location.Coord.Position2D.Value2.C2</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>targetposition_coordsys</name>
                       <description>Coordinate system for target position</description>
                       <utype>caom2:Observation.targetPosition.coordsys</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>targetposition_equinox</name>
                       <description>Equinox of target position coordinate system</description>
                       <utype>caom2:Observation.targetPosition.equinox</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>telescope_geolocationx</name>
                       <description>X component of geocentric location of telescope</description>
                       <utype>caom2:Observation.telescope.geoLocationX</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>telescope_geolocationy</name>
                       <description>Y component of geocentric location of telescope</description>
                       <utype>caom2:Observation.telescope.geoLocationY</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>telescope_geolocationz</name>
                       <description>Z component of geocentric location of telescope</description>
                       <utype>caom2:Observation.telescope.geoLocationZ</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>telescope_keywords</name>
                       <description>Telescope keywords (separated by |)</description>
                       <utype>caom2:Observation.telescope.keywords</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>telescope_name</name>
                       <description>Name of telescope used to acquire observation</description>
                       <utype>caom2:Observation.telescope.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>type</name>
                       <description>Type of data collected (e.g. FITS OBSTYPE header)</description>
                       <utype>caom2:Observation.type</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>typecode</name>
                       <description>Single character code to denote type: S(impleObservation) or C(ompositeOvservation)</description>
                       <utype>caom2:Observation.typeCode</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                 </table>
                 <table esatapplus:flags="0" esatapplus:size="3921776" esatapplus:size_bytes="0" type="base_table">
                    <name>jwst.observationmember</name>
                    <description>Composite to simple observation join table</description>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>memberid</name>
                       <description>Member observation identifier [changed in 2.4]</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>parentid</name>
                       <description>Parent observation identifier [changed in 2.4]</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                 </table>
                 <table esatapplus:flags="0" esatapplus:size="35614910" esatapplus:size_bytes="0" type="base_table">
                    <name>jwst.part</name>
                    <description>Parts of artifacts (e.g. FITS extensions)</description>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>accmetachecksum</name>
                       <description>Checksum of the metadata in this entity+children (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Part.accMetaChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>artifactid</name>
                       <description>Foreign key</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>lastmodified</name>
                       <description>Timestamp of last modification of this row</description>
                       <utype>caom2:Part.lastModified</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>maxlastmodified</name>
                       <description>Timestamp of last modification of this entity+children</description>
                       <utype>caom2:Part.maxLastModified</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metachecksum</name>
                       <description>Checksum of the metadata in this entity (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Part.metaChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metarelease</name>
                       <description>Date the metadata for a plane is public (UTC)</description>
                       <utype>caom2:Part.metaRelease</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>name</name>
                       <description>Name of this part</description>
                       <utype>caom2:Part.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>obsid</name>
                       <description>Foreign key</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>partid</name>
                       <description>Unique part identifier</description>
                       <utype>caom2:Part.id</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>planeid</name>
                       <description>Foreign key</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>producttype</name>
                       <description>Product type (science, calibration, auxiliary, preview, info)</description>
                       <utype>caom2:Part.productType</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                 </table>
                 <table esatapplus:flags="0" esatapplus:size="691616" esatapplus:size_bytes="0" type="base_table">
                    <name>jwst.plane</name>
                    <description>The products of the observation</description>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>accmetachecksum</name>
                       <description>Checksum of the metadata in this entity+children (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Plane.accMetaChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>calibrationlevel</name>
                       <description>IVOA ObsCore calibration level + extensions (-1,0,1,2,3,4)</description>
                       <utype>caom2:Plane.calibrationLevel</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>creatorid</name>
                       <description>Unique creator identifier for this product</description>
                       <utype>caom2:Plane.creatorID</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>dataproducttype</name>
                       <description>IVOA ObsCore data product type + extensions</description>
                       <utype>caom2:Plane.dataProductType</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>datarelease</name>
                       <description>Date the data for a plane is public (UTC)</description>
                       <utype>caom2:Plane.dataRelease</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bandpassname</name>
                       <description>Collection-specific name for energy band (e.g. filter name)</description>
                       <utype>caom2:Plane.energy.bandpassName</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bounds</name>
                       <description>Energy coverage (barycentric wavelength)</description>
                       <unit>m</unit>
                       <utype>caom2:Plane.energy.bounds</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bounds_lower</name>
                       <description>Lower bound on energy axis (barycentric wavelength)</description>
                       <unit>m</unit>
                       <utype>caom2:Plane.energy.bounds.lower</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bounds_upper</name>
                       <description>Upper bound on energy axis (barycentric wavelength)</description>
                       <unit>m</unit>
                       <utype>caom2:Plane.energy.bounds.upper</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_bounds_width</name>
                       <description>Width of the energy bounds</description>
                       <unit>m</unit>
                       <utype>caom2:Plane.energy.bounds.width</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_dimension</name>
                       <description>Dimension (number of pixels) along energy axis</description>
                       <utype>caom2:Plane.energy.dimension</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_energybands</name>
                       <description>Energy band names (Radio,Millimeter,Infrared,Optical,UV,EUV,X-ray,Gamma-ray separated by | [new in 2.4]</description>
                       <utype>caom2:Plane.energy.energyBands</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_freqsamplesize</name>
                       <description>Median sample (pixel) size on energy axis (convenience: in frequency)</description>
                       <unit>Hz</unit>
                       <utype>caom2:Plane.energy.freqSampleSize</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_freqwidth</name>
                       <description>Width of the energy bounds (convenience: in frequency)</description>
                       <unit>Hz</unit>
                       <utype>caom2:Plane.energy.freqWidth</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_resolvingpower</name>
                       <description>Median spectral resolving power (R)</description>
                       <utype>caom2:Plane.energy.resolvingPower</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_restwav</name>
                       <description>Rest wavelength of target spectral feature (barycentric)</description>
                       <unit>m</unit>
                       <utype>caom2:Plane.energy.restwav</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_samplesize</name>
                       <description>Median sample (pixel) size on energy axis</description>
                       <unit>m</unit>
                       <utype>caom2:Plane.energy.sampleSize</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_transition_species</name>
                       <description>Atom or molecule</description>
                       <utype>caom2:Plane.energy.transition.species</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>energy_transition_transition</name>
                       <description>Specific energy transition of species</description>
                       <utype>caom2:Plane.energy.transition.transition</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>lastmodified</name>
                       <description>Timestamp of last modification of this row</description>
                       <utype>caom2:Plane.lastModified</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>maxlastmodified</name>
                       <description>Timestamp of last modification of this entity+children</description>
                       <utype>caom2:Plane.maxLastModified</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metachecksum</name>
                       <description>Checksum of the metadata in this entity (URI of the form {algorithm}:{hex value})</description>
                       <utype>caom2:Plane.metaChecksum</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metarelease</name>
                       <description>Date the metadata for a plane is public (UTC)</description>
                       <utype>caom2:Plane.metaRelease</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metrics_background</name>
                       <description>Background intensity</description>
                       <unit>Jy/pix</unit>
                       <utype>caom2:Plane.metrics.background</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metrics_backgroundstddev</name>
                       <description>Standard deviation in background</description>
                       <unit>Jy/pix</unit>
                       <utype>caom2:Plane.metrics.backgroundStddev</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metrics_fluxdensitylimit</name>
                       <description>Flux density limit where S:N=5 for point source</description>
                       <unit>Jy</unit>
                       <utype>caom2:Plane.metrics.fluxDensityLimit</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metrics_maglimit</name>
                       <description>AB magnitude limit where S:N=5 for point source</description>
                       <utype>caom2:Plane.metrics.magLimit</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>metrics_sourcenumberdensity</name>
                       <description>Number density of sources</description>
                       <unit>deg-2</unit>
                       <utype>caom2:Plane.metrics.sourceNumberDensity</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>obsid</name>
                       <description>Foreign key</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>planeid</name>
                       <description>Unique plane identifier</description>
                       <utype>caom2:Plane.id</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>planeuri</name>
                       <description>Unique internal URI for this product</description>
                       <utype>caom2:Plane.uri</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_dimension</name>
                       <description>Number of samples (pixels) along polarization axis</description>
                       <utype>caom2:Plane.polarization.dimension</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>polarization_states</name>
                       <description>Polarization letter codes in canonical order, separated by /</description>
                       <utype>caom2:Plane.polarization.states</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_area</name>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_center</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_size</name>
                       <description>Size of the polygon bounds (diameter of minimum spanning circle)</description>
                       <unit>deg</unit>
                       <utype>caom2:Plane.position.bounds.size</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_spoly</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_bounds_stcs</name>
                       <description>String polygon of the footprint</description>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_dimension_naxis1</name>
                       <description>Dimensions (number of pixels) along one spatial axis</description>
                       <utype>caom2:Plane.position.dimension.naxis1</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_dimension_naxis2</name>
                       <description>Dimensions (number of pixels) along other spatial axis</description>
                       <utype>caom2:Plane.position.dimension.naxis2</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_resolution</name>
                       <description>Median spatial resolution (FWHM)</description>
                       <unit>arcsec</unit>
                       <utype>caom2:Plane.position.resolution</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_samplesize</name>
                       <description>Median sample (pixel) size on spatial axes</description>
                       <unit>arcsec</unit>
                       <utype>caom2:Plane.position.sampleSize</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>position_timedependent</name>
                       <description>Flag indicating that the position is time-dependent (0=false, 1=true)</description>
                       <utype>caom2:Plane.position.timeDependent</utype>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>productid</name>
                       <description>Name of this product</description>
                       <utype>caom2:Plane.productID</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_inputs</name>
                       <description>Inputs of the process that created this plane (space-separated list of Plane URIs)</description>
                       <utype>caom2:Plane.provenance.inputs</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_keywords</name>
                       <description>Provenance keywords (separated by |)</description>
                       <utype>caom2:Plane.provenance.keywords</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_lastexecuted</name>
                       <description>Date this process was last executed</description>
                       <utype>caom2:Plane.provenance.lastExecuted</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_name</name>
                       <description>Name of the process that created this plane</description>
                       <utype>caom2:Plane.provenance.name</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_producer</name>
                       <description>Responsible entity (e.g. person)</description>
                       <utype>caom2:Plane.provenance.producer</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_project</name>
                       <description>Responsible entity (e.g. person)</description>
                       <utype>caom2:Plane.provenance.project</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_reference</name>
                       <description>External reference (URL)</description>
                       <utype>caom2:Plane.provenance.reference</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_runid</name>
                       <description>Responsible entity (e.g. person)</description>
                       <utype>caom2:Plane.provenance.runID</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>provenance_version</name>
                       <description>Version of the process/software</description>
                       <utype>caom2:Plane.provenance.version</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>"public"</name>
                       <description>True if datarelease&lt;= now</description>
                       <dataType xsi:type="vs:VOTableType">boolean</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>publisherid</name>
                       <description>Unique publisher identifier for this product</description>
                       <utype>caom2:Plane.publisherID</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>quality_flag</name>
                       <description>Flag describing the data quality (possible values: junk)</description>
                       <utype>caom2:Plane.quality.flag</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_bounds</name>
                       <description>Time coverage (Modified Julian Day)</description>
                       <unit>d</unit>
                       <utype>caom2:Plane.time.bounds</utype>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_bounds_lower</name>
                       <description>Lower bound on time axis (Modified Julian Day)</description>
                       <unit>d</unit>
                       <utype>caom2:Plane.time.bounds.lower</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_bounds_upper</name>
                       <description>Upper bound on time axis (Modified Julian Day)</description>
                       <unit>d</unit>
                       <utype>caom2:Plane.time.bounds.upper</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_bounds_width</name>
                       <description>Width of the time bounds</description>
                       <unit>d</unit>
                       <utype>caom2:Plane.time.bounds.width</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_dimension</name>
                       <description>Dimension (number of pixels) along time axis</description>
                       <utype>caom2:Plane.time.dimension</utype>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_exposure</name>
                       <description>Median exposure time per pixel</description>
                       <unit>s</unit>
                       <utype>caom2:Plane.time.exposure</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_resolution</name>
                       <description>Median resolution on the time axis</description>
                       <unit>d</unit>
                       <utype>caom2:Plane.time.resolution</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>time_samplesize</name>
                       <description>Median sample (pixel) size on time axis</description>
                       <unit>d</unit>
                       <utype>caom2:Plane.time.sampleSize</utype>
                       <dataType xsi:type="vs:VOTableType">double</dataType>
                    </column>
                 </table>
                 <table esatapplus:flags="0" esatapplus:size="691616" esatapplus:size_bytes="0" type="base_table">
                    <name>jwst.plane_vis</name>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>planeid</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>vis_cube</name>
                       <dataType xsi:type="vs:VOTableType">boolean</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>vis_image</name>
                       <dataType xsi:type="vs:VOTableType">boolean</dataType>
                    </column>
                 </table>
              </schema>
              <schema esatapplus:public="true">
                 <name>public</name>
                 <table esatapplus:flags="0" esatapplus:hierarchy="__hide__" esatapplus:size="1" type="base_table">
                    <name>public.dual</name>
                    <description>auxiliary table to be used as dummy "from"</description>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>dummy</name>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                 </table>
              </schema>
              <schema esatapplus:public="true">
                 <name>tap_config</name>
                 <table esatapplus:flags="0" esatapplus:hierarchy="__hide__" esatapplus:size="5" type="base_table">
                    <name>tap_config.coord_sys</name>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>epoch</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>equinox</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>id</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>system</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>xml_output</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                 </table>
                 <table esatapplus:flags="0" esatapplus:hierarchy="__hide__" esatapplus:size="2" type="base_table">
                    <name>tap_config.properties</name>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>"key"</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>"value"</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                 </table>
              </schema>
              <schema esatapplus:public="true">
                 <name>tap_schema</name>
                 <table esatapplus:flags="0" type="base_table">
                    <name>tap_schema.columns</name>
                    <description>TAP SCHEMA columns</description>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>arraysize</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>column_index</name>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>column_name</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>datatype</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>db_column_name</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>description</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>indexed</name>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>principal</name>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>schema_name</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>"size"</name>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>std</name>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>table_name</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>ucd</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>unit</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>utype</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>xtype</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <foreignKey>
                       <targetTable>tap_schema.tables</targetTable>
                       <fkColumn>
                          <fromColumn>table_name</fromColumn>
                          <targetColumn>table_name</targetColumn>
                       </fkColumn>
                       <description>TAP schema table name</description>
                    </foreignKey>
                 </table>
                 <table esatapplus:flags="0" type="base_table">
                    <name>tap_schema.key_columns</name>
                    <description>TAP SCHEMA key columns</description>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>from_column</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>key_id</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>target_column</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <foreignKey>
                       <targetTable>tap_schema.keys</targetTable>
                       <fkColumn>
                          <fromColumn>key_id</fromColumn>
                          <targetColumn>key_id</targetColumn>
                       </fkColumn>
                       <description>TAP schema key columns key id</description>
                    </foreignKey>
                 </table>
                 <table esatapplus:flags="0" type="base_table">
                    <name>tap_schema.keys</name>
                    <description>TAP SCHEMA keys</description>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>description</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>from_table</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>key_id</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>target_table</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>utype</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <foreignKey>
                       <targetTable>tap_schema.tables</targetTable>
                       <fkColumn>
                          <fromColumn>from_table</fromColumn>
                          <targetColumn>table_name</targetColumn>
                       </fkColumn>
                       <description>TAP schema keys from table</description>
                    </foreignKey>
                    <foreignKey>
                       <targetTable>tap_schema.tables</targetTable>
                       <fkColumn>
                          <fromColumn>target_table</fromColumn>
                          <targetColumn>table_name</targetColumn>
                       </fkColumn>
                       <description>TAP schema keys target table</description>
                    </foreignKey>
                 </table>
                 <table esatapplus:flags="0" type="base_table">
                    <name>tap_schema.schemas</name>
                    <description>TAP SCHEMA schemas</description>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>db_schema_name</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>description</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>schema_index</name>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>schema_name</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>utype</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                 </table>
                 <table esatapplus:flags="0" type="base_table">
                    <name>tap_schema.tables</name>
                    <description>TAP SCHEMA tables</description>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>db_table_name</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>description</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>schema_name</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>"size"</name>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="false">
                       <name>size_bytes</name>
                       <dataType xsi:type="vs:VOTableType">long</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>table_index</name>
                       <dataType xsi:type="vs:VOTableType">int</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>table_name</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>table_type</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <column esatapplus:flags="0" esatapplus:ref="" std="true">
                       <name>utype</name>
                       <dataType xsi:type="vs:VOTableType">char</dataType>
                    </column>
                    <foreignKey>
                       <targetTable>tap_schema.schemas</targetTable>
                       <fkColumn>
                          <fromColumn>schema_name</fromColumn>
                          <targetColumn>schema_name</targetColumn>
                       </fkColumn>
                       <description>TAP schema schema name</description>
                    </foreignKey>
                 </table>
              </schema>
              <schema esatapplus:public="true">
                 <name>tap_upload</name>
              </schema>
           </tableset>
        </ri:Resource>