...
<table id="epn_core" onDisk="true" adql="True">
<mixin spatial_frame_type="celestialnone"
optional_columns= "time_scale publisher bib_reference" >//epntap2#table-2_0</mixin>
...
Data ingestion starts with the tag <data>. For the case of data imported from a CSV, id must take the value "import" and the CSV path must be indicated in <sources> element. <csvGrammars> for EPN-TAP contains global ingestion rules . The <rowfilter> defined here gives an automatic assignment to the CSV and table columns (mandatory, optional and added columns defined earlier) which have the same name. It is possible to define another rowfilter to add special ingestion rules (see an example here).
<data id="import">
<sources>data/Masses2<sources>Masses2.csv</sources>
<csvGrammar>
<rowfilter procDef="//products#define">
<bind name="table">"\schema.epn_core"</bind>
</rowfilter>
</csvGrammar>
...
Still into the <data> tag, the element <make table="epn_core"> aims to fill columns of the table epn_core.
The <var> and <map> elements associate values to the columns which has not been filled automatically by the rowfilter or need post-processing :
...
<make table="epn_core">
<rowmaker idmaps="*">
<var <var key="dataproductobs_typeid">"ci"</var> source="obs_id" />
...
<var <map key="publishermeasurement_type">"LESIA" phys.mass#phys.size.radius"</var>map>
<bind> elements in <apply> tag link fields set in <var> to its new value and fill table rows, it is only necessary for rows not filled by the rowfilter. Some constant value columns could also be defined in <bind> elements like: <bind name="target_class">"planet"</bind>.
...