This package has 2 purposes:
- Validation of VOTables annotated with IVOA recommendation MIVOT
- MIVOT serialization of model components (snippets) that can be used to build annotations
The validator is distributed as a Python package.
$ pip install mivot-validator
There are 2 validation levels:
- against the XML schemas (VOTable and MIVOT)
- against the model itself as it is defined in VODML
Validation of an annotated VOTable against both VOTable and MIVOT schemas:
$ mivot-validate PROJECT_DIR/tests/data/gaia_3mags_ok_1.xml
USAGE: mivot-validate [path]
Validate against both VOTable and MIVOT schemas
path: either a simple file or a directory
all directory XML files are validated
exit status: 0 in case of success, 1 otherwise
Validation of an annotated VOTable against the MIVOT schema only:
$ mivot-mapping-validate PROJECT_DIR/tests/data/gaia_3mags_ok_1.xml
USAGE: mivot-mapping-validate [path]
Validate XML files against MIVOT schema
path: either a simple file or a directory
all directory XML files are validated
exit status: 0 in case of success, 1 otherwise
This tool checks that mapped classes match the model they refer to.
$ mivot-instance-validate <VOTABLE path>
USAGE: mivot-instance-validate [path]
Validate the mapped instances against the VODML definitions
path: path to the mapped VOTable to be checked
exit status: 0 in case of success, 1 otherwise
The validation tool below checks that all dmtype
and dmrole
referenced in the mapping block
are known by mapped models; it does not care of the class structures.
This checking only works with the PhotDM/MANGO/Meas/Coord/ivoa models, other models are ignored.
$ types-and-roles-validate <VOTABLE path>
USAGE: types-and-roles-validate [path]
Validate all dmtypes and dmroles
exit status: 0 in case of success, 1 otherwise
To facilitate the MIVOT annotation of VODML files, it can be convenient to work with pre-computed snippets that can be stacked to build full annotation blocks.
- A snippet is a MIVOT fragment, where values and references are not set, that represents a component of a model.
- Snippets can easily be derived from the VODML representation of the model as long as there is no class polymorphism. If there is some, we provide a tool helping users to resolve abstract components.
There are two snippet generators available in this package:
mivot-snippet-model
which allows, for a given model, to generate all non-abstract object and data types as MIVOT components.- The
mivot-snippet-instance
which generate, for a given concrete class name, a usable snippet including the concrete classes given either as user input or as command line parameters.
$ mivot-snippet-model [VODML path or url]
USAGE: mivot-snippet-model [url] [output_dir]
Create MIVOT snippets from VODML files
url: url of any VODML-Model (must be prefixed with file:// in case of local file)
output_dir: path to the chosen output directory (session working directory by default)
exit status: 0 in case of success, 1 otherwise
$ mivot-snippet-instance coords:TimeSys `pwd`/coords.TimeSys.example \
-cc dmrole=coords:TimeFrame.refPosition,context=coords:TimeSys,dmtype=coords:RefLocation,class=coords:StdRefLocation\
-cc dmrole=coords:TimeFrame.refDirection,context=coords:TimeSys,dmtype=coords:RefLocation,class=coords:StdRefLocation
In this example the tool will generate one snippet for the object type coords:TimeSys
.
- The produced file will be located in
CURRENT_FOLDER/coords.TimeSys.example.xml
. If the output is not an absolute path, it will be located in the session working directory. - All MIVOT instances of (abstract) type
coords:RefLocation
playing the rolecoords:TimeFrame.refPosition
and hosted by a class playing the rolecoords:TimeSys
, will be replaced by instances of typecoords:StdRefLocation
- All MIVOT instances of (abstract) type
coords:RefLocation
playing the rolecoords:TimeFrame.refDirection
and hosted by a class playing the rolecoords:TimeSys
, will be replaced by instances of typecoords:StdRefLocation