diff --git a/.gitignore b/.gitignore
index 0c5c821..54031cb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,6 +33,7 @@
*.fdb_latexmk
*.fls
*.gz
+*.pyc
draft-background.*
# Maven
target/
diff --git a/doc/MANGO.tex b/doc/MANGO.tex
index 9577ecf..8ca3715 100644
--- a/doc/MANGO.tex
+++ b/doc/MANGO.tex
@@ -299,7 +299,7 @@ \subsection{Properties}
\label{table:properties}
\end{center}
\end{table}
-This initial release supports a limited list of properties, listed in table \ref{table:properties}, that address the most common use cases.
+This initial release supports a limited list of property types, listed in table \ref{table:properties}, that address the most common use cases.
All of these components are described in alphabetical order in the next section.
@@ -322,14 +322,14 @@ \subsubsection{Property Identification}
\end{itemize}
-\subsubsection{MANGO and MIVOT: Structuring Tabular Data}
+\subsubsection{MANGO and MIVOT: 2 Strategies for Structuring Tabular Data}
MANGO is primarily used to organise tabular data provided by TAP services \citep{2019ivoa.spec.0927D}
other DAL nodes (one of the reference implementation is based on a Vizier SCS).
To achieve this, table rows must be linked to the model using MIVOT annotations.
We propose two strategies for establishing this mapping:
\begin{itemize}[noitemsep,topsep=0pt,parsep=0pt,partopsep=0pt]
- \item Single Object per Row: Each table row is treated as a single object,
+ \item Single Object per Row: Each table row is treated as a single object, a \texttt{MangoObject} instance.
with its properties grouped within a container or dock.
\item Scattered Independent Quantities: Each table row is considered as a collection of independent quantities.
\end{itemize}
@@ -356,17 +356,8 @@ \subsubsection{MANGO and MIVOT: Structuring Tabular Data}
The decision ultimately rests with the data providers.
However, both options are based on the full-featured MANGO model.
-%\section{Model: mango in details}
-%\label{section:mangomodel_desc}
-% The purpose of MANGO, which stands for MO-del for AN-notating G-eneric O-objects, is to add an upper level of description to the tabular data of query responses. It allows metadata to be extended, complex quantities to be reconstructed from column values, and properties to be linked. It also allows to specify the origin of the data.
-%Here is an overview of the data model organization.
-
-%\subsection{Building blocks}
-% \input{model_principles_head.tex}
-%
-%\subsection{Model Dictionnary}
-\input{model.tex}
-
+%\input{model.tex}
+\input{model_toc.tex}
\section{Integrating MANGO with TAP Services}
\input{tap.tex}
diff --git a/doc/Makefile b/doc/Makefile
index 5804ca3..355616e 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -7,7 +7,7 @@ DOCNAME = MANGO
DOCVERSION = 0.1
# Publication date, ISO format; update manually for "releases"
-DOCDATE = 2024-10-20
+DOCDATE = 2025-01-30
# What is it you're writing: NOTE, WD, PR, REC, PEN, or EN
DOCTYPE = WD
diff --git a/doc/ivoatexmeta.tex b/doc/ivoatexmeta.tex
index 41deb02..2c20e75 100644
--- a/doc/ivoatexmeta.tex
+++ b/doc/ivoatexmeta.tex
@@ -1,7 +1,7 @@
% GENERATED FILE -- edit this in the Makefile
\newcommand{\ivoaDocversion}{0.1}
-\newcommand{\ivoaDocdate}{2024-10-20}
-\newcommand{\ivoaDocdatecode}{20241020}
+\newcommand{\ivoaDocdate}{2025-01-30}
+\newcommand{\ivoaDocdatecode}{20250130}
\newcommand{\ivoaDoctype}{WD}
\newcommand{\ivoaDocname}{MANGO}
\renewcommand{\ivoaBaseURL}{https://www.ivoa.net/documents/MANGO}
diff --git a/doc/model.tex b/doc/model.tex
index 1aa4357..f6a081e 100644
--- a/doc/model.tex
+++ b/doc/model.tex
@@ -62,6 +62,16 @@ \section{Model: mango }
\label{sect:BitField}
Property for which each possible value is represented by a bit, so that multiple states can be contained in the same integer value. The possible values are defined in the associated \texttt{StatusValues}, which must correspond to a bit pattern (each value must be a power of 2). This constraint is not enforced by the model.
+ \subsection{Brightness}
+ \label{sect:Brightness}
+ Observed brightness of the \texttt{MangoObject}. The distinction between fluxes and magnitudes is made by the unit. This property should refer to a photometric calibration as defined by the \texttt{Phot} data model (1.1).
+
+ \subsubsection{Brightness.photCal}
+ \textbf{vodml-id: Brightness.photCal} \newline
+ \textbf{type: Phot:PhotCal} \newline
+ \textbf{multiplicity: 1} \newline
+ Photometric calibration that applies to the photometric property. It must be an instance of \texttt{photdm:PhotCal}.
+
\subsection{Color}
\label{sect:Color}
Property that describes a color of the \texttt{MangoObject}. The color is not an intrinsic property of the MANGO object, but a value relative to two filters or energy bands.
@@ -162,19 +172,19 @@ \section{Model: mango }
\textbf{vodml-id: EpochPosition.pmLongitude} \newline
\textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
\textbf{multiplicity: 1} \newline
- Velocity along the longitude axis in angular distance per unit time (see \texttt{meas:ProperMotion.coord}). The current version of the model only allows a representation in the Polar coordinate space.
+ Velocity along the longitude axis in angular distance per unit time (see \texttt{meas:ProperMotion.coord}).
\subsubsection{EpochPosition.pmLatitude}
\textbf{vodml-id: EpochPosition.pmLatitude} \newline
\textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
\textbf{multiplicity: 1} \newline
- Velocity along the latitude axis in angular distance per unit time (see \texttt{meas:ProperMotion.coord}). The current version of the model only allows a representation in the Polar coordinate space.
+ Velocity along the latitude axis in angular distance per unit time (see \texttt{meas:ProperMotion.coord}).
\subsubsection{EpochPosition.epoch}
\textbf{vodml-id: EpochPosition.epoch} \newline
\textbf{type: coords:Epoch} \newline
\textbf{multiplicity: 1} \newline
- Position epoch expressed within the common time system (see \texttt{coords:epoch})
+ Position epoch expressed within the common time system (see \texttt{coords:Epoch})
\subsubsection{EpochPosition.pmCosLat\_applied}
\textbf{vodml-id: EpochPosition.pmCosLat\_applied} \newline
@@ -282,26 +292,26 @@ \section{Model: mango }
\subsubsection{EpochPositionErrors.parallax}
\textbf{vodml-id: EpochPositionErrors.parallax} \newline
- \textbf{type: \hyperref[sect:error.Symmetric1D]{mango:error.Symmetric1D}} \newline
- \textbf{multiplicity: 0..1} \newline
+ \textbf{type: \hyperref[sect:error.PropertyError]{mango:error.PropertyError}} \newline
+ \textbf{multiplicity: 1} \newline
Parallax error. This error is meant to be symmetrical in the current model version.
\subsubsection{EpochPositionErrors.radialVelocity}
\textbf{vodml-id: EpochPositionErrors.radialVelocity} \newline
- \textbf{type: \hyperref[sect:error.Symmetric1D]{mango:error.Symmetric1D}} \newline
- \textbf{multiplicity: 0..1} \newline
+ \textbf{type: \hyperref[sect:error.PropertyError]{mango:error.PropertyError}} \newline
+ \textbf{multiplicity: 1} \newline
Error in the radial velocity. This error is meant to be symmetrical in the current model version.
- \subsubsection{EpochPositionErrors.position}
- \textbf{vodml-id: EpochPositionErrors.position} \newline
- \textbf{type: \hyperref[sect:error.PropertyError2D]{mango:error.PropertyError2D}} \newline
- \textbf{multiplicity: 0..1} \newline
- Position error; can be an ellipse, a correlation matrix or a covariance matrix.
-
\subsubsection{EpochPositionErrors.properMotion}
\textbf{vodml-id: EpochPositionErrors.properMotion} \newline
- \textbf{type: \hyperref[sect:error.PropertyError2D]{mango:error.PropertyError2D}} \newline
- \textbf{multiplicity: 0..1} \newline
+ \textbf{type: \hyperref[sect:error.PropertyError]{mango:error.PropertyError}} \newline
+ \textbf{multiplicity: 1} \newline
+ Position error; can be an ellipse, a correlation matrix or a covariance matrix.
+
+ \subsubsection{EpochPositionErrors.Position}
+ \textbf{vodml-id: EpochPositionErrors.Position} \newline
+ \textbf{type: \hyperref[sect:error.PropertyError]{mango:error.PropertyError}} \newline
+ \textbf{multiplicity: 1} \newline
Position error; can be an ellipse, a correlation matrix or a covariance matrix.
\subsection{Label}
@@ -328,7 +338,7 @@ \section{Model: mango }
\textbf{vodml-id: MangoObject.propertyDock} \newline
\textbf{type: \hyperref[sect:Property]{mango:Property}} \newline
\textbf{multiplicity: 0..*} \newline
- Reference to the open-ended collection of the \texttt{MangoObject} properties (physical or calculated).
+ Contains the open-ended collection of the \texttt{MangoObject} properties (physical, calculated or assigned).
\subsubsection{MangoObject.dataOrigin}
\textbf{vodml-id: MangoObject.dataOrigin} \newline
@@ -344,7 +354,7 @@ \section{Model: mango }
\subsection{PhotometricProperty}
\label{sect:PhotometricProperty}
- Observed brightness of the \texttt{MangoObject}. The distinction between fluxes and magnitudes is made by the unit. This property should refer to a photometric calibration as defined by the \texttt{Phot} data model (1.1).
+ Super class for all photometric properties of the \texttt{MangoObject}.
\subsubsection{PhotometricProperty.value}
\textbf{vodml-id: PhotometricProperty.value} \newline
@@ -355,14 +365,8 @@ \section{Model: mango }
\subsubsection{PhotometricProperty.error}
\textbf{vodml-id: PhotometricProperty.error} \newline
\textbf{type: meas:Uncertainty} \newline
- \textbf{multiplicity: 0..1} \newline
- Error on the \texttt{PhotometricProperty}, imported from \texttt{meas:Uncertainty}.
-
- \subsubsection{PhotometricProperty.photCal}
- \textbf{vodml-id: PhotometricProperty.photCal} \newline
- \textbf{type: Phot:PhotCal} \newline
\textbf{multiplicity: 1} \newline
- Photometric calibration that applies to the photometric property. It must be an instance of \texttt{photdm:PhotCal}.
+ Error on the \texttt{PhotometricProperty}, imported from \texttt{meas:Uncertainty}.
\subsection{PhysicalProperty}
\label{sect:PhysicalProperty}
@@ -370,9 +374,9 @@ \section{Model: mango }
\subsubsection{PhysicalProperty.calibrationLevel}
\textbf{vodml-id: PhysicalProperty.calibrationLevel} \newline
- \textbf{type: \hyperref[sect:CalibrationLevel]{mango:CalibrationLevel}} \newline
+ \textbf{type: } \newline
\textbf{multiplicity: 1} \newline
- Calibration level of the property as defined in ObsCore \citep{2011ivoa.spec.1028T}.
+ Calibration level of the property as defined in \url{https://www.ivoa.net/rdf/processing-level/2024-11-12/processing-level.html}
\subsubsection{PhysicalProperty.measure}
\textbf{vodml-id: PhysicalProperty.measure} \newline
@@ -382,7 +386,7 @@ \section{Model: mango }
\subsection{Property}
\label{sect:Property}
- Class holder for a particular property, either physical or calculated, of the MANGO object. This class specifies both type and role of the property, and hosts the property instance itself.
+ Class holder for a \textit{flavor} of property’ ie: there should be a Property subclass for each \textit{flavor} of Property being hosted. The property types are not limited to “physical or calculated” (eg: flags, assigned labels) This class specifies both type and role of the property, and hosts the property instance itself.
\noindent \textbf{constraint} \newline
\indent \textbf{detail: Property.One association at the time
@@ -392,19 +396,19 @@ \section{Model: mango }
\subsubsection{Property.semantics}
\textbf{vodml-id: Property.semantics} \newline
\textbf{type: \hyperref[sect:VocabularyTerm]{mango:VocabularyTerm}} \newline
- \textbf{multiplicity: 1} \newline
- Reference to a semantic concept giving the nature of the property or of the set made of the property and its associated properties. The semantics field contains a URI for a concept that describes the meaning of the property. This attribute is intended to be machine-readable and to assist automated link selection, presentation, and usage. The value is always interpreted as a URI; relative URIs (Berners-Lee and Fielding et al., 2005) are completed using the base URI of the core DataLink vocabulary, http://www.ivoa.net/rdf/datalink/core. Terms from this vocabulary must always be written as relative URIs. This means that for concepts from the core vocabulary, the value in the semantics fieldz always starts with a hash. (datalink1.1). The semantic concept apply to a single property or to the set made of the property and its associated properties (e.g. position and flag).
+ \textbf{multiplicity: 0..1} \newline
+ Reference to a semantic concept giving the nature of the property or of the set made of the property and its associated properties. The semantics field contains a URI for a concept that describes the meaning of the property. This attribute is intended to be machine-readable and to assist automated link selection, presentation, and usage. The value is always interpreted as a URI; relative URIs (Berners-Lee and Fielding et al., 2005) are completed using the base URI of the core DataLink vocabulary, http://www.ivoa.net/rdf/datalink/core. Terms from this vocabulary must always be written as relative URIs. This means that for concepts from the core vocabulary, the value in the semantics fieldz always starts with a hash. (datalink1.1). The semantics concept applies to a single property or to the set made of the property and its associated properties (e.g. position and flag).
\subsubsection{Property.description}
\textbf{vodml-id: Property.description} \newline
\textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
- \textbf{multiplicity: 1} \newline
+ \textbf{multiplicity: 0..1} \newline
Free text description of the property or of the set made of the property and its associated properties.
\subsubsection{Property.associatedProperties}
\textbf{vodml-id: Property.associatedProperties} \newline
\textbf{type: \hyperref[sect:Property]{mango:Property}} \newline
- \textbf{multiplicity: 1..*} \newline
+ \textbf{multiplicity: 0..*} \newline
Open-ended collection of MANGO properties associated with the \texttt{MangoObject}. These relationships are typically used to associate physical properties with time stamps and/or quality factors.
\subsection{Shape}
@@ -426,7 +430,7 @@ \section{Model: mango }
\subsubsection{Shape.spaceSys}
\textbf{vodml-id: Shape.spaceSys} \newline
\textbf{type: coords:SpaceSys} \newline
- \textbf{multiplicity: 0..1} \newline
+ \textbf{multiplicity: 1} \newline
Coordinate system that applies for the shape
\subsection{Status}
@@ -442,7 +446,7 @@ \section{Model: mango }
\subsubsection{Status.allowedValues}
\textbf{vodml-id: Status.allowedValues} \newline
\textbf{type: \hyperref[sect:StatusValues]{mango:StatusValues}} \newline
- \textbf{multiplicity: 0..1} \newline
+ \textbf{multiplicity: 1} \newline
List of the allowed values for the status. Each value has its own free text description.
\subsection{StatusValue}
@@ -484,27 +488,9 @@ \section{Model: mango }
\subsubsection{VocabularyTerm.label}
\textbf{vodml-id: VocabularyTerm.label} \newline
\textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
- \textbf{multiplicity: 1} \newline
+ \textbf{multiplicity: 0..1} \newline
Label attached to the vocabulary term. This is necessary because the URI may not contain any explicit label. This was the case for the IUA vocabulary until the Registry WG introduced rewriting rules that fix the issue.
- \subsection{ShapeFrame}
- \label{sect:ShapeFrame}
-
- Possible schemes to encode a shape in a string
-
- \noindent \underline{Enumeration Literals}
- \vspace{-\parsep}
- \small
- \begin{itemize}
-
- \item[\textbf{STC\_S}]: \textbf{vodml-id:} ShapeFrame.STC\_S \newline
- \textbf{description:} MOC serialization
- \item[\textbf{MOC}]: \textbf{vodml-id:} ShapeFrame.MOC \newline
- \textbf{description:} MOC serialization
- \end{itemize}
- \normalsize
-
-
\subsection{ShapeSerialization}
\label{sect:ShapeSerialization}
@@ -525,26 +511,6 @@ \section{Model: mango }
\normalsize
- \subsection{CalibrationLevel}
- \label{sect:CalibrationLevel}
-
- Enumeration of different possible calibration status of the property as defined in Obscore
-
- \noindent \underline{Enumeration Literals}
- \vspace{-\parsep}
- \small
- \begin{itemize}
-
- \item[\textbf{Raw}]: \textbf{vodml-id:} CalibrationLevel.Raw \newline
- \textbf{description:} Raw instrumental data, in a proprietary or internal data provider defined format, that needs instrument specific tools to be handled (ObsCore)
- \item[\textbf{Instrumental}]: \textbf{vodml-id:} CalibrationLevel.Instrumental \newline
- \textbf{description:} Instrumental data in a standard format which could be manipulated with standard astronomical packages (ObsCore).
- \item[\textbf{Calibrated}]: \textbf{vodml-id:} CalibrationLevel.Calibrated \newline
- \textbf{description:} Science ready data with the instrument signature removed (ObsCore)
- \end{itemize}
- \normalsize
-
-
\subsection{ColorDefinition}
\label{sect:ColorDefinition}
@@ -601,7 +567,7 @@ \section{Package: error }
\subsection{Ellipse}
\label{sect:error.Ellipse}
- Elliptic error for 2D parameters such as sky positions. Major axis and minor axis have their own units, which must be the same for both. This is not enforced by the model.
+ Elliptic error for 2D parameters such as sky positions. Major axis and minor axis have their own units, which must be the same for both. This is not enforced by the model. The definition of the ellipse attribute is imported from \texttt{coords:Ellipse}.
\subsubsection{Ellipse.semiMajorAxis}
\textbf{vodml-id: error.Ellipse.semiMajorAxis} \newline
@@ -675,9 +641,11 @@ \section{Package: error }
\textbf{multiplicity: 1} \newline
Confidence level of the error. The confidence level must be in $[0, 1]$ (not enforced by the VO-DML schema).
- \subsection{PropertyError2D (Abstract)}
- \label{sect:error.PropertyError2D}
- Super (abstract) class for all errors of 2D parameters
+ \subsubsection{PropertyError.distribution}
+ \textbf{vodml-id: error.PropertyError.distribution} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Statistical distribution of the error. The Value must comply with VO vocabulary TBD (not enforced by the VO-DML schema).
\subsection{Symmetric1D}
\label{sect:error.Symmetric1D}
diff --git a/doc/model_ordered.tex b/doc/model_ordered.tex
new file mode 100644
index 0000000..70efadc
--- /dev/null
+++ b/doc/model_ordered.tex
@@ -0,0 +1,785 @@
+\pagebreak
+
+\section{Model: mango}
+
+ \subsection{MangoObject}
+ \label{sect:MangoObject}
+ Central model class: applied to a data table, each row can be modelled as a \texttt{MangoObject} instance. Each \texttt{MangoObject} hosts a collection of physical or calculated parameters, a description of the data origin and an identifier.
+
+ \subsubsection{MangoObject.identifier}
+ \textbf{vodml-id: MangoObject.identifier} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Unique identifier of the \texttt{MangoObject}. The uniqueness of that identifier is not managed by the model. The format is free.
+
+ \subsubsection{MangoObject.propertyDock}
+ \textbf{vodml-id: MangoObject.propertyDock} \newline
+ \textbf{type: \hyperref[sect:Property]{mango:Property}} \newline
+ \textbf{multiplicity: 0..*} \newline
+ Reference to the open-ended collection of the \texttt{MangoObject} properties (physical or calculated).
+
+ \subsubsection{MangoObject.dataOrigin}
+ \textbf{vodml-id: MangoObject.dataOrigin} \newline
+ \textbf{type: \hyperref[sect:dataorigin.DataOrigin]{mango:dataorigin.DataOrigin}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Reference to the description of the origin of the \texttt{MangoObject}.
+
+ \subsubsection{MangoObject.associatedMangoObjects}
+ \textbf{vodml-id: MangoObject.associatedMangoObjects} \newline
+ \textbf{type: \hyperref[sect:AssociatedMangoObject]{mango:AssociatedMangoObject}} \newline
+ \textbf{multiplicity: 0..*} \newline
+ Abstract reference to a particular dataset associated to the MANGO entity. This class is used to specify the type of the associated dataset as well as its role.
+
+ \subsection{AssociatedMangoObject}
+ \label{sect:AssociatedMangoObject}
+ This class gives the role of a link associating 2 \texttt{MangoObject} together.
+
+ \subsubsection{AssociatedMangoObject.semantics}
+ \textbf{vodml-id: AssociatedMangoObject.semantics} \newline
+ \textbf{type: \hyperref[sect:VocabularyTerm]{mango:VocabularyTerm}} \newline
+ \textbf{multiplicity: 1} \newline
+ Semantic concept giving the nature of the data association.
+
+ \subsubsection{AssociatedMangoObject.description}
+ \textbf{vodml-id: AssociatedMangoObject.description} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Free text description of the data association
+
+ \subsubsection{AssociatedMangoObject.mangoObject}
+ \textbf{vodml-id: AssociatedMangoObject.mangoObject} \newline
+ \textbf{type: \hyperref[sect:MangoObject]{mango:MangoObject}} \newline
+ \textbf{multiplicity: 1} \newline
+ Reference to the associated \texttt{MangoObject}.
+
+ \subsection{Property}
+ \label{sect:Property}
+ Class holder for a particular property, either physical or calculated, of the MANGO object. This class specifies both type and role of the property, and hosts the property instance itself.
+ \noindent \textbf{constraint} \newline
+ \indent \textbf{detail: Property.One association at the time
+ }\newline
+
+ \subsubsection{Property.semantics}
+ \textbf{vodml-id: Property.semantics} \newline
+ \textbf{type: \hyperref[sect:VocabularyTerm]{mango:VocabularyTerm}} \newline
+ \textbf{multiplicity: 1} \newline
+ Reference to a semantic concept giving the nature of the property or of the set made of the property and its associated properties. The semantics field contains a URI for a concept that describes the meaning of the property. This attribute is intended to be machine-readable and to assist automated link selection, presentation, and usage. The value is always interpreted as a URI; relative URIs (Berners-Lee and Fielding et al., 2005) are completed using the base URI of the core DataLink vocabulary, http://www.ivoa.net/rdf/datalink/core. Terms from this vocabulary must always be written as relative URIs. This means that for concepts from the core vocabulary, the value in the semantics fieldz always starts with a hash. (datalink1.1). The semantic concept apply to a single property or to the set made of the property and its associated properties (e.g. position and flag).
+
+ \subsubsection{Property.description}
+ \textbf{vodml-id: Property.description} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Free text description of the property or of the set made of the property and its associated properties.
+
+ \subsubsection{Property.associatedProperties}
+ \textbf{vodml-id: Property.associatedProperties} \newline
+ \textbf{type: \hyperref[sect:Property]{mango:Property}} \newline
+ \textbf{multiplicity: 1..*} \newline
+ Open-ended collection of MANGO properties associated with the \texttt{MangoObject}. These relationships are typically used to associate physical properties with time stamps and/or quality factors.
+
+ \subsection{VocabularyTerm}
+ \label{sect:VocabularyTerm}
+ Class holder for a term of a standardized vocabulary that applies to a property.
+
+ \subsubsection{VocabularyTerm.uri}
+ \textbf{vodml-id: VocabularyTerm.uri} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ URI the vocabulary term
+
+ \subsubsection{VocabularyTerm.label}
+ \textbf{vodml-id: VocabularyTerm.label} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Label attached to the vocabulary term. This is necessary because the URI may not contain any explicit label. This was the case for the IUA vocabulary until the Registry WG introduced rewriting rules that fix the issue.
+
+\section{Epoch Position Properties}
+This section collects all the classes that model the case of epoch propagation.
+In addition to the 6 sky position parameters, it also models their correlation and the errors.
+ \subsection{EpochPosition}
+ \begin{figure}[h]
+ \includegraphics[width=1.0\textwidth]{../model/EpochPosition.png}
+ \caption{Class EpochPosition}
+ \label{fig:EpochPosition}
+ \end{figure}
+ \label{sect:EpochPosition}
+ This class (fig \ref{fig:EpochPosition}) is a view of \texttt{Astronomical Coordinates and Coordinate Systems} \citep{2022ivoa.specQ1004R} components that have been put together to form a consistent description of the position of an object moving over time. It consists of a celestial position, a proper motion, a radial velocity and a parallax. All components share the same coordinate systems for both time and space coordinates. \begin{itemize} \item Both position and proper motion reuse \texttt{coords:LonLatPoint} elements. \item The space coordinate system is imported from \texttt{coords:spaceSys}. \item The time coordinate system is imported from \texttt{coords:timeSys}. \end{itemize} The \texttt{EpochPosition} error is modeled by specific classes supporting covariance and/or correlation between components. All individual components have their own units which must be consistent to each others. This consistency is not enforced by the model. Possible correlations between \texttt{EpochPosition} parameters are handle by the \texttt{EpochPositionCorrelation} class.
+
+ \subsubsection{EpochPosition.longitude}
+ \textbf{vodml-id: EpochPosition.longitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ The longitude of the Point, as a Quantity with angular units (see \texttt{coords:LonLatPoint.lon}.
+
+ \subsubsection{EpochPosition.latitude}
+ \textbf{vodml-id: EpochPosition.latitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ The latitude of the Point, as a Quantity with angular units (see \texttt{coords:LonLatPoint.lat}.
+
+ \subsubsection{EpochPosition.parallax}
+ \textbf{vodml-id: EpochPosition.parallax} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ The measured parallax in the coordinate system of the \texttt{EpochPosition} instance.
+
+ \subsubsection{EpochPosition.radialVelocity}
+ \textbf{vodml-id: EpochPosition.radialVelocity} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ The measured Velocity along of the radius axis (see \texttt{meas:Velocity.coord} in \cite{2022ivoa.spec.1004R}).
+
+ \subsubsection{EpochPosition.pmLongitude}
+ \textbf{vodml-id: EpochPosition.pmLongitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Velocity along the longitude axis in angular distance per unit time (see \texttt{meas:ProperMotion.coord}). The current version of the model only allows a representation in the Polar coordinate space.
+
+ \subsubsection{EpochPosition.pmLatitude}
+ \textbf{vodml-id: EpochPosition.pmLatitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Velocity along the latitude axis in angular distance per unit time (see \texttt{meas:ProperMotion.coord}). The current version of the model only allows a representation in the Polar coordinate space.
+
+ \subsubsection{EpochPosition.epoch}
+ \textbf{vodml-id: EpochPosition.epoch} \newline
+ \textbf{type: coords:Epoch} \newline
+ \textbf{multiplicity: 1} \newline
+ Position epoch expressed within the common time system (see \texttt{coords:epoch})
+
+ \subsubsection{EpochPosition.pmCosLat\_applied}
+ \textbf{vodml-id: EpochPosition.pmCosLat\_applied} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:boolean}} \newline
+ \textbf{multiplicity: 1} \newline
+ It is common, though not universal, practice to quote longitudinal proper motion pre-multiplied by cos(latitude) so that the magnitude of the quantity is not affected by its longitudinal position. We do not constrain the value to one form or the other in this model. Instead, this flag enables providers to convey whether or not the factor has been applied (see \texttt{meas:ProperMotion.cosLat\_applied})
+
+ \subsubsection{EpochPosition.errors}
+ \textbf{vodml-id: EpochPosition.errors} \newline
+ \textbf{type: \hyperref[sect:EpochPositionErrors]{mango:EpochPositionErrors}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Reference to the combined errors of the \texttt{EpochPosition} components.
+
+ \subsubsection{EpochPosition.correlations}
+ \textbf{vodml-id: EpochPosition.correlations} \newline
+ \textbf{type: \hyperref[sect:EpochPositionCorrelations]{mango:EpochPositionCorrelations}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Reference to the correlations between the \texttt{EpochPosition} components.
+
+ \subsubsection{EpochPosition.spaceSys}
+ \textbf{vodml-id: EpochPosition.spaceSys} \newline
+ \textbf{type: coords:SpaceSys} \newline
+ \textbf{multiplicity: 0..1} \newline
+ System that applies the space coordinates.
+
+ \subsubsection{EpochPosition.timeSys}
+ \textbf{vodml-id: EpochPosition.timeSys} \newline
+ \textbf{type: coords:TimeSys} \newline
+ \textbf{multiplicity: 0..1} \newline
+ System that applies the time coordinates (the epoch).
+
+ \subsection{EpochPositionCorrelations}
+ \label{sect:EpochPositionCorrelations}
+ Class holder for the correlation coefficients between the \texttt{EpochPosition} components.
+
+ \subsubsection{EpochPositionCorrelations.longitudeParallax}
+ \textbf{vodml-id: EpochPositionCorrelations.longitudeParallax} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the position longitude and the parallax
+
+ \subsubsection{EpochPositionCorrelations.latitudeParallax}
+ \textbf{vodml-id: EpochPositionCorrelations.latitudeParallax} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the position latitude and the parallax
+
+ \subsubsection{EpochPositionCorrelations.pmLongitudeParallax}
+ \textbf{vodml-id: EpochPositionCorrelations.pmLongitudeParallax} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the proper motion longitude and the parallax
+
+ \subsubsection{EpochPositionCorrelations.pmLatitudeParallax}
+ \textbf{vodml-id: EpochPositionCorrelations.pmLatitudeParallax} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the proper motion latitude and the parallax
+
+ \subsubsection{EpochPositionCorrelations.longitudeLatitude}
+ \textbf{vodml-id: EpochPositionCorrelations.longitudeLatitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the position longitude and the position latitude
+
+ \subsubsection{EpochPositionCorrelations.pmLongitudePmLatitude}
+ \textbf{vodml-id: EpochPositionCorrelations.pmLongitudePmLatitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the proper motion longitude and the proper motion latitude
+
+ \subsubsection{EpochPositionCorrelations.latitudePmLatitude}
+ \textbf{vodml-id: EpochPositionCorrelations.latitudePmLatitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the position latitude and the proper motion latitude
+
+ \subsubsection{EpochPositionCorrelations.latitudePmLongitude}
+ \textbf{vodml-id: EpochPositionCorrelations.latitudePmLongitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the position latitude and the proper motion longitude
+
+ \subsubsection{EpochPositionCorrelations.longitudePmLatitude}
+ \textbf{vodml-id: EpochPositionCorrelations.longitudePmLatitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the position longitude and the proper motion latitude
+
+ \subsubsection{EpochPositionCorrelations.longitudePmLongitude}
+ \textbf{vodml-id: EpochPositionCorrelations.longitudePmLongitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the position longitude and the proper motion longitude
+
+ \subsubsection{EpochPositionCorrelations.isCovariance}
+ \textbf{vodml-id: EpochPositionCorrelations.isCovariance} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:boolean}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Boolean telling whether the correlations must be interpreted as covariance or as correlation coefficients.
+
+ \subsection{EpochPositionErrors}
+ \label{sect:EpochPositionErrors}
+ Class holder for the errors of the EpochPosition attributes
+
+ \subsubsection{EpochPositionErrors.parallax}
+ \textbf{vodml-id: EpochPositionErrors.parallax} \newline
+ \textbf{type: \hyperref[sect:error.PropertyError]{mango:error.PropertyError}} \newline
+ \textbf{multiplicity: 1} \newline
+ Parallax error. This error is meant to be symmetrical in the current model version.
+
+ \subsubsection{EpochPositionErrors.radialVelocity}
+ \textbf{vodml-id: EpochPositionErrors.radialVelocity} \newline
+ \textbf{type: \hyperref[sect:error.PropertyError]{mango:error.PropertyError}} \newline
+ \textbf{multiplicity: 1} \newline
+ Error in the radial velocity. This error is meant to be symmetrical in the current model version.
+
+ \subsubsection{EpochPositionErrors.properMotion}
+ \textbf{vodml-id: EpochPositionErrors.properMotion} \newline
+ \textbf{type: \hyperref[sect:error.PropertyError]{mango:error.PropertyError}} \newline
+ \textbf{multiplicity: 1} \newline
+ Position error; can be an ellipse, a correlation matrix or a covariance matrix.
+
+ \subsubsection{EpochPositionErrors.Position}
+ \textbf{vodml-id: EpochPositionErrors.Position} \newline
+ \textbf{type: \hyperref[sect:error.PropertyError]{mango:error.PropertyError}} \newline
+ \textbf{multiplicity: 1} \newline
+ Position error; can be an ellipse, a correlation matrix or a covariance matrix.
+
+\section{Photometric Properties}
+This section brings together all the classes that model the photometric properties.
+The definition of the photometric calibrations and the
+photometric filters are imported from PhotDM.
+ \subsection{PhotometricProperty}
+ \label{sect:PhotometricProperty}
+ Super class for all photometric properties of the \texttt{MangoObject}.
+
+ \subsubsection{PhotometricProperty.value}
+ \textbf{vodml-id: PhotometricProperty.value} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Value of the photometric property associated with a photometric calibration as defined by the \texttt{PhotDM} model.
+
+ \subsubsection{PhotometricProperty.error}
+ \textbf{vodml-id: PhotometricProperty.error} \newline
+ \textbf{type: meas:Uncertainty} \newline
+ \textbf{multiplicity: 1} \newline
+ Error on the \texttt{PhotometricProperty}, imported from \texttt{meas:Uncertainty}.
+
+ \subsection{Brightness}
+ \label{sect:Brightness}
+ Observed brightness of the \texttt{MangoObject}. The distinction between fluxes and magnitudes is made by the unit. This property should refer to a photometric calibration as defined by the \texttt{Phot} data model (1.1).
+
+ \subsubsection{Brightness.photCal}
+ \textbf{vodml-id: Brightness.photCal} \newline
+ \textbf{type: Phot:PhotCal} \newline
+ \textbf{multiplicity: 1} \newline
+ Photometric calibration that applies to the photometric property. It must be an instance of \texttt{photdm:PhotCal}.
+
+ \subsection{Color}
+ \label{sect:Color}
+ Property that describes a color of the \texttt{MangoObject}. The color is not an intrinsic property of the MANGO object, but a value relative to two filters or energy bands.
+
+ \subsubsection{Color.colorDef}
+ \textbf{vodml-id: Color.colorDef} \newline
+ \textbf{type: \hyperref[sect:ColorDef]{mango:ColorDef}} \newline
+ \textbf{multiplicity: 1} \newline
+ Reference to the physical definition of the color (can be either a difference of magnitudes or a hardness ratio).
+
+ \subsection{ColorDef}
+ \label{sect:ColorDef}
+ Physical color definition giving the way a color is calculated (magnitude difference or hardness ratio) and the filters on which the color is based. In case of hardness ratio, the energy bands might be modeled as instances of \texttt{Phot:PhotometryFilter} with a square transfert function.
+
+ \subsubsection{ColorDef.definition}
+ \textbf{vodml-id: ColorDef.definition} \newline
+ \textbf{type: \hyperref[sect:ColorDefinition]{mango:ColorDefinition}} \newline
+ \textbf{multiplicity: 1} \newline
+ Attribute giving the way the color is calculated (magnitude difference or hardness ratio).
+
+ \subsubsection{ColorDef.high}
+ \textbf{vodml-id: ColorDef.high} \newline
+ \textbf{type: Phot:PhotometryFilter} \newline
+ \textbf{multiplicity: 1} \newline
+ Reference to the \texttt{Phot:PhotometryFilter} \citep{2022ivoa.spec.1101S} corresponding the higher band of the color.
+
+ \subsubsection{ColorDef.low}
+ \textbf{vodml-id: ColorDef.low} \newline
+ \textbf{type: Phot:PhotometryFilter} \newline
+ \textbf{multiplicity: 1} \newline
+ Reference to the \texttt{Phot:PhotometryFilter} corresponding the lower band for that color.
+
+ \subsection{ColorDefinition}
+ \label{sect:ColorDefinition}
+ Enumeration of the different types of colors supported by the model.
+ \noindent \underline{Enumeration Literals}
+ \vspace{-\parsep}
+ \small
+ \begin{itemize}
+ \item[\textbf{ColorIndex}]: \textbf{vodml-id:} ColorDefinition.ColorIndex \newline
+ \textbf{description:} Difference of magnitudes: typically $M_B - M_v$
+ \item[\textbf{HardnessRatio}]: \textbf{vodml-id:} ColorDefinition.HardnessRatio \newline
+ \textbf{description:} Normalized ratio of fluxes: $(F_{EB2} - F_{EB1}) / (F_{EB2} + F_{EB1})$
+ \end{itemize}
+ \normalsize
+
+\section{Physical Properties}
+
+ \subsection{PhysicalProperty}
+ \label{sect:PhysicalProperty}
+ Place holder for any quantity that can be hold by measure classes as defined in the \texttt{Astronomical Measurements Model}.
+
+ \subsubsection{PhysicalProperty.calibrationLevel}
+ \textbf{vodml-id: PhysicalProperty.calibrationLevel} \newline
+ \textbf{type: \hyperref[sect:CalibrationLevel]{mango:CalibrationLevel}} \newline
+ \textbf{multiplicity: 1} \newline
+ Calibration level of the property as defined in ObsCore \citep{2011ivoa.spec.1028T}.
+
+ \subsubsection{PhysicalProperty.measure}
+ \textbf{vodml-id: PhysicalProperty.measure} \newline
+ \textbf{type: meas:Measure} \newline
+ \textbf{multiplicity: 1} \newline
+ Instance of \texttt{Astronomical Measurements Model} that holds the Property value(s).
+
+ \subsection{CalibrationLevel}
+ \label{sect:CalibrationLevel}
+ Enumeration of different possible calibration status of the property as defined in Obscore
+ \noindent \underline{Enumeration Literals}
+ \vspace{-\parsep}
+ \small
+ \begin{itemize}
+ \item[\textbf{Raw}]: \textbf{vodml-id:} CalibrationLevel.Raw \newline
+ \textbf{description:} Raw instrumental data, in a proprietary or internal data provider defined format, that needs instrument specific tools to be handled (ObsCore)
+ \item[\textbf{Instrumental}]: \textbf{vodml-id:} CalibrationLevel.Instrumental \newline
+ \textbf{description:} Instrumental data in a standard format which could be manipulated with standard astronomical packages (ObsCore).
+ \item[\textbf{Calibrated}]: \textbf{vodml-id:} CalibrationLevel.Calibrated \newline
+ \textbf{description:} Science ready data with the instrument signature removed (ObsCore)
+ \end{itemize}
+ \normalsize
+
+\section{Other Properties}
+
+ \subsection{Label}
+ \label{sect:Label}
+ Free text label seen as a MANGO object property.
+
+ \subsubsection{Label.text}
+ \textbf{vodml-id: Label.text} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Text of label property of the MANGO object.
+
+ \subsection{Status}
+ \label{sect:Status}
+ Property representing a status defined by a integer number that can only take on a defined number of values, each with its own description. Boolean status can be represented by \texttt{StatusValues} with 2 values e.g. 0 for False and 1 for True.
+
+ \subsubsection{Status.status}
+ \textbf{vodml-id: Status.status} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:integer}} \newline
+ \textbf{multiplicity: 1} \newline
+ Actual value of the status
+
+ \subsubsection{Status.allowedValues}
+ \textbf{vodml-id: Status.allowedValues} \newline
+ \textbf{type: \hyperref[sect:StatusValues]{mango:StatusValues}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ List of the allowed values for the status. Each value has its own free text description.
+
+ \subsection{StatusValues}
+ \label{sect:StatusValues}
+ Class holder for the list of the allowed values for the status.
+
+ \subsubsection{StatusValues.values}
+ \textbf{vodml-id: StatusValues.values} \newline
+ \textbf{type: \hyperref[sect:StatusValue]{mango:StatusValue}} \newline
+ \textbf{multiplicity: 1..*} \newline
+ List of the allowed values for the status; each value has its own textual description.
+
+ \subsection{StatusValue}
+ \label{sect:StatusValue}
+ Value allowed for a status; contain the value with a free text description.
+
+ \subsubsection{StatusValue.value}
+ \textbf{vodml-id: StatusValue.value} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:integer}} \newline
+ \textbf{multiplicity: 1} \newline
+ Allowed value for a \texttt{Status}
+
+ \subsubsection{StatusValue.description}
+ \textbf{vodml-id: StatusValue.description} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Free text description of the allowed value for a \texttt{Status}
+
+ \subsection{BitField}
+ \label{sect:BitField}
+ Property for which each possible value is represented by a bit, so that multiple states can be contained in the same integer value. The possible values are defined in the associated \texttt{StatusValues}, which must correspond to a bit pattern (each value must be a power of 2). This constraint is not enforced by the model.
+
+ \subsection{DataLink}
+ \label{sect:DataLink}
+ This property describes static links pointing to some external data. This allows services that do not implement DataLink services to expose linked data as flattened DataLink (1.1) responses.
+
+ \subsubsection{DataLink.content\_type}
+ \textbf{vodml-id: DataLink.content\_type} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ mime type of the content the link returns (see DataLink 1.1)
+
+ \subsubsection{DataLink.access\_url}
+ \textbf{vodml-id: DataLink.access\_url} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:anyURI}} \newline
+ \textbf{multiplicity: 1} \newline
+ contains an URL for downloading a single resource. There is no restriction on the type of resource accessed by the links.
+
+ \subsubsection{DataLink.content\_qualifier}
+ \textbf{vodml-id: DataLink.content\_qualifier} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Gives the nature of the thing or service that is returned by the link. The value is always interpreted as a URI. If the access\_url references a data product, the content\_qualifier field should define its product type . In this case the content qualifier value always starts with a hash completing the \url{http://www.ivoa.net/rdf/datalink/product-type} base URI. For \texttt{MangoObject} not linking to data products, content\_qualifier’s interpretation will be different, and the default vocabulary will be inappropriate. Full concept URIs will have to be used in this case. (DataLink 1.1)
+
+ \subsubsection{DataLink.local\_semantics}
+ \textbf{vodml-id: DataLink.local\_semantics} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Allows for identification of corresponding rows for different IDs in the same DataLink service where the combination of semantics, content\_type and content\_qualifier is not sufficient to identify them (see DataLink 1.1).
+
+ \subsection{Shape}
+ \label{sect:Shape}
+ Description of the spatial extension of the MANGO object (for e.g. dust clouds)
+
+ \subsubsection{Shape.shape}
+ \textbf{vodml-id: Shape.shape} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ String serialization of the spatial extension of the \texttt{MangoObject}
+
+ \subsubsection{Shape.serialization}
+ \textbf{vodml-id: Shape.serialization} \newline
+ \textbf{type: \hyperref[sect:ShapeSerialization]{mango:ShapeSerialization}} \newline
+ \textbf{multiplicity: 1} \newline
+ Serialization mode of the spatial extension of the MANGO entity
+
+ \subsubsection{Shape.spaceSys}
+ \textbf{vodml-id: Shape.spaceSys} \newline
+ \textbf{type: coords:SpaceSys} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Coordinate system that applies for the shape
+
+ \subsection{ShapeFrame}
+ \label{sect:ShapeFrame}
+ Possible schemes to encode a shape in a string
+ \noindent \underline{Enumeration Literals}
+ \vspace{-\parsep}
+ \small
+ \begin{itemize}
+ \item[\textbf{STC\_S}]: \textbf{vodml-id:} ShapeFrame.STC\_S \newline
+ \textbf{description:} MOC serialization
+ \item[\textbf{MOC}]: \textbf{vodml-id:} ShapeFrame.MOC \newline
+ \textbf{description:} MOC serialization
+ \end{itemize}
+ \normalsize
+
+ \subsection{ShapeSerialization}
+ \label{sect:ShapeSerialization}
+ Enumeration of the supported serialization modes for the shapes
+ \noindent \underline{Enumeration Literals}
+ \vspace{-\parsep}
+ \small
+ \begin{itemize}
+ \item[\textbf{MOC}]: \textbf{vodml-id:} ShapeSerialization.MOC \newline
+ \textbf{description:} Label indicating that the shape has been serialized as a S-MOC
+ \item[\textbf{STCS}]: \textbf{vodml-id:} ShapeSerialization.STCS \newline
+ \textbf{description:} Label indicating that the shape has been serialized as a STC-S \citep{2007ivoa.spec.1030R} string
+ \item[\textbf{POLYGON}]: \textbf{vodml-id:} ShapeSerialization.POLYGON \newline
+ \textbf{description:} Label indicating that the shape has been serialized as a polygon (cf xtypes)
+ \end{itemize}
+ \normalsize
+
+\section{Package: error}
+
+ \subsection{Asymmetric1D}
+ \label{sect:error.Asymmetric1D}
+ Asymmetric error for 1D parameters
+
+ \subsubsection{Asymmetric1D.high}
+ \textbf{vodml-id: error.Asymmetric1D.high} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ High limit for the asymmetric error for 1D parameters
+
+ \subsubsection{Asymmetric1D.low}
+ \textbf{vodml-id: error.Asymmetric1D.low} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Low limit for the asymmetric error for 1D parameters
+
+ \subsection{Ellipse}
+ \label{sect:error.Ellipse}
+ Elliptic error for 2D parameters such as sky positions. Major axis and minor axis have their own units, which must be the same for both. This is not enforced by the model. The definition of the ellipse attribute is imported from \texttt{coords:Ellipse}.
+
+ \subsubsection{Ellipse.semiMajorAxis}
+ \textbf{vodml-id: error.Ellipse.semiMajorAxis} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Half of the ellipse major axis
+
+ \subsubsection{Ellipse.semiMinorAxis}
+ \textbf{vodml-id: error.Ellipse.semiMinorAxis} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Half of the ellipse minor axis
+
+ \subsubsection{Ellipse.angle}
+ \textbf{vodml-id: error.Ellipse.angle} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Angle between the North Polar Cape (NCP) and the major axis. This angle must be positive taking into account that angles are positive from North to the East. The angle has its own unit.
+
+ \subsection{ErrorCorrMatrix}
+ \label{sect:error.ErrorCorrMatrix}
+ Correlation matrix for the error of a 2D quantities. The correlation matrix is symmetrical.
+
+ \subsubsection{ErrorCorrMatrix.sigma1}
+ \textbf{vodml-id: error.ErrorCorrMatrix.sigma1} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Error on the first dimension (right ascension in case of sky coordinates)
+
+ \subsubsection{ErrorCorrMatrix.sigma2}
+ \textbf{vodml-id: error.ErrorCorrMatrix.sigma2} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Error on the second dimension (declination in case of sky coordinates)
+
+ \subsubsection{ErrorCorrMatrix.correlation}
+ \textbf{vodml-id: error.ErrorCorrMatrix.correlation} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 1} \newline
+ Correlation coefficient between the 2 axis
+
+ \subsection{ErrorCovMatrix}
+ \label{sect:error.ErrorCovMatrix}
+ Covariance matrix for the error of a 2D quantities. The covariance matrix is symmetrical.
+
+ \subsubsection{ErrorCovMatrix.variance1}
+ \textbf{vodml-id: error.ErrorCovMatrix.variance1} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Variance of the first dimension (right ascension in case of sky coordinates)
+
+ \subsubsection{ErrorCovMatrix.variance2}
+ \textbf{vodml-id: error.ErrorCovMatrix.variance2} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Variance of the second dimension (declination in case of sky coordinates)
+
+ \subsubsection{ErrorCovMatrix.covariance}
+ \textbf{vodml-id: error.ErrorCovMatrix.covariance} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Covariance of the 2 axis
+
+ \subsection{PropertyError (Abstract)}
+ \label{sect:error.PropertyError}
+ Root (abstract) class of the errors that can be attached to a MANGO property. The class inherits from \texttt{meas:uncertainty} in order to be usable in the context of properties based on \texttt{Measures} classes.
+
+ \subsubsection{PropertyError.confidenceLevel}
+ \textbf{vodml-id: error.PropertyError.confidenceLevel} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 1} \newline
+ Confidence level of the error. The confidence level must be in $[0, 1]$ (not enforced by the VO-DML schema).
+
+ \subsubsection{PropertyError.distribution}
+ \textbf{vodml-id: error.PropertyError.distribution} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ TODO : Missing description : please, update your UML model asap.
+
+ \subsection{Symmetric1D}
+ \label{sect:error.Symmetric1D}
+ Symmetric error for 1D parameters
+
+ \subsubsection{Symmetric1D.sigma}
+ \textbf{vodml-id: error.Symmetric1D.sigma} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Amplitude of the symmetric error on a one-dimensional parameter
+
+\section{Package: dataorigin}
+
+ \subsection{Article}
+ \label{sect:dataorigin.Article}
+ Reference article for the MANGO entity
+
+ \subsubsection{Article.editor}
+ \textbf{vodml-id: dataorigin.Article.editor} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Name of the article editor
+
+ \subsubsection{Article.code}
+ \textbf{vodml-id: dataorigin.Article.code} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Bibcode or DOI of the reference article
+
+ \subsection{DataOrigin}
+ \label{sect:dataorigin.DataOrigin}
+ Class representing the origin of the data following the DCP note
+
+ \subsubsection{DataOrigin.citation}
+ \textbf{vodml-id: dataorigin.DataOrigin.citation} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Dataset identifier that can be used for citation (e.g. DOI)
+
+ \subsubsection{DataOrigin.reference\_url}
+ \textbf{vodml-id: dataorigin.DataOrigin.reference\_url} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Dataset landing page
+
+ \subsubsection{DataOrigin.resource\_version}
+ \textbf{vodml-id: dataorigin.DataOrigin.resource\_version} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Dataset version
+
+ \subsubsection{DataOrigin.creator}
+ \textbf{vodml-id: dataorigin.DataOrigin.creator} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Person(s) mainly involved in the creation of the resource, generally the author
+
+ \subsubsection{DataOrigin.cites}
+ \textbf{vodml-id: dataorigin.DataOrigin.cites} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Identifier (IVOID, DOI or Bibcode) of a second Resource using relation of type \texttt{cites} (\url{https://www.ivoa.net/rdf/voresource/relationship\_type/})
+
+ \subsubsection{DataOrigin.is\_derived\_from}
+ \textbf{vodml-id: dataorigin.DataOrigin.is\_derived\_from} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Identifier (IVOID, DOI or Bibcode) of a second resource using relation of type \texttt{is\_derived\_from} (\url{https://www.ivoa.net/rdf/voresource/relationship\_type/})
+
+ \subsubsection{DataOrigin.original\_date}
+ \textbf{vodml-id: dataorigin.DataOrigin.original\_date} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:datetime}} \newline
+ \textbf{multiplicity: 1} \newline
+ Date of the original resource from which the MANGO object is derived
+
+ \subsubsection{DataOrigin.query}
+ \textbf{vodml-id: dataorigin.DataOrigin.query} \newline
+ \textbf{type: \hyperref[sect:dataorigin.QueryOrigin]{mango:dataorigin.QueryOrigin}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Description of the request from which the data originates.
+
+ \subsubsection{DataOrigin.rights}
+ \textbf{vodml-id: dataorigin.DataOrigin.rights} \newline
+ \textbf{type: \hyperref[sect:dataorigin.License]{mango:dataorigin.License}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Reference to the rights that apply to the data.
+
+ \subsubsection{DataOrigin.article}
+ \textbf{vodml-id: dataorigin.DataOrigin.article} \newline
+ \textbf{type: \hyperref[sect:dataorigin.Article]{mango:dataorigin.Article}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Reference to the article from which the data originates.
+
+ \subsection{License}
+ \label{sect:dataorigin.License}
+ Place holder for the license covering the MANGO instance
+
+ \subsubsection{License.rights\_uri}
+ \textbf{vodml-id: dataorigin.License.rights\_uri} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Licence URI. Following Registry practice, this should come from SPDX https://spdx.org/licenses/, though Creative Commons URLs https://creativecommons.org are also admitted.
+
+ \subsubsection{License.rights}
+ \textbf{vodml-id: dataorigin.License.rights} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ License or Copyright text
+
+ \subsection{QueryOrigin}
+ \label{sect:dataorigin.QueryOrigin}
+ Description of the query the MANGO instance results from.
+
+ \subsubsection{QueryOrigin.ivoid}
+ \textbf{vodml-id: dataorigin.QueryOrigin.ivoid} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ IVOID of the underlying data collection
+
+ \subsubsection{QueryOrigin.publisher}
+ \textbf{vodml-id: dataorigin.QueryOrigin.publisher} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Data center that produced the MANGO instance
+
+ \subsubsection{QueryOrigin.server\_software}
+ \textbf{vodml-id: dataorigin.QueryOrigin.server\_software} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Version of the software the produced the MANGO object instance. It is encouraged to follow \url{https://ivoa.net/documents/Notes/softid/index.html}.
+
+ \subsubsection{QueryOrigin.service\_protocol}
+ \textbf{vodml-id: dataorigin.QueryOrigin.service\_protocol} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ IVOID \citep{2007ivoa.spec.0314P} of the protocol through which the data was retrieved
+
+ \subsubsection{QueryOrigin.request}
+ \textbf{vodml-id: dataorigin.QueryOrigin.request} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Full request URL including a query string. For the simple protocols,put the url-encoded form of the query parameters. For TAP queries, use the /sync UWS \citep{2016ivoa.spec.1024H} URL. The format is free for others request types.
+
+ \subsubsection{QueryOrigin.query}
+ \textbf{vodml-id: dataorigin.QueryOrigin.query} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Input query in a formal langage such as ADQL.equest types \citep{2023ivoa.spec.1215M}
+
+ \subsubsection{QueryOrigin.request\_date}
+ \textbf{vodml-id: dataorigin.QueryOrigin.request\_date} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:datetime}} \newline
+ \textbf{multiplicity: 1} \newline
+ Query execution date
+
+ \subsubsection{QueryOrigin.contact}
+ \textbf{vodml-id: dataorigin.QueryOrigin.contact} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Email or URL to contact the publisher
+
diff --git a/doc/model_toc.tex b/doc/model_toc.tex
new file mode 100644
index 0000000..6651946
--- /dev/null
+++ b/doc/model_toc.tex
@@ -0,0 +1,760 @@
+\pagebreak
+
+\section{Model: mango}
+
+ \subsection{MangoObject}
+ \label{sect:MangoObject}
+ Central model class: applied to a data table, each row can be modelled as a \texttt{MangoObject} instance. Each \texttt{MangoObject} hosts a collection of physical or calculated parameters, a description of the data origin and an identifier.
+
+ \subsubsection{MangoObject.identifier}
+ \textbf{vodml-id: MangoObject.identifier} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Unique identifier of the \texttt{MangoObject}. The uniqueness of that identifier is not managed by the model. The format is free.
+
+ \subsubsection{MangoObject.propertyDock}
+ \textbf{vodml-id: MangoObject.propertyDock} \newline
+ \textbf{type: \hyperref[sect:Property]{mango:Property}} \newline
+ \textbf{multiplicity: 0..*} \newline
+ Contains the open-ended collection of the \texttt{MangoObject} properties (physical, calculated or assigned).
+
+ \subsubsection{MangoObject.dataOrigin}
+ \textbf{vodml-id: MangoObject.dataOrigin} \newline
+ \textbf{type: \hyperref[sect:dataorigin.DataOrigin]{mango:dataorigin.DataOrigin}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Reference to the description of the origin of the \texttt{MangoObject}.
+
+ \subsubsection{MangoObject.associatedMangoObjects}
+ \textbf{vodml-id: MangoObject.associatedMangoObjects} \newline
+ \textbf{type: \hyperref[sect:AssociatedMangoObject]{mango:AssociatedMangoObject}} \newline
+ \textbf{multiplicity: 0..*} \newline
+ Abstract reference to a particular dataset associated to the MANGO entity. This class is used to specify the type of the associated dataset as well as its role.
+
+ \subsection{AssociatedMangoObject}
+ \label{sect:AssociatedMangoObject}
+ This class gives the role of a link associating 2 \texttt{MangoObject} together.
+
+ \subsubsection{AssociatedMangoObject.semantics}
+ \textbf{vodml-id: AssociatedMangoObject.semantics} \newline
+ \textbf{type: \hyperref[sect:VocabularyTerm]{mango:VocabularyTerm}} \newline
+ \textbf{multiplicity: 1} \newline
+ Semantic concept giving the nature of the data association.
+
+ \subsubsection{AssociatedMangoObject.description}
+ \textbf{vodml-id: AssociatedMangoObject.description} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Free text description of the data association
+
+ \subsubsection{AssociatedMangoObject.mangoObject}
+ \textbf{vodml-id: AssociatedMangoObject.mangoObject} \newline
+ \textbf{type: \hyperref[sect:MangoObject]{mango:MangoObject}} \newline
+ \textbf{multiplicity: 1} \newline
+ Reference to the associated \texttt{MangoObject}.
+
+ \subsection{Property}
+ \label{sect:Property}
+ Class holder for a \textit{flavor} of property’ ie: there should be a Property subclass for each \textit{flavor} of Property being hosted. The property types are not limited to “physical or calculated” (eg: flags, assigned labels) This class specifies both type and role of the property, and hosts the property instance itself.
+ \noindent \textbf{constraint} \newline
+ \indent \textbf{detail: Property.One association at the time
+ }\newline
+
+ \subsubsection{Property.semantics}
+ \textbf{vodml-id: Property.semantics} \newline
+ \textbf{type: \hyperref[sect:VocabularyTerm]{mango:VocabularyTerm}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Reference to a semantic concept giving the nature of the property or of the set made of the property and its associated properties. The semantics field contains a URI for a concept that describes the meaning of the property. This attribute is intended to be machine-readable and to assist automated link selection, presentation, and usage. The value is always interpreted as a URI; relative URIs (Berners-Lee and Fielding et al., 2005) are completed using the base URI of the core DataLink vocabulary, http://www.ivoa.net/rdf/datalink/core. Terms from this vocabulary must always be written as relative URIs. This means that for concepts from the core vocabulary, the value in the semantics fieldz always starts with a hash. (datalink1.1). The semantics concept applies to a single property or to the set made of the property and its associated properties (e.g. position and flag).
+
+ \subsubsection{Property.description}
+ \textbf{vodml-id: Property.description} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Free text description of the property or of the set made of the property and its associated properties.
+
+ \subsubsection{Property.associatedProperties}
+ \textbf{vodml-id: Property.associatedProperties} \newline
+ \textbf{type: \hyperref[sect:Property]{mango:Property}} \newline
+ \textbf{multiplicity: 0..*} \newline
+ Open-ended collection of MANGO properties associated with the \texttt{MangoObject}. These relationships are typically used to associate physical properties with time stamps and/or quality factors.
+
+ \subsection{VocabularyTerm}
+ \label{sect:VocabularyTerm}
+ Class holder for a term of a standardized vocabulary that applies to a property.
+
+ \subsubsection{VocabularyTerm.uri}
+ \textbf{vodml-id: VocabularyTerm.uri} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ URI the vocabulary term
+
+ \subsubsection{VocabularyTerm.label}
+ \textbf{vodml-id: VocabularyTerm.label} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Label attached to the vocabulary term. This is necessary because the URI may not contain any explicit label. This was the case for the IUA vocabulary until the Registry WG introduced rewriting rules that fix the issue.
+
+\section{Epoch Position Properties}
+This section collects all the classes that model the case of epoch propagation.
+In addition to the 6 sky position parameters, it also models their correlation and the errors.
+ \subsection{EpochPosition}
+ \begin{figure}[h]
+ \includegraphics[width=1.0\textwidth]{../model/EpochPosition.png}
+ \caption{Class EpochPosition}
+ \label{fig:EpochPosition}
+ \end{figure}
+ \label{sect:EpochPosition}
+ This class (fig \ref{fig:EpochPosition}) is a view of \texttt{Astronomical Coordinates and Coordinate Systems} \citep{2022ivoa.specQ1004R} components that have been put together to form a consistent description of the position of an object moving over time. It consists of a celestial position, a proper motion, a radial velocity and a parallax. All components share the same coordinate systems for both time and space coordinates. \begin{itemize} \item Both position and proper motion reuse \texttt{coords:LonLatPoint} elements. \item The space coordinate system is imported from \texttt{coords:spaceSys}. \item The time coordinate system is imported from \texttt{coords:timeSys}. \end{itemize} The \texttt{EpochPosition} error is modeled by specific classes supporting covariance and/or correlation between components. All individual components have their own units which must be consistent to each others. This consistency is not enforced by the model. Possible correlations between \texttt{EpochPosition} parameters are handle by the \texttt{EpochPositionCorrelation} class.
+
+ \subsubsection{EpochPosition.longitude}
+ \textbf{vodml-id: EpochPosition.longitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ The longitude of the Point, as a Quantity with angular units (see \texttt{coords:LonLatPoint.lon}.
+
+ \subsubsection{EpochPosition.latitude}
+ \textbf{vodml-id: EpochPosition.latitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ The latitude of the Point, as a Quantity with angular units (see \texttt{coords:LonLatPoint.lat}.
+
+ \subsubsection{EpochPosition.parallax}
+ \textbf{vodml-id: EpochPosition.parallax} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ The measured parallax in the coordinate system of the \texttt{EpochPosition} instance.
+
+ \subsubsection{EpochPosition.radialVelocity}
+ \textbf{vodml-id: EpochPosition.radialVelocity} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ The measured Velocity along of the radius axis (see \texttt{meas:Velocity.coord} in \cite{2022ivoa.spec.1004R}).
+
+ \subsubsection{EpochPosition.pmLongitude}
+ \textbf{vodml-id: EpochPosition.pmLongitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Velocity along the longitude axis in angular distance per unit time (see \texttt{meas:ProperMotion.coord}).
+
+ \subsubsection{EpochPosition.pmLatitude}
+ \textbf{vodml-id: EpochPosition.pmLatitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Velocity along the latitude axis in angular distance per unit time (see \texttt{meas:ProperMotion.coord}).
+
+ \subsubsection{EpochPosition.epoch}
+ \textbf{vodml-id: EpochPosition.epoch} \newline
+ \textbf{type: coords:Epoch} \newline
+ \textbf{multiplicity: 1} \newline
+ Position epoch expressed within the common time system (see \texttt{coords:Epoch})
+
+ \subsubsection{EpochPosition.pmCosLat\_applied}
+ \textbf{vodml-id: EpochPosition.pmCosLat\_applied} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:boolean}} \newline
+ \textbf{multiplicity: 1} \newline
+ It is common, though not universal, practice to quote longitudinal proper motion pre-multiplied by cos(latitude) so that the magnitude of the quantity is not affected by its longitudinal position. We do not constrain the value to one form or the other in this model. Instead, this flag enables providers to convey whether or not the factor has been applied (see \texttt{meas:ProperMotion.cosLat\_applied})
+
+ \subsubsection{EpochPosition.errors}
+ \textbf{vodml-id: EpochPosition.errors} \newline
+ \textbf{type: \hyperref[sect:EpochPositionErrors]{mango:EpochPositionErrors}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Reference to the combined errors of the \texttt{EpochPosition} components.
+
+ \subsubsection{EpochPosition.correlations}
+ \textbf{vodml-id: EpochPosition.correlations} \newline
+ \textbf{type: \hyperref[sect:EpochPositionCorrelations]{mango:EpochPositionCorrelations}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Reference to the correlations between the \texttt{EpochPosition} components.
+
+ \subsubsection{EpochPosition.spaceSys}
+ \textbf{vodml-id: EpochPosition.spaceSys} \newline
+ \textbf{type: coords:SpaceSys} \newline
+ \textbf{multiplicity: 0..1} \newline
+ System that applies the space coordinates.
+
+ \subsubsection{EpochPosition.timeSys}
+ \textbf{vodml-id: EpochPosition.timeSys} \newline
+ \textbf{type: coords:TimeSys} \newline
+ \textbf{multiplicity: 0..1} \newline
+ System that applies the time coordinates (the epoch).
+
+ \subsection{EpochPositionCorrelations}
+ \label{sect:EpochPositionCorrelations}
+ Class holder for the correlation coefficients between the \texttt{EpochPosition} components.
+
+ \subsubsection{EpochPositionCorrelations.longitudeParallax}
+ \textbf{vodml-id: EpochPositionCorrelations.longitudeParallax} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the position longitude and the parallax
+
+ \subsubsection{EpochPositionCorrelations.latitudeParallax}
+ \textbf{vodml-id: EpochPositionCorrelations.latitudeParallax} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the position latitude and the parallax
+
+ \subsubsection{EpochPositionCorrelations.pmLongitudeParallax}
+ \textbf{vodml-id: EpochPositionCorrelations.pmLongitudeParallax} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the proper motion longitude and the parallax
+
+ \subsubsection{EpochPositionCorrelations.pmLatitudeParallax}
+ \textbf{vodml-id: EpochPositionCorrelations.pmLatitudeParallax} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the proper motion latitude and the parallax
+
+ \subsubsection{EpochPositionCorrelations.longitudeLatitude}
+ \textbf{vodml-id: EpochPositionCorrelations.longitudeLatitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the position longitude and the position latitude
+
+ \subsubsection{EpochPositionCorrelations.pmLongitudePmLatitude}
+ \textbf{vodml-id: EpochPositionCorrelations.pmLongitudePmLatitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the proper motion longitude and the proper motion latitude
+
+ \subsubsection{EpochPositionCorrelations.latitudePmLatitude}
+ \textbf{vodml-id: EpochPositionCorrelations.latitudePmLatitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the position latitude and the proper motion latitude
+
+ \subsubsection{EpochPositionCorrelations.latitudePmLongitude}
+ \textbf{vodml-id: EpochPositionCorrelations.latitudePmLongitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the position latitude and the proper motion longitude
+
+ \subsubsection{EpochPositionCorrelations.longitudePmLatitude}
+ \textbf{vodml-id: EpochPositionCorrelations.longitudePmLatitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the position longitude and the proper motion latitude
+
+ \subsubsection{EpochPositionCorrelations.longitudePmLongitude}
+ \textbf{vodml-id: EpochPositionCorrelations.longitudePmLongitude} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Correlation (or covariance) coefficient between the position longitude and the proper motion longitude
+
+ \subsubsection{EpochPositionCorrelations.isCovariance}
+ \textbf{vodml-id: EpochPositionCorrelations.isCovariance} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:boolean}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Boolean telling whether the correlations must be interpreted as covariance or as correlation coefficients.
+
+ \subsection{EpochPositionErrors}
+ \label{sect:EpochPositionErrors}
+ Class holder for the errors of the EpochPosition attributes
+
+ \subsubsection{EpochPositionErrors.parallax}
+ \textbf{vodml-id: EpochPositionErrors.parallax} \newline
+ \textbf{type: \hyperref[sect:error.PropertyError]{mango:error.PropertyError}} \newline
+ \textbf{multiplicity: 1} \newline
+ Parallax error. This error is meant to be symmetrical in the current model version.
+
+ \subsubsection{EpochPositionErrors.radialVelocity}
+ \textbf{vodml-id: EpochPositionErrors.radialVelocity} \newline
+ \textbf{type: \hyperref[sect:error.PropertyError]{mango:error.PropertyError}} \newline
+ \textbf{multiplicity: 1} \newline
+ Error in the radial velocity. This error is meant to be symmetrical in the current model version.
+
+ \subsubsection{EpochPositionErrors.properMotion}
+ \textbf{vodml-id: EpochPositionErrors.properMotion} \newline
+ \textbf{type: \hyperref[sect:error.PropertyError]{mango:error.PropertyError}} \newline
+ \textbf{multiplicity: 1} \newline
+ Position error; can be an ellipse, a correlation matrix or a covariance matrix.
+
+ \subsubsection{EpochPositionErrors.Position}
+ \textbf{vodml-id: EpochPositionErrors.Position} \newline
+ \textbf{type: \hyperref[sect:error.PropertyError]{mango:error.PropertyError}} \newline
+ \textbf{multiplicity: 1} \newline
+ Position error; can be an ellipse, a correlation matrix or a covariance matrix.
+
+\section{Photometric Properties}
+This section brings together all the classes that model the photometric properties.
+The definition of the photometric calibrations and the
+photometric filters are imported from \texttt{PhotDM}.
+ \subsection{PhotometricProperty}
+ \label{sect:PhotometricProperty}
+ Super class for all photometric properties of the \texttt{MangoObject}.
+
+ \subsubsection{PhotometricProperty.value}
+ \textbf{vodml-id: PhotometricProperty.value} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Value of the photometric property associated with a photometric calibration as defined by the \texttt{PhotDM} model.
+
+ \subsubsection{PhotometricProperty.error}
+ \textbf{vodml-id: PhotometricProperty.error} \newline
+ \textbf{type: meas:Uncertainty} \newline
+ \textbf{multiplicity: 1} \newline
+ Error on the \texttt{PhotometricProperty}, imported from \texttt{meas:Uncertainty}.
+
+ \subsection{Brightness}
+ \label{sect:Brightness}
+ Observed brightness of the \texttt{MangoObject}. The distinction between fluxes and magnitudes is made by the unit. This property should refer to a photometric calibration as defined by the \texttt{Phot} data model (1.1).
+
+ \subsubsection{Brightness.photCal}
+ \textbf{vodml-id: Brightness.photCal} \newline
+ \textbf{type: Phot:PhotCal} \newline
+ \textbf{multiplicity: 1} \newline
+ Photometric calibration that applies to the photometric property. It must be an instance of \texttt{photdm:PhotCal}.
+
+ \subsection{Color}
+ \label{sect:Color}
+ Property that describes a color of the \texttt{MangoObject}. The color is not an intrinsic property of the MANGO object, but a value relative to two filters or energy bands.
+
+ \subsubsection{Color.colorDef}
+ \textbf{vodml-id: Color.colorDef} \newline
+ \textbf{type: \hyperref[sect:ColorDef]{mango:ColorDef}} \newline
+ \textbf{multiplicity: 1} \newline
+ Reference to the physical definition of the color (can be either a difference of magnitudes or a hardness ratio).
+
+ \subsection{ColorDef}
+ \label{sect:ColorDef}
+ Physical color definition giving the way a color is calculated (magnitude difference or hardness ratio) and the filters on which the color is based. In case of hardness ratio, the energy bands might be modeled as instances of \texttt{Phot:PhotometryFilter} with a square transfert function.
+
+ \subsubsection{ColorDef.definition}
+ \textbf{vodml-id: ColorDef.definition} \newline
+ \textbf{type: \hyperref[sect:ColorDefinition]{mango:ColorDefinition}} \newline
+ \textbf{multiplicity: 1} \newline
+ Attribute giving the way the color is calculated (magnitude difference or hardness ratio).
+
+ \subsubsection{ColorDef.high}
+ \textbf{vodml-id: ColorDef.high} \newline
+ \textbf{type: Phot:PhotometryFilter} \newline
+ \textbf{multiplicity: 1} \newline
+ Reference to the \texttt{Phot:PhotometryFilter} \citep{2022ivoa.spec.1101S} corresponding the higher band of the color.
+
+ \subsubsection{ColorDef.low}
+ \textbf{vodml-id: ColorDef.low} \newline
+ \textbf{type: Phot:PhotometryFilter} \newline
+ \textbf{multiplicity: 1} \newline
+ Reference to the \texttt{Phot:PhotometryFilter} corresponding the lower band for that color.
+
+ \subsection{ColorDefinition}
+ \label{sect:ColorDefinition}
+ Enumeration of the different types of colors supported by the model.
+ \noindent \underline{Enumeration Literals}
+ \vspace{-\parsep}
+ \small
+ \begin{itemize}
+ \item[\textbf{ColorIndex}]: \textbf{vodml-id:} ColorDefinition.ColorIndex \newline
+ \textbf{description:} Difference of magnitudes: typically $M_B - M_v$
+ \item[\textbf{HardnessRatio}]: \textbf{vodml-id:} ColorDefinition.HardnessRatio \newline
+ \textbf{description:} Normalized ratio of fluxes: $(F_{EB2} - F_{EB1}) / (F_{EB2} + F_{EB1})$
+ \end{itemize}
+ \normalsize
+
+\section{Physical Properties}
+This section brings together all the classes that are needed to
+host objects imported from the \texttt{Measurements} data model.
+ \subsection{PhysicalProperty}
+ \label{sect:PhysicalProperty}
+ Place holder for any quantity that can be hold by measure classes as defined in the \texttt{Astronomical Measurements Model}.
+
+ \subsubsection{PhysicalProperty.calibrationLevel}
+ \textbf{vodml-id: PhysicalProperty.calibrationLevel} \newline
+ \textbf{type: } \newline
+ \textbf{multiplicity: 1} \newline
+ Calibration level of the property as defined in \url{https://www.ivoa.net/rdf/processing-level/2024-11-12/processing-level.html}
+
+ \subsubsection{PhysicalProperty.measure}
+ \textbf{vodml-id: PhysicalProperty.measure} \newline
+ \textbf{type: meas:Measure} \newline
+ \textbf{multiplicity: 1} \newline
+ Instance of \texttt{Astronomical Measurements Model} that holds the Property value(s).
+
+ \subsection{CalibrationLevel}
+
+\section{Other Properties}
+
+ \subsection{Label}
+ \label{sect:Label}
+ Free text label seen as a MANGO object property.
+
+ \subsubsection{Label.text}
+ \textbf{vodml-id: Label.text} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Text of label property of the MANGO object.
+
+ \subsection{Status}
+ \label{sect:Status}
+ Property representing a status defined by a integer number that can only take on a defined number of values, each with its own description. Boolean status can be represented by \texttt{StatusValues} with 2 values e.g. 0 for False and 1 for True.
+
+ \subsubsection{Status.status}
+ \textbf{vodml-id: Status.status} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:integer}} \newline
+ \textbf{multiplicity: 1} \newline
+ Actual value of the status
+
+ \subsubsection{Status.allowedValues}
+ \textbf{vodml-id: Status.allowedValues} \newline
+ \textbf{type: \hyperref[sect:StatusValues]{mango:StatusValues}} \newline
+ \textbf{multiplicity: 1} \newline
+ List of the allowed values for the status. Each value has its own free text description.
+
+ \subsection{StatusValues}
+ \label{sect:StatusValues}
+ Class holder for the list of the allowed values for the status.
+
+ \subsubsection{StatusValues.values}
+ \textbf{vodml-id: StatusValues.values} \newline
+ \textbf{type: \hyperref[sect:StatusValue]{mango:StatusValue}} \newline
+ \textbf{multiplicity: 1..*} \newline
+ List of the allowed values for the status; each value has its own textual description.
+
+ \subsection{StatusValue}
+ \label{sect:StatusValue}
+ Value allowed for a status; contain the value with a free text description.
+
+ \subsubsection{StatusValue.value}
+ \textbf{vodml-id: StatusValue.value} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:integer}} \newline
+ \textbf{multiplicity: 1} \newline
+ Allowed value for a \texttt{Status}
+
+ \subsubsection{StatusValue.description}
+ \textbf{vodml-id: StatusValue.description} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Free text description of the allowed value for a \texttt{Status}
+
+ \subsection{BitField}
+ \label{sect:BitField}
+ Property for which each possible value is represented by a bit, so that multiple states can be contained in the same integer value. The possible values are defined in the associated \texttt{StatusValues}, which must correspond to a bit pattern (each value must be a power of 2). This constraint is not enforced by the model.
+
+ \subsection{DataLink}
+ \label{sect:DataLink}
+ This property describes static links pointing to some external data. This allows services that do not implement DataLink services to expose linked data as flattened DataLink (1.1) responses.
+
+ \subsubsection{DataLink.content\_type}
+ \textbf{vodml-id: DataLink.content\_type} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ mime type of the content the link returns (see DataLink 1.1)
+
+ \subsubsection{DataLink.access\_url}
+ \textbf{vodml-id: DataLink.access\_url} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:anyURI}} \newline
+ \textbf{multiplicity: 1} \newline
+ contains an URL for downloading a single resource. There is no restriction on the type of resource accessed by the links.
+
+ \subsubsection{DataLink.content\_qualifier}
+ \textbf{vodml-id: DataLink.content\_qualifier} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Gives the nature of the thing or service that is returned by the link. The value is always interpreted as a URI. If the access\_url references a data product, the content\_qualifier field should define its product type . In this case the content qualifier value always starts with a hash completing the \url{http://www.ivoa.net/rdf/datalink/product-type} base URI. For \texttt{MangoObject} not linking to data products, content\_qualifier’s interpretation will be different, and the default vocabulary will be inappropriate. Full concept URIs will have to be used in this case. (DataLink 1.1)
+
+ \subsubsection{DataLink.local\_semantics}
+ \textbf{vodml-id: DataLink.local\_semantics} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Allows for identification of corresponding rows for different IDs in the same DataLink service where the combination of semantics, content\_type and content\_qualifier is not sufficient to identify them (see DataLink 1.1).
+
+ \subsection{Shape}
+ \label{sect:Shape}
+ Description of the spatial extension of the MANGO object (for e.g. dust clouds)
+
+ \subsubsection{Shape.shape}
+ \textbf{vodml-id: Shape.shape} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ String serialization of the spatial extension of the \texttt{MangoObject}
+
+ \subsubsection{Shape.serialization}
+ \textbf{vodml-id: Shape.serialization} \newline
+ \textbf{type: \hyperref[sect:ShapeSerialization]{mango:ShapeSerialization}} \newline
+ \textbf{multiplicity: 1} \newline
+ Serialization mode of the spatial extension of the MANGO entity
+
+ \subsubsection{Shape.spaceSys}
+ \textbf{vodml-id: Shape.spaceSys} \newline
+ \textbf{type: coords:SpaceSys} \newline
+ \textbf{multiplicity: 1} \newline
+ Coordinate system that applies for the shape
+
+ \subsection{ShapeFrame}
+
+ \subsection{ShapeSerialization}
+ \label{sect:ShapeSerialization}
+ Enumeration of the supported serialization modes for the shapes
+ \noindent \underline{Enumeration Literals}
+ \vspace{-\parsep}
+ \small
+ \begin{itemize}
+ \item[\textbf{MOC}]: \textbf{vodml-id:} ShapeSerialization.MOC \newline
+ \textbf{description:} Label indicating that the shape has been serialized as a S-MOC
+ \item[\textbf{STCS}]: \textbf{vodml-id:} ShapeSerialization.STCS \newline
+ \textbf{description:} Label indicating that the shape has been serialized as a STC-S \citep{2007ivoa.spec.1030R} string
+ \item[\textbf{POLYGON}]: \textbf{vodml-id:} ShapeSerialization.POLYGON \newline
+ \textbf{description:} Label indicating that the shape has been serialized as a polygon (cf xtypes)
+ \end{itemize}
+ \normalsize
+
+\section{Package: error}
+
+ \subsection{Asymmetric1D}
+ \label{sect:error.Asymmetric1D}
+ Asymmetric error for 1D parameters
+
+ \subsubsection{Asymmetric1D.high}
+ \textbf{vodml-id: error.Asymmetric1D.high} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ High limit for the asymmetric error for 1D parameters
+
+ \subsubsection{Asymmetric1D.low}
+ \textbf{vodml-id: error.Asymmetric1D.low} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Low limit for the asymmetric error for 1D parameters
+
+ \subsection{Ellipse}
+ \label{sect:error.Ellipse}
+ Elliptic error for 2D parameters such as sky positions. Major axis and minor axis have their own units, which must be the same for both. This is not enforced by the model. The definition of the ellipse attribute is imported from \texttt{coords:Ellipse}.
+
+ \subsubsection{Ellipse.semiMajorAxis}
+ \textbf{vodml-id: error.Ellipse.semiMajorAxis} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Half of the ellipse major axis
+
+ \subsubsection{Ellipse.semiMinorAxis}
+ \textbf{vodml-id: error.Ellipse.semiMinorAxis} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Half of the ellipse minor axis
+
+ \subsubsection{Ellipse.angle}
+ \textbf{vodml-id: error.Ellipse.angle} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Angle between the North Polar Cape (NCP) and the major axis. This angle must be positive taking into account that angles are positive from North to the East. The angle has its own unit.
+
+ \subsection{ErrorCorrMatrix}
+ \label{sect:error.ErrorCorrMatrix}
+ Correlation matrix for the error of a 2D quantities. The correlation matrix is symmetrical.
+
+ \subsubsection{ErrorCorrMatrix.sigma1}
+ \textbf{vodml-id: error.ErrorCorrMatrix.sigma1} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Error on the first dimension (right ascension in case of sky coordinates)
+
+ \subsubsection{ErrorCorrMatrix.sigma2}
+ \textbf{vodml-id: error.ErrorCorrMatrix.sigma2} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Error on the second dimension (declination in case of sky coordinates)
+
+ \subsubsection{ErrorCorrMatrix.correlation}
+ \textbf{vodml-id: error.ErrorCorrMatrix.correlation} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 1} \newline
+ Correlation coefficient between the 2 axis
+
+ \subsection{ErrorCovMatrix}
+ \label{sect:error.ErrorCovMatrix}
+ Covariance matrix for the error of a 2D quantities. The covariance matrix is symmetrical.
+
+ \subsubsection{ErrorCovMatrix.variance1}
+ \textbf{vodml-id: error.ErrorCovMatrix.variance1} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Variance of the first dimension (right ascension in case of sky coordinates)
+
+ \subsubsection{ErrorCovMatrix.variance2}
+ \textbf{vodml-id: error.ErrorCovMatrix.variance2} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Variance of the second dimension (declination in case of sky coordinates)
+
+ \subsubsection{ErrorCovMatrix.covariance}
+ \textbf{vodml-id: error.ErrorCovMatrix.covariance} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Covariance of the 2 axis
+
+ \subsection{PropertyError (Abstract)}
+ \label{sect:error.PropertyError}
+ Root (abstract) class of the errors that can be attached to a MANGO property. The class inherits from \texttt{meas:uncertainty} in order to be usable in the context of properties based on \texttt{Measures} classes.
+
+ \subsubsection{PropertyError.confidenceLevel}
+ \textbf{vodml-id: error.PropertyError.confidenceLevel} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:real}} \newline
+ \textbf{multiplicity: 1} \newline
+ Confidence level of the error. The confidence level must be in $[0, 1]$ (not enforced by the VO-DML schema).
+
+ \subsubsection{PropertyError.distribution}
+ \textbf{vodml-id: error.PropertyError.distribution} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Statistical distribution of the error. The Value must comply with VO vocabulary TBD (not enforced by the VO-DML schema).
+
+ \subsection{Symmetric1D}
+ \label{sect:error.Symmetric1D}
+ Symmetric error for 1D parameters
+
+ \subsubsection{Symmetric1D.sigma}
+ \textbf{vodml-id: error.Symmetric1D.sigma} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:RealQuantity}} \newline
+ \textbf{multiplicity: 1} \newline
+ Amplitude of the symmetric error on a one-dimensional parameter
+
+\section{Package: dataorigin}
+
+ \subsection{Article}
+ \label{sect:dataorigin.Article}
+ Reference article for the MANGO entity
+
+ \subsubsection{Article.editor}
+ \textbf{vodml-id: dataorigin.Article.editor} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Name of the article editor
+
+ \subsubsection{Article.code}
+ \textbf{vodml-id: dataorigin.Article.code} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Bibcode or DOI of the reference article
+
+ \subsection{DataOrigin}
+ \label{sect:dataorigin.DataOrigin}
+ Class representing the origin of the data following the DCP note
+
+ \subsubsection{DataOrigin.citation}
+ \textbf{vodml-id: dataorigin.DataOrigin.citation} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Dataset identifier that can be used for citation (e.g. DOI)
+
+ \subsubsection{DataOrigin.reference\_url}
+ \textbf{vodml-id: dataorigin.DataOrigin.reference\_url} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Dataset landing page
+
+ \subsubsection{DataOrigin.resource\_version}
+ \textbf{vodml-id: dataorigin.DataOrigin.resource\_version} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Dataset version
+
+ \subsubsection{DataOrigin.creator}
+ \textbf{vodml-id: dataorigin.DataOrigin.creator} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Person(s) mainly involved in the creation of the resource, generally the author
+
+ \subsubsection{DataOrigin.cites}
+ \textbf{vodml-id: dataorigin.DataOrigin.cites} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Identifier (IVOID, DOI or Bibcode) of a second Resource using relation of type \texttt{cites} (\url{https://www.ivoa.net/rdf/voresource/relationship\_type/})
+
+ \subsubsection{DataOrigin.is\_derived\_from}
+ \textbf{vodml-id: dataorigin.DataOrigin.is\_derived\_from} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Identifier (IVOID, DOI or Bibcode) of a second resource using relation of type \texttt{is\_derived\_from} (\url{https://www.ivoa.net/rdf/voresource/relationship\_type/})
+
+ \subsubsection{DataOrigin.original\_date}
+ \textbf{vodml-id: dataorigin.DataOrigin.original\_date} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:datetime}} \newline
+ \textbf{multiplicity: 1} \newline
+ Date of the original resource from which the MANGO object is derived
+
+ \subsubsection{DataOrigin.query}
+ \textbf{vodml-id: dataorigin.DataOrigin.query} \newline
+ \textbf{type: \hyperref[sect:dataorigin.QueryOrigin]{mango:dataorigin.QueryOrigin}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Description of the request from which the data originates.
+
+ \subsubsection{DataOrigin.rights}
+ \textbf{vodml-id: dataorigin.DataOrigin.rights} \newline
+ \textbf{type: \hyperref[sect:dataorigin.License]{mango:dataorigin.License}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Reference to the rights that apply to the data.
+
+ \subsubsection{DataOrigin.article}
+ \textbf{vodml-id: dataorigin.DataOrigin.article} \newline
+ \textbf{type: \hyperref[sect:dataorigin.Article]{mango:dataorigin.Article}} \newline
+ \textbf{multiplicity: 0..1} \newline
+ Reference to the article from which the data originates.
+
+ \subsection{License}
+ \label{sect:dataorigin.License}
+ Place holder for the license covering the MANGO instance
+
+ \subsubsection{License.rights\_uri}
+ \textbf{vodml-id: dataorigin.License.rights\_uri} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Licence URI. Following Registry practice, this should come from SPDX https://spdx.org/licenses/, though Creative Commons URLs https://creativecommons.org are also admitted.
+
+ \subsubsection{License.rights}
+ \textbf{vodml-id: dataorigin.License.rights} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ License or Copyright text
+
+ \subsection{QueryOrigin}
+ \label{sect:dataorigin.QueryOrigin}
+ Description of the query the MANGO instance results from.
+
+ \subsubsection{QueryOrigin.ivoid}
+ \textbf{vodml-id: dataorigin.QueryOrigin.ivoid} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ IVOID of the underlying data collection
+
+ \subsubsection{QueryOrigin.publisher}
+ \textbf{vodml-id: dataorigin.QueryOrigin.publisher} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Data center that produced the MANGO instance
+
+ \subsubsection{QueryOrigin.server\_software}
+ \textbf{vodml-id: dataorigin.QueryOrigin.server\_software} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Version of the software the produced the MANGO object instance. It is encouraged to follow \url{https://ivoa.net/documents/Notes/softid/index.html}.
+
+ \subsubsection{QueryOrigin.service\_protocol}
+ \textbf{vodml-id: dataorigin.QueryOrigin.service\_protocol} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ IVOID \citep{2007ivoa.spec.0314P} of the protocol through which the data was retrieved
+
+ \subsubsection{QueryOrigin.request}
+ \textbf{vodml-id: dataorigin.QueryOrigin.request} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Full request URL including a query string. For the simple protocols,put the url-encoded form of the query parameters. For TAP queries, use the /sync UWS \citep{2016ivoa.spec.1024H} URL. The format is free for others request types.
+
+ \subsubsection{QueryOrigin.query}
+ \textbf{vodml-id: dataorigin.QueryOrigin.query} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Input query in a formal langage such as ADQL.equest types \citep{2023ivoa.spec.1215M}
+
+ \subsubsection{QueryOrigin.request\_date}
+ \textbf{vodml-id: dataorigin.QueryOrigin.request\_date} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:datetime}} \newline
+ \textbf{multiplicity: 1} \newline
+ Query execution date
+
+ \subsubsection{QueryOrigin.contact}
+ \textbf{vodml-id: dataorigin.QueryOrigin.contact} \newline
+ \textbf{type: \hyperref[sect:ivoa]{ivoa:string}} \newline
+ \textbf{multiplicity: 1} \newline
+ Email or URL to contact the publisher
+
diff --git a/mivot/mango/mango.AssociatedMangoObject.xml b/mivot/mango/mango.AssociatedMangoObject.xml
index f7d8250..bc3c974 100644
--- a/mivot/mango/mango.AssociatedMangoObject.xml
+++ b/mivot/mango/mango.AssociatedMangoObject.xml
@@ -13,7 +13,8 @@ a description of the data origin and an identifier." -->
-
diff --git a/mivot/mango/mango.BitField.xml b/mivot/mango/mango.BitField.xml
index 95a7ccc..1e7476e 100644
--- a/mivot/mango/mango.BitField.xml
+++ b/mivot/mango/mango.BitField.xml
@@ -11,15 +11,4 @@ This constraint is not enforced by the model." -->
-
-
-
-
-
-
-
-
-
-
diff --git a/mivot/mango/mango.Brightness.xml b/mivot/mango/mango.Brightness.xml
new file mode 100644
index 0000000..4317bc5
--- /dev/null
+++ b/mivot/mango/mango.Brightness.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mivot/mango/mango.ColorDef.xml b/mivot/mango/mango.ColorDef.xml
index 4377643..30f3639 100644
--- a/mivot/mango/mango.ColorDef.xml
+++ b/mivot/mango/mango.ColorDef.xml
@@ -6,6 +6,4 @@ with a square transfert function." -->
-
-
diff --git a/mivot/mango/mango.EpochPosition.xml b/mivot/mango/mango.EpochPosition.xml
index b66614f..0e4b34c 100644
--- a/mivot/mango/mango.EpochPosition.xml
+++ b/mivot/mango/mango.EpochPosition.xml
@@ -35,22 +35,14 @@ Possible correlations between \texttt{EpochPosition} parameters are handle by th
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/mivot/mango/mango.EpochPositionErrors.xml b/mivot/mango/mango.EpochPositionErrors.xml
index 4f4e6dd..440dfa3 100644
--- a/mivot/mango/mango.EpochPositionErrors.xml
+++ b/mivot/mango/mango.EpochPositionErrors.xml
@@ -1,19 +1,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/mivot/mango/mango.MangoObject.xml b/mivot/mango/mango.MangoObject.xml
index 8982464..9eacdfe 100644
--- a/mivot/mango/mango.MangoObject.xml
+++ b/mivot/mango/mango.MangoObject.xml
@@ -5,7 +5,8 @@ a description of the data origin and an identifier." -->
-
@@ -16,7 +17,8 @@ This class specifies both type and role of the property, and hosts the property
-
@@ -76,7 +78,8 @@ a description of the data origin and an identifier." -->
-
diff --git a/mivot/mango/mango.PhotometricProperty.xml b/mivot/mango/mango.PhotometricProperty.xml
index 181af78..ab610e2 100644
--- a/mivot/mango/mango.PhotometricProperty.xml
+++ b/mivot/mango/mango.PhotometricProperty.xml
@@ -1,7 +1,6 @@
-
+
@@ -10,5 +9,4 @@ This property should refer to a photometric calibration as defined by the \textt
-
diff --git a/mivot/mango/mango.PhysicalProperty.xml b/mivot/mango/mango.PhysicalProperty.xml
index 0f1bc6f..ec99952 100644
--- a/mivot/mango/mango.PhysicalProperty.xml
+++ b/mivot/mango/mango.PhysicalProperty.xml
@@ -7,8 +7,5 @@
-
-
-
diff --git a/mivot/mango/mango.Property.xml b/mivot/mango/mango.Property.xml
index 53c880c..4cdc6e9 100644
--- a/mivot/mango/mango.Property.xml
+++ b/mivot/mango/mango.Property.xml
@@ -1,5 +1,6 @@
-
diff --git a/mivot/mango/mango.error.Asymmetric1D.xml b/mivot/mango/mango.error.Asymmetric1D.xml
index c1fb757..313d4ab 100644
--- a/mivot/mango/mango.error.Asymmetric1D.xml
+++ b/mivot/mango/mango.error.Asymmetric1D.xml
@@ -2,6 +2,7 @@
+
diff --git a/mivot/mango/mango.error.Ellipse.xml b/mivot/mango/mango.error.Ellipse.xml
index de51379..84190fc 100644
--- a/mivot/mango/mango.error.Ellipse.xml
+++ b/mivot/mango/mango.error.Ellipse.xml
@@ -1,9 +1,10 @@
+This is not enforced by the model. The definition of the ellipse attribute is imported from \texttt{coords:Ellipse}. " -->
+
diff --git a/mivot/mango/mango.error.ErrorCorrMatrix.xml b/mivot/mango/mango.error.ErrorCorrMatrix.xml
index 9365792..347ef08 100644
--- a/mivot/mango/mango.error.ErrorCorrMatrix.xml
+++ b/mivot/mango/mango.error.ErrorCorrMatrix.xml
@@ -4,6 +4,7 @@ The correlation matrix is symmetrical.
" -->
+
diff --git a/mivot/mango/mango.error.ErrorCovMatrix.xml b/mivot/mango/mango.error.ErrorCovMatrix.xml
index 247e643..1372b44 100644
--- a/mivot/mango/mango.error.ErrorCovMatrix.xml
+++ b/mivot/mango/mango.error.ErrorCovMatrix.xml
@@ -3,6 +3,7 @@
The covariance matrix is symmetrical." -->
+
diff --git a/mivot/mango/mango.error.Symmetric1D.xml b/mivot/mango/mango.error.Symmetric1D.xml
index cc0fb32..cb93ee1 100644
--- a/mivot/mango/mango.error.Symmetric1D.xml
+++ b/mivot/mango/mango.error.Symmetric1D.xml
@@ -2,5 +2,6 @@
+
diff --git a/model/EpochPosition.png b/model/EpochPosition.png
index b65b2f4..26e0e60 100644
Binary files a/model/EpochPosition.png and b/model/EpochPosition.png differ
diff --git a/model/error.png b/model/error.png
index 126a230..110873d 100644
Binary files a/model/error.png and b/model/error.png differ
diff --git a/model/mango.xmi b/model/mango.xmi
index 89add5d..2251ca6 100644
--- a/model/mango.xmi
+++ b/model/mango.xmi
@@ -1,698 +1,638 @@
-
-
-
-
-
+
+
+
+
+
-
+
The purpose of MANGO, which stands for MO-del for AN-notating G-eneric O-objects, is to add an upper level of description to the tabular data of query responses. It allows metadata to be extended, complex quantities to be reconstructed from column values, and properties to be linked. It also allows to specify the origin af the data.
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
<Enter note text here>
-
-
-
-
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
Root class of the model. MANGO instances are meant of be Source instances.
A source is something with an identifier and two docks: one for the parameters and one for the associated data.
-
-
+
+
Composition link pointing on all parameters attached to the source.
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
Unique identifier for a Source.
The uniqueness of that identifier is not managed by the model.
The format is free.
-
-
+
+
-
-
+
+
-
-
+
+
Class for associated data referenced by an URL
-
-
-
+
+
+
Mime type of the URL
-
-
+
+
Web endpoint
-
-
+
+
-
-
+
+
Reference to another MANGO instance that is part of the associated data.
-
-
+
+
Composition link pointing on one MANGO instance associated with the source.
-
-
+
+
Reference to a semantic concept giving the nature of the associated data.
As long as the vocabulary is not set, the possible values of this attribute are given by the LinkSemantic enumeration.
-
-
+
+
Free text description of the associated data
-
-
+
+
-
-
+
+
Reference to a particular measure of the Source.
This class is used to specify the type of the measure as well as its role.
-
-
+
+
<Enter note text here>
-
+
+
-
-
+
+
Reference to a semantic concept giving the nature of the parameter
As long as the vocabulary is not set, the possible values of this attribute are given by the ParamSemantic enumeration.
+
-
-
+
+
Free text description of the measure
+
-
-
-
+
+
+
-
-
- Possible options to encode a shape in a string.
-
-
-
-
- STCs serialisation
-
-
-
-
-
- MOC serialisation
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
-
-
+
+
+
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
+
+
-
-
-
-
-
-
-
-
- Science ready data with the instrument signature removed (ObsCore).
-
-
-
- Raw instrumental data, in a proprietary or internal data provider defined format, that needs instrument specific tools to be handled (ObsCore).
-
-
-
-
-
- Instrumental data in a standard format which could be manipulated with standard astronomical packages (ObsCore).
-
-
-
-
- Science ready data with the instrument signature removed (ObsCore).
-
-
-
+
+
+
+
+
-
-
+
+
Class grouping all parameters needed to define an object position at a given epoch. The space coordinate system is common to all attributes to insure the consistance between all of the instance parameters.
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Class for the error attached to a EpochPosition. The component in this class represent the errors of individual parameters as well as errors due to the parameter correlations.
-
-
- Parallax error. This error is meant to be symetrical.
-
-
-
-
-
- Error in the radial velocity. This error is meant to be symetrical.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
Root (abstract) class of the errors that can be attached to a MA?GO property. The class inherit from \texttt{meas:uncertainty} in order to be usable in the context of properties based on \texttt{Measures} classes.
-
-
-
+
+
+
Confidence level of the error, expressed in \sigma.
+
-
-
+
+
Symetrical error for 1D parameter.
-
-
-
+
+
+
Error amplitude.
-
-
+
+
Diagonal 2D matrix. Non diagonal elements are null.
-
-
-
+
+
+
First diagonal element ($(x_11)$)
-
-
+
+
Second diagonal element ($(x_22)$)
-
+
-
-
+
+
Elliptical errror for 2D parameters such as the sky positions.
-
-
-
+
+
+
Half of the ellipse major axis.
-
-
+
+
Half of the ellipse minor axis.
-
-
+
+
Angle between the North Polar Cape (NCP) and the major axis. This angle must be positive taking into account that angles are positive from North to the East. The angle has its own unit.
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
+
+
+
Difference of mangnitudes: typically $M_B - M_v$
-
-
+
+
Normalized ratio of fluxes: $(F_{EB2} - F_{EB1}) / (F_{EB2} + F_{EB1})$
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
<Enter note text here>s
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
Class representing the origin of the data following the DCP note (TBD)
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
Dataset idnetifier that can be used for citation (e.g. DOI)
-
-
+
+
Dataset landing page
-
-
+
+
Dataset version
-
-
+
+
Person(s) mainly involved in the creation of the resource, generally the author.
-
-
+
+
Identifier (IVOID, DOI or Bibcode) of a second resource using relation of type \texttt{cites} (\url{https://www.ivoa.net/rdf/voresource/relationship_type/})
-
-
+
+
Identifier (IVOID, DOI or Bibcode) of a second resource using relation of type \texttt{is_derived_from} (\url{https://www.ivoa.net/rdf/voresource/relationship_type/})
-
-
+
+
Date of the original resource from which the MANGO source instance is derived
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
Reference article for the MANGO source
-
-
+
+
Article editor name
-
-
+
+
Bibcode or DOI of the reference article
-
-
-
+
+
+
IVOID of the underlying data collection
-
-
+
+
Data center that produced the MANGOI source instance
-
-
+
+
Version of the software the produced the MANO source instance. It is encouraged to follow \url{https://ivoa.net/documents/Notes/softid/index.html}.
-
-
+
+
IVOID of the protocol through which the data was retrieved
-
-
+
+
Full request URL including a query string. For the simple protocols,put the url-encoded form of the query parameters. For TAP queries, use the /sync UWS URL. The format is free for others request types.
-
-
+
+
Input query in a formal langage such as ADQL.
-
-
+
+
Query execution date
-
-
+
+
Email or URL to contact the publisher
-
-
+
+
Place holder for the license covering the MANGO instance
-
-
+
+
Licence URI following the regostry practice. This should come from SPDX \url{https://spdx.org/licenses}. Creatives Commons (\url{https://creativecommons.org}) are also accepted.
-
-
+
+
License or Copyright text
-
-
-
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/model/property.png b/model/property.png
index 2617e74..b060e86 100644
Binary files a/model/property.png and b/model/property.png differ
diff --git a/utils/README.md b/utils/README.md
index 032be49..95425a1 100644
--- a/utils/README.md
+++ b/utils/README.md
@@ -13,7 +13,12 @@ The process is 3 steps:
- XSLT transform
- style sheet `ivoatex/vo-dml2ivoatex.xslt`
-
+- apply the custom TOC from `toc.json`
+ - edit the custom toc (new section must contain the `(added)` word
+ - The TEX document is rebuilt following that TOC
+ - The head text of the added section is in `vo-dml/sections`
+ ) The finlma TEX file is named model_toc.tex `model_toc.tex`
+
```bash
% python -m processVodml
% cd ../doc
diff --git a/utils/__pycache__/processVodml.cpython-310.pyc b/utils/__pycache__/processVodml.cpython-310.pyc
new file mode 100644
index 0000000..a68c8e7
Binary files /dev/null and b/utils/__pycache__/processVodml.cpython-310.pyc differ
diff --git a/utils/buildDoc.bash b/utils/buildDoc.bash
index 014034d..ca6b270 100755
--- a/utils/buildDoc.bash
+++ b/utils/buildDoc.bash
@@ -1,8 +1,11 @@
#! /bin/bash
-echo "build VODML"
+echo "----------- build VODML"
python -m processVodml
+echo "----------- Apply custom TOC"
+python -m processTOC
+
echo "build MIVOT snippets"
which mivot-snippet-model
diff --git a/utils/processTOC.py b/utils/processTOC.py
new file mode 100644
index 0000000..589f220
--- /dev/null
+++ b/utils/processTOC.py
@@ -0,0 +1,122 @@
+#
+# Rearrange model.tex by applying the input toc.json
+# - input: doc/model.text (generated from VODML)
+# - input: toc.json: table of content to be applied
+# - output: doc/model_ordered.tex Text file ready to be compiled
+#
+# Must be run from that folder
+#
+import os, re, json
+
+base_path = os.path.realpath(os.path.join(os.path.dirname(__file__), ".."))
+doc_path = os.path.join(base_path, "doc")
+tex_model_path = os.path.join(doc_path, "model.tex")
+tex_omodel_path = os.path.join(doc_path, "model_toc.tex")
+toc_path = os.path.realpath(os.path.join(os.path.dirname(__file__), "toc.json"))
+toc_org_path = os.path.realpath(os.path.join(os.path.dirname(__file__), "toc.org.json"))
+vodml_path = os.path.join(base_path, "vo-dml")
+desc_path = os.path.join(vodml_path, "sections")
+
+def extract_title(string):
+ """
+ return the (sub)section title extracted from the Latex tag
+ """
+ return re.search(r"\{(.*)\}", string).group(1).strip()
+
+def get_custom_content(searched_title):
+ """
+ extract the content of a (sub)section from a custom description if it exists
+ """
+ doc_title = searched_title.replace("(added)", "").strip().replace(" ", "_")
+ txt_path = os.path.join(desc_path, f"{doc_title}.txt")
+ if os.path.isfile(txt_path):
+ print(f"FOUND SECTION head file {txt_path}")
+ with open(txt_path) as file_reader:
+ return file_reader.read()
+ else:
+ print(f"SECTION head file {txt_path} not found: skip")
+ return ""
+
+def get_content(searched_title):
+ """
+ extract the content of a (sub)section out of the original document
+ or from a custom description
+ """
+ if ("added" in searched_title):
+ return get_custom_content(searched_title)
+
+ started = False
+ current_content = ""
+ with open(tex_model_path) as tmp:
+ while (line := tmp.readline()):
+ line = line.strip()
+ if not line or line.startswith("%") or line.startswith("\\page"):
+ continue
+ if line.startswith("\\section") or line.startswith("\\subsection"):
+ if started:
+ return current_content
+ if (title := extract_title(line)) == searched_title:
+ started = True
+ elif started:
+ if "subsub" in line:
+ current_content += "\n"
+ current_content += f" {line}\n"
+ return current_content
+
+def save_current_toc():
+ """
+ Print out the ToC of the current document
+ """
+ toc = {}
+ with open(tex_model_path) as tmp:
+ while (line := tmp.readline()):
+ line = line.strip()
+ if not line or line.startswith("%") or line.startswith("\\page"):
+ continue
+ if line.startswith("\\section"):
+ title = extract_title(line)
+ toc[title] = {"content": "", "subsections": {}}
+ current_section = toc[title]["subsections"]
+ if line.startswith("\\subsection"):
+ title = extract_title(line)
+ current_section[title] = {"content": ""}
+ with open(toc_org_path, "w") as writer:
+ print(f"Save the original TOC in {toc_org_path}")
+ writer.write(json.dumps(toc))
+
+def main():
+ """
+ do the job
+ """
+
+ toc = None
+ new_text = "\\pagebreak\n\n"
+
+ save_current_toc()
+ # read the new ToC
+ print(f"Read custom ToC from {toc_path}")
+
+ if not os.path.isfile(toc_path):
+ print("No custom TOC")
+ shutil.copy(tex_model_path, tex_omodel_path)
+ sys.exit(0)
+
+ with open(toc_path) as toc_file:
+ toc = json.loads(toc_file.read())
+
+ # build in memory the new doc (sub)section by section
+ print(f"Extract (sub)sections from {tex_model_path}")
+ for section, content in toc.items():
+ new_text += "\\section{" + section.replace("(added)", "").strip() + "}\n"
+ new_text += get_content(section) + "\n"
+ for subsection, _ in content.items():
+ new_text += " \\subsection{" + subsection + "}\n"
+ new_text += get_content(subsection) + "\n"
+
+ # save the new document
+ print(f"Write rearranged document in {tex_omodel_path}")
+ with open(tex_omodel_path, "w") as output:
+ output.write(new_text)
+
+if __name__ == "__main__":
+ main()
diff --git a/utils/toc.json b/utils/toc.json
new file mode 100644
index 0000000..4561994
--- /dev/null
+++ b/utils/toc.json
@@ -0,0 +1,49 @@
+{
+ "Model: mango ": {
+ "MangoObject": {},
+ "AssociatedMangoObject": {},
+ "Property": {},
+ "VocabularyTerm": {}
+ },
+ "Epoch Position Properties (added)": {
+ "EpochPosition": {},
+ "EpochPositionCorrelations": {},
+ "EpochPositionErrors": {}
+ },
+ "Photometric Properties (added)": {
+ "PhotometricProperty": {},
+ "Brightness": {},
+ "Color": {},
+ "ColorDef": {},
+ "ColorDefinition": {}
+ },
+ "Physical Properties (added)": {
+ "PhysicalProperty": {},
+ "CalibrationLevel": {}
+ },
+ "Other Properties (added)": {
+ "Label": {},
+ "Status": {},
+ "StatusValues": {},
+ "StatusValue": {},
+ "BitField": {},
+ "DataLink": {},
+ "Shape": {},
+ "ShapeFrame": {},
+ "ShapeSerialization": {}
+ },
+ "Package: error ": {
+ "Asymmetric1D": {},
+ "Ellipse": {},
+ "ErrorCorrMatrix": {},
+ "ErrorCovMatrix": {},
+ "PropertyError (Abstract)": {},
+ "Symmetric1D": {}
+ },
+ "Package: dataorigin ": {
+ "Article": {},
+ "DataOrigin": {},
+ "License": {},
+ "QueryOrigin": {}
+ }
+}
\ No newline at end of file
diff --git a/utils/toc.org.json b/utils/toc.org.json
new file mode 100644
index 0000000..041ceea
--- /dev/null
+++ b/utils/toc.org.json
@@ -0,0 +1 @@
+{"Model: mango": {"content": "", "subsections": {"AssociatedMangoObject": {"content": ""}, "BitField": {"content": ""}, "Brightness": {"content": ""}, "Color": {"content": ""}, "ColorDef": {"content": ""}, "DataLink": {"content": ""}, "EpochPosition": {"content": ""}, "EpochPositionCorrelations": {"content": ""}, "EpochPositionErrors": {"content": ""}, "Label": {"content": ""}, "MangoObject": {"content": ""}, "PhotometricProperty": {"content": ""}, "PhysicalProperty": {"content": ""}, "Property": {"content": ""}, "Shape": {"content": ""}, "Status": {"content": ""}, "StatusValue": {"content": ""}, "StatusValues": {"content": ""}, "VocabularyTerm": {"content": ""}, "ShapeSerialization": {"content": ""}, "ColorDefinition": {"content": ""}}}, "Package: error": {"content": "", "subsections": {"Asymmetric1D": {"content": ""}, "Ellipse": {"content": ""}, "ErrorCorrMatrix": {"content": ""}, "ErrorCovMatrix": {"content": ""}, "PropertyError (Abstract)": {"content": ""}, "Symmetric1D": {"content": ""}}}, "Package: dataorigin": {"content": "", "subsections": {"Article": {"content": ""}, "DataOrigin": {"content": ""}, "License": {"content": ""}, "QueryOrigin": {"content": ""}}}}
\ No newline at end of file
diff --git a/vo-dml/desc.mango.vo-dml.xml b/vo-dml/desc.mango.vo-dml.xml
index 6ab580e..71639a6 100644
--- a/vo-dml/desc.mango.vo-dml.xml
+++ b/vo-dml/desc.mango.vo-dml.xml
@@ -7,7 +7,7 @@
Laurent Michel, Fran??ois Bonnarel, Gilles Landais, Mireille Louys, Marco Molinaro, Jesue Salgado
1.0
0.0
- 2024-10-17T16:22:43
+ 2025-01-30T18:39:44
ivoa
http://www.ivoa.net/xml/VODML/IVOA-v1.vo-dml.xml
@@ -28,23 +28,6 @@
https://ivoa.net/xml/VODML/Phot-v1.vodml.xml
https://ivoa.net/documents/PHOTDM/20221101/index.html
-
- ShapeFrame
- ShapeFrame
- Possible schemes to encode a shape in a string
-
-
- ShapeFrame.STC_S
- STC_S
- MOC serialization
-
-
- ShapeFrame.MOC
- MOC
- MOC serialization
-
-
-
ShapeSerialization
ShapeSerialization
@@ -66,28 +49,6 @@
-
- CalibrationLevel
- CalibrationLevel
- Enumeration of different possible calibration status of the property as defined in Obscore
-
- CalibrationLevel.Raw
- Raw
- Raw instrumental data, in a proprietary or internal data provider defined format,
-that needs instrument specific tools to be handled (ObsCore)
-
-
- CalibrationLevel.Instrumental
- Instrumental
- Instrumental data in a standard format which could be manipulated with standard astronomical packages (ObsCore).
-
-
- CalibrationLevel.Calibrated
- Calibrated
- Science ready data with the instrument signature removed (ObsCore)
-
-
-
ColorDefinition
ColorDefinition
@@ -131,7 +92,7 @@ rewriting rules that fix the issue.
ivoa:string
- 1
+ 0
1
@@ -160,7 +121,7 @@ The format is free.
MangoObject.propertyDock
propertyDock
- Reference to the open-ended collection of the \texttt{MangoObject} properties (physical or calculated).
+ Contains the open-ended collection of the \texttt{MangoObject} properties (physical, calculated or assigned).
mango:Property
@@ -315,7 +276,8 @@ them (see DataLink 1.1).
Property
Property
- Class holder for a particular property, either physical or calculated, of the MANGO object.
+ Class holder for a \textit{flavor} of property’ ie: there should be a Property subclass for each \textit{flavor} of Property being hosted.
+The property types are not limited to “physical or calculated” (eg: flags, assigned labels)
This class specifies both type and role of the property, and hosts the property instance itself.
@@ -337,12 +299,12 @@ vocabulary, http://www.ivoa.net/rdf/datalink/core. Terms from this
vocabulary must always be written as relative URIs. This means that for
concepts from the core vocabulary, the value in the semantics fieldz always
starts with a hash. (datalink1.1).
-The semantic concept apply to a single property or to the set made of the property and its associated properties (e.g. position and flag).
+The semantics concept applies to a single property or to the set made of the property and its associated properties (e.g. position and flag).
mango:VocabularyTerm
- 1
+ 0
1
@@ -356,7 +318,7 @@ or of the set made of the property and its associated properties.
ivoa:string
- 1
+ 0
1
@@ -371,7 +333,7 @@ and/or quality factors.
mango:Property
- 1
+ 0
-1
@@ -398,7 +360,7 @@ Boolean status can be represented by \texttt{StatusValues} with 2 values e.g. 0
1
-
+
Status.allowedValues
allowedValues
List of the allowed values for the status.
@@ -407,10 +369,10 @@ Each value has its own free text description.
mango:StatusValues
- 0
+ 1
1
-
+
@@ -473,7 +435,7 @@ Each value has its own free text description.
coords:SpaceSys
- 0
+ 1
1
@@ -482,9 +444,8 @@ Each value has its own free text description.
PhotometricProperty
PhotometricProperty
- Observed brightness of the \texttt{MangoObject}.
-The distinction between fluxes and magnitudes is made by the unit.
-This property should refer to a photometric calibration as defined by the \texttt{Phot} data model (1.1).
+ Super class for all photometric properties of the \texttt{MangoObject}.
+
mango:Property
@@ -501,31 +462,18 @@ as defined by the \texttt{PhotDM} model.
1
-
+
PhotometricProperty.error
error
Error on the \texttt{PhotometricProperty}, imported from \texttt{meas:Uncertainty}.
meas:Uncertainty
-
- 0
- 1
-
-
-
- PhotometricProperty.photCal
- photCal
- Photometric calibration that applies to the photometric property.
-It must be an instance of \texttt{photdm:PhotCal}.
-
- Phot:PhotCal
-
1
1
-
+
@@ -539,10 +487,8 @@ It must be an instance of \texttt{photdm:PhotCal}.
PhysicalProperty.calibrationLevel
calibrationLevel
- Calibration level of the property as defined in ObsCore \citep{2011ivoa.spec.1028T}.
-
- mango:CalibrationLevel
-
+ Calibration level of the property as defined
+in \url{https://www.ivoa.net/rdf/processing-level/2024-11-12/processing-level.html}
1
1
@@ -608,7 +554,7 @@ with a square transfert function.
1
-
+
ColorDef.high
high
Reference to the \texttt{Phot:PhotometryFilter} \citep{2022ivoa.spec.1101S} corresponding the higher band of the color.
@@ -620,8 +566,8 @@ with a square transfert function.
1
1
-
-
+
+
ColorDef.low
low
Reference to the \texttt{Phot:PhotometryFilter} corresponding the lower band for that color.
@@ -633,7 +579,7 @@ with a square transfert function.
1
1
-
+
@@ -778,7 +724,6 @@ Possible correlations between \texttt{EpochPosition} parameters are handle by th
EpochPosition.pmLongitude
pmLongitude
Velocity along the longitude axis in angular distance per unit time (see \texttt{meas:ProperMotion.coord}).
-The current version of the model only allows a representation in the Polar coordinate space.
ivoa:RealQuantity
@@ -792,7 +737,6 @@ The current version of the model only allows a representation in the Polar coord
EpochPosition.pmLatitude
pmLatitude
Velocity along the latitude axis in angular distance per unit time (see \texttt{meas:ProperMotion.coord}).
-The current version of the model only allows a representation in the Polar coordinate space.
ivoa:RealQuantity
@@ -805,7 +749,7 @@ The current version of the model only allows a representation in the Polar coord
EpochPosition.epoch
epoch
- Position epoch expressed within the common time system (see \texttt{coords:epoch})
+ Position epoch expressed within the common time system (see \texttt{coords:Epoch})
coords:Epoch
@@ -883,54 +827,54 @@ providers to convey whether or not the factor has been applied (see \texttt{meas
EpochPositionErrors
EpochPositionErrors
Class holder for the errors of the EpochPosition attributes
-
+
EpochPositionErrors.parallax
parallax
Parallax error. This error is meant to be symmetrical in the current model version.
- mango:error.Symmetric1D
+ mango:error.PropertyError
- 0
+ 1
1
-
-
+
+
EpochPositionErrors.radialVelocity
radialVelocity
Error in the radial velocity. This error is meant to be symmetrical in the current model version.
- mango:error.Symmetric1D
+ mango:error.PropertyError
- 0
+ 1
1
-
-
- EpochPositionErrors.position
- position
+
+
+ EpochPositionErrors.properMotion
+ properMotion
Position error; can be an ellipse, a correlation matrix or a covariance matrix.
- mango:error.PropertyError2D
+ mango:error.PropertyError
- 0
+ 1
1
-
-
- EpochPositionErrors.properMotion
- properMotion
+
+
+ EpochPositionErrors.Position
+ Position
Position error; can be an ellipse, a correlation matrix or a covariance matrix.
- mango:error.PropertyError2D
+ mango:error.PropertyError
- 0
+ 1
1
-
+
@@ -1071,6 +1015,30 @@ providers to convey whether or not the factor has been applied (see \texttt{meas
+
+ Brightness
+ Brightness
+ Observed brightness of the \texttt{MangoObject}.
+The distinction between fluxes and magnitudes is made by the unit.
+This property should refer to a photometric calibration as defined by the \texttt{Phot} data model (1.1).
+
+ mango:PhotometricProperty
+
+
+ Brightness.photCal
+ photCal
+ Photometric calibration that applies to the photometric property.
+It must be an instance of \texttt{photdm:PhotCal}.
+
+ Phot:PhotCal
+
+
+ 1
+ 1
+
+
+
+
@@ -1102,6 +1070,19 @@ The confidence level must be in $[0, 1]$ (not enforced by the VO-DML schema).1
+
+ error.PropertyError.distribution
+ distribution
+ Statistical distribution of the error.
+The Value must comply with VO vocabulary TBD (not enforced by the VO-DML schema).
+
+ ivoa:string
+
+
+ 1
+ 1
+
+
@@ -1131,7 +1112,7 @@ The confidence level must be in $[0, 1]$ (not enforced by the VO-DML schema).Covariance matrix for the error of a 2D quantities.
The covariance matrix is symmetrical.
- mango:error.PropertyError2D
+ mango:error.PropertyError
error.ErrorCovMatrix.variance1
@@ -1176,9 +1157,9 @@ The covariance matrix is symmetrical.
Ellipse
Elliptic error for 2D parameters such as sky positions.
Major axis and minor axis have their own units, which must be the same for both.
-This is not enforced by the model.
+This is not enforced by the model. The definition of the ellipse attribute is imported from \texttt{coords:Ellipse}.
- mango:error.PropertyError2D
+ mango:error.PropertyError
error.Ellipse.semiMajorAxis
@@ -1220,15 +1201,6 @@ The angle has its own unit.
-
- error.PropertyError2D
- PropertyError2D
- Super (abstract) class for all errors of 2D parameters
-
- mango:error.PropertyError
-
-
-
error.ErrorCorrMatrix
ErrorCorrMatrix
@@ -1236,7 +1208,7 @@ The angle has its own unit.
The correlation matrix is symmetrical.
- mango:error.PropertyError2D
+ mango:error.PropertyError
error.ErrorCorrMatrix.sigma1
diff --git a/vo-dml/desc/desc.PhotometricProperty.photCal.txt b/vo-dml/desc/desc.Brightness.photCal.txt
similarity index 100%
rename from vo-dml/desc/desc.PhotometricProperty.photCal.txt
rename to vo-dml/desc/desc.Brightness.photCal.txt
diff --git a/vo-dml/desc/desc.Brightness.txt b/vo-dml/desc/desc.Brightness.txt
new file mode 100644
index 0000000..ed2006b
--- /dev/null
+++ b/vo-dml/desc/desc.Brightness.txt
@@ -0,0 +1,3 @@
+Observed brightness of the \texttt{MangoObject}.
+The distinction between fluxes and magnitudes is made by the unit.
+This property should refer to a photometric calibration as defined by the \texttt{Phot} data model (1.1).
\ No newline at end of file
diff --git a/vo-dml/desc/desc.EpochPosition.epoch.txt b/vo-dml/desc/desc.EpochPosition.epoch.txt
index b51c05a..b0a5f90 100644
--- a/vo-dml/desc/desc.EpochPosition.epoch.txt
+++ b/vo-dml/desc/desc.EpochPosition.epoch.txt
@@ -1 +1 @@
-Position epoch expressed within the common time system (see \texttt{coords:epoch})
\ No newline at end of file
+Position epoch expressed within the common time system (see \texttt{coords:Epoch})
\ No newline at end of file
diff --git a/vo-dml/desc/desc.EpochPosition.pmLatitude.txt b/vo-dml/desc/desc.EpochPosition.pmLatitude.txt
index 5eb73a8..7358260 100644
--- a/vo-dml/desc/desc.EpochPosition.pmLatitude.txt
+++ b/vo-dml/desc/desc.EpochPosition.pmLatitude.txt
@@ -1,2 +1 @@
Velocity along the latitude axis in angular distance per unit time (see \texttt{meas:ProperMotion.coord}).
-The current version of the model only allows a representation in the Polar coordinate space.
diff --git a/vo-dml/desc/desc.EpochPosition.pmLongitude.txt b/vo-dml/desc/desc.EpochPosition.pmLongitude.txt
index 9619129..3e5b2fe 100644
--- a/vo-dml/desc/desc.EpochPosition.pmLongitude.txt
+++ b/vo-dml/desc/desc.EpochPosition.pmLongitude.txt
@@ -1,2 +1 @@
Velocity along the longitude axis in angular distance per unit time (see \texttt{meas:ProperMotion.coord}).
-The current version of the model only allows a representation in the Polar coordinate space.
diff --git a/vo-dml/desc/desc.MangoObject.propertyDock.txt b/vo-dml/desc/desc.MangoObject.propertyDock.txt
index 62bd470..344febd 100644
--- a/vo-dml/desc/desc.MangoObject.propertyDock.txt
+++ b/vo-dml/desc/desc.MangoObject.propertyDock.txt
@@ -1 +1 @@
-Reference to the open-ended collection of the \texttt{MangoObject} properties (physical or calculated).
\ No newline at end of file
+Contains the open-ended collection of the \texttt{MangoObject} properties (physical, calculated or assigned).
\ No newline at end of file
diff --git a/vo-dml/desc/desc.PhotometricProperty.txt b/vo-dml/desc/desc.PhotometricProperty.txt
index ed2006b..3876c29 100644
--- a/vo-dml/desc/desc.PhotometricProperty.txt
+++ b/vo-dml/desc/desc.PhotometricProperty.txt
@@ -1,3 +1 @@
-Observed brightness of the \texttt{MangoObject}.
-The distinction between fluxes and magnitudes is made by the unit.
-This property should refer to a photometric calibration as defined by the \texttt{Phot} data model (1.1).
\ No newline at end of file
+Super class for all photometric properties of the \texttt{MangoObject}.
diff --git a/vo-dml/desc/desc.PhysicalProperty.calibrationLevel.txt b/vo-dml/desc/desc.PhysicalProperty.calibrationLevel.txt
index 16763e5..c03c5a2 100644
--- a/vo-dml/desc/desc.PhysicalProperty.calibrationLevel.txt
+++ b/vo-dml/desc/desc.PhysicalProperty.calibrationLevel.txt
@@ -1 +1,2 @@
-Calibration level of the property as defined in ObsCore \citep{2011ivoa.spec.1028T}.
\ No newline at end of file
+Calibration level of the property as defined
+in \url{https://www.ivoa.net/rdf/processing-level/2024-11-12/processing-level.html}
\ No newline at end of file
diff --git a/vo-dml/desc/desc.Property.semantics.txt b/vo-dml/desc/desc.Property.semantics.txt
index b287267..31b7a6a 100644
--- a/vo-dml/desc/desc.Property.semantics.txt
+++ b/vo-dml/desc/desc.Property.semantics.txt
@@ -10,4 +10,4 @@ vocabulary, http://www.ivoa.net/rdf/datalink/core. Terms from this
vocabulary must always be written as relative URIs. This means that for
concepts from the core vocabulary, the value in the semantics fieldz always
starts with a hash. (datalink1.1).
-The semantic concept apply to a single property or to the set made of the property and its associated properties (e.g. position and flag).
\ No newline at end of file
+The semantics concept applies to a single property or to the set made of the property and its associated properties (e.g. position and flag).
\ No newline at end of file
diff --git a/vo-dml/desc/desc.Property.txt b/vo-dml/desc/desc.Property.txt
index a065520..3b9edb6 100644
--- a/vo-dml/desc/desc.Property.txt
+++ b/vo-dml/desc/desc.Property.txt
@@ -1,2 +1,3 @@
-Class holder for a particular property, either physical or calculated, of the MANGO object.
+Class holder for a \textit{flavor} of property’ ie: there should be a Property subclass for each \textit{flavor} of Property being hosted.
+The property types are not limited to “physical or calculated” (eg: flags, assigned labels)
This class specifies both type and role of the property, and hosts the property instance itself.
diff --git a/vo-dml/desc/desc.error.Ellipse.txt b/vo-dml/desc/desc.error.Ellipse.txt
index f4167a8..77ee7ef 100644
--- a/vo-dml/desc/desc.error.Ellipse.txt
+++ b/vo-dml/desc/desc.error.Ellipse.txt
@@ -1,3 +1,3 @@
Elliptic error for 2D parameters such as sky positions.
Major axis and minor axis have their own units, which must be the same for both.
-This is not enforced by the model.
\ No newline at end of file
+This is not enforced by the model. The definition of the ellipse attribute is imported from \texttt{coords:Ellipse}.
\ No newline at end of file
diff --git a/vo-dml/desc/desc.error.PropertyError.distribution.txt b/vo-dml/desc/desc.error.PropertyError.distribution.txt
new file mode 100644
index 0000000..88b6738
--- /dev/null
+++ b/vo-dml/desc/desc.error.PropertyError.distribution.txt
@@ -0,0 +1,2 @@
+Statistical distribution of the error.
+The Value must comply with VO vocabulary TBD (not enforced by the VO-DML schema).
\ No newline at end of file
diff --git a/vo-dml/desc/desc.error.PropertyError2D.txt b/vo-dml/desc/desc.error.PropertyError2D.txt
deleted file mode 100644
index 44d32c8..0000000
--- a/vo-dml/desc/desc.error.PropertyError2D.txt
+++ /dev/null
@@ -1 +0,0 @@
-Super (abstract) class for all errors of 2D parameters
\ No newline at end of file
diff --git a/vo-dml/mango.png b/vo-dml/mango.png
index f2f0de6..a89aea2 100644
Binary files a/vo-dml/mango.png and b/vo-dml/mango.png differ
diff --git a/vo-dml/mango.vo-dml.xml b/vo-dml/mango.vo-dml.xml
index f47b648..b8a29bd 100644
--- a/vo-dml/mango.vo-dml.xml
+++ b/vo-dml/mango.vo-dml.xml
@@ -10,7 +10,7 @@
Laurent Michel, Fran??ois Bonnarel, Gilles Landais, Mireille Louys, Marco Molinaro, Jesue Salgado
1.0
0.0
- 2024-10-17T16:22:43
+ 2025-01-30T18:39:44
ivoa
http://www.ivoa.net/xml/VODML/IVOA-v1.vo-dml.xml
@@ -31,24 +31,6 @@
https://ivoa.net/xml/VODML/Phot-v1.vodml.xml
https://ivoa.net/documents/PHOTDM/20221101/index.html
-
- ShapeFrame
- ShapeFrame
- Possible options to encode a shape in a string.
-
-
- ShapeFrame.STC_S
- STC_S
- STCs serialisation
-
-
-
- ShapeFrame.MOC
- MOC
- MOC serialisation
-
-
-
ShapeSerialization
ShapeSerialization
@@ -78,29 +60,6 @@
-
- CalibrationLevel
- CalibrationLevel
- Science ready data with the instrument signature removed (ObsCore).
-
- CalibrationLevel.Raw
- Raw
- Raw instrumental data, in a proprietary or internal data provider defined format, that needs instrument specific tools to be handled (ObsCore).
-
-
-
- CalibrationLevel.Instrumental
- Instrumental
- Instrumental data in a standard format which could be manipulated with standard astronomical packages (ObsCore).
-
-
- CalibrationLevel.Calibrated
- Calibrated
- Science ready data with the instrument signature removed (ObsCore).
-
-
-
-
ColorDefinition
ColorDefinition
@@ -149,7 +108,7 @@
ivoa:string
- 1
+ 0
1
@@ -339,7 +298,7 @@ As long as the vocabulary is not set, the possible values of this attribute are
mango:VocabularyTerm
- 1
+ 0
1
@@ -352,7 +311,7 @@ As long as the vocabulary is not set, the possible values of this attribute are
ivoa:string
- 1
+ 0
1
@@ -364,7 +323,7 @@ As long as the vocabulary is not set, the possible values of this attribute are
mango:Property
- 1
+ 0
-1
@@ -393,7 +352,7 @@ As long as the vocabulary is not set, the possible values of this attribute are
1
-
+
Status.allowedValues
allowedValues
@@ -403,10 +362,10 @@ As long as the vocabulary is not set, the possible values of this attribute are
mango:StatusValues
- 0
+ 1
1
-
+
@@ -481,7 +440,7 @@ As long as the vocabulary is not set, the possible values of this attribute are
coords:SpaceSys
- 0
+ 1
1
@@ -510,7 +469,7 @@ As long as the vocabulary is not set, the possible values of this attribute are
1
-
+
PhotometricProperty.error
error
@@ -519,25 +478,11 @@ As long as the vocabulary is not set, the possible values of this attribute are
meas:Uncertainty
-
- 0
- 1
-
-
-
- PhotometricProperty.photCal
- photCal
-
- TODO : Missing description : please, update your UML model asap.
-
-
- Phot:PhotCal
-
1
1
-
+
@@ -555,9 +500,6 @@ As long as the vocabulary is not set, the possible values of this attribute are
TODO : Missing description : please, update your UML model asap.
-
- mango:CalibrationLevel
-
1
1
@@ -624,7 +566,7 @@ As long as the vocabulary is not set, the possible values of this attribute are
1
-
+
ColorDef.high
high
@@ -637,8 +579,8 @@ As long as the vocabulary is not set, the possible values of this attribute are
1
1
-
-
+
+
ColorDef.low
low
@@ -651,7 +593,7 @@ As long as the vocabulary is not set, the possible values of this attribute are
1
1
-
+
@@ -904,58 +846,62 @@ As long as the vocabulary is not set, the possible values of this attribute are
EpochPositionErrors
EpochPositionErrors
Class for the error attached to a EpochPosition. The component in this class represent the errors of individual parameters as well as errors due to the parameter correlations.
-
+
EpochPositionErrors.parallax
parallax
- Parallax error. This error is meant to be symetrical.
+
+ TODO : Missing description : please, update your UML model asap.
+
- mango:error.Symmetric1D
+ mango:error.PropertyError
- 0
+ 1
1
-
-
+
+
EpochPositionErrors.radialVelocity
radialVelocity
- Error in the radial velocity. This error is meant to be symetrical.
+
+ TODO : Missing description : please, update your UML model asap.
+
- mango:error.Symmetric1D
+ mango:error.PropertyError
- 0
+ 1
1
-
-
- EpochPositionErrors.position
- position
+
+
+ EpochPositionErrors.properMotion
+ properMotion
TODO : Missing description : please, update your UML model asap.
- mango:error.PropertyError2D
+ mango:error.PropertyError
- 0
+ 1
1
-
-
- EpochPositionErrors.properMotion
- properMotion
+
+
+ EpochPositionErrors.Position
+ Position
TODO : Missing description : please, update your UML model asap.
- mango:error.PropertyError2D
+ mango:error.PropertyError
- 0
+ 1
1
-
+
@@ -1118,6 +1064,31 @@ As long as the vocabulary is not set, the possible values of this attribute are
+
+ Brightness
+ Brightness
+
+ TODO : Missing description : please, update your UML model asap.
+
+
+ mango:PhotometricProperty
+
+
+ Brightness.photCal
+ photCal
+
+ TODO : Missing description : please, update your UML model asap.
+
+
+ Phot:PhotCal
+
+
+ 1
+ 1
+
+
+
+
@@ -1146,6 +1117,20 @@ As long as the vocabulary is not set, the possible values of this attribute are
1
+
+ error.PropertyError.distribution
+ distribution
+
+ TODO : Missing description : please, update your UML model asap.
+
+
+ ivoa:string
+
+
+ 1
+ 1
+
+
@@ -1174,7 +1159,7 @@ As long as the vocabulary is not set, the possible values of this attribute are
ErrorCovMatrix
Diagonal 2D matrix. Non diagonal elements are null.
- mango:error.PropertyError2D
+ mango:error.PropertyError
error.ErrorCovMatrix.variance1
@@ -1221,7 +1206,7 @@ As long as the vocabulary is not set, the possible values of this attribute are
Ellipse
Elliptical errror for 2D parameters such as the sky positions.
- mango:error.PropertyError2D
+ mango:error.PropertyError
error.Ellipse.semiMajorAxis
@@ -1261,17 +1246,6 @@ As long as the vocabulary is not set, the possible values of this attribute are
-
- error.PropertyError2D
- PropertyError2D
-
- TODO : Missing description : please, update your UML model asap.
-
-
- mango:error.PropertyError
-
-
-
error.ErrorCorrMatrix
ErrorCorrMatrix
@@ -1279,7 +1253,7 @@ As long as the vocabulary is not set, the possible values of this attribute are
TODO : Missing description : please, update your UML model asap.
- mango:error.PropertyError2D
+ mango:error.PropertyError
error.ErrorCorrMatrix.sigma1
diff --git a/vo-dml/sections/Epoch_Position_Properties.txt b/vo-dml/sections/Epoch_Position_Properties.txt
new file mode 100644
index 0000000..0ef17fc
--- /dev/null
+++ b/vo-dml/sections/Epoch_Position_Properties.txt
@@ -0,0 +1,2 @@
+This section collects all the classes that model the case of epoch propagation.
+In addition to the 6 sky position parameters, it also models their correlation and the errors.
\ No newline at end of file
diff --git a/vo-dml/sections/Photometric_Properties.txt b/vo-dml/sections/Photometric_Properties.txt
new file mode 100644
index 0000000..938402c
--- /dev/null
+++ b/vo-dml/sections/Photometric_Properties.txt
@@ -0,0 +1,3 @@
+This section brings together all the classes that model the photometric properties.
+The definition of the photometric calibrations and the
+photometric filters are imported from \texttt{PhotDM}.
\ No newline at end of file
diff --git a/vo-dml/sections/Physical_Properties.txt b/vo-dml/sections/Physical_Properties.txt
new file mode 100644
index 0000000..0e0e5f9
--- /dev/null
+++ b/vo-dml/sections/Physical_Properties.txt
@@ -0,0 +1,2 @@
+This section brings together all the classes that are needed to
+host objects imported from the \texttt{Measurements} data model.
\ No newline at end of file
diff --git a/vo-dml/desc/desc.CalibrationLevel.Calibrated.txt b/vo-dml/trash/desc.CalibrationLevel.Calibrated.txt
similarity index 100%
rename from vo-dml/desc/desc.CalibrationLevel.Calibrated.txt
rename to vo-dml/trash/desc.CalibrationLevel.Calibrated.txt
diff --git a/vo-dml/desc/desc.CalibrationLevel.Instrumental.txt b/vo-dml/trash/desc.CalibrationLevel.Instrumental.txt
similarity index 100%
rename from vo-dml/desc/desc.CalibrationLevel.Instrumental.txt
rename to vo-dml/trash/desc.CalibrationLevel.Instrumental.txt
diff --git a/vo-dml/desc/desc.CalibrationLevel.Raw.txt b/vo-dml/trash/desc.CalibrationLevel.Raw.txt
similarity index 100%
rename from vo-dml/desc/desc.CalibrationLevel.Raw.txt
rename to vo-dml/trash/desc.CalibrationLevel.Raw.txt
diff --git a/vo-dml/desc/desc.CalibrationLevel.txt b/vo-dml/trash/desc.CalibrationLevel.txt
similarity index 100%
rename from vo-dml/desc/desc.CalibrationLevel.txt
rename to vo-dml/trash/desc.CalibrationLevel.txt
diff --git a/vo-dml/desc/desc.ShapeFrame.MOC.txt b/vo-dml/trash/desc.ShapeFrame.MOC.txt
similarity index 100%
rename from vo-dml/desc/desc.ShapeFrame.MOC.txt
rename to vo-dml/trash/desc.ShapeFrame.MOC.txt
diff --git a/vo-dml/desc/desc.ShapeFrame.STC_S.txt b/vo-dml/trash/desc.ShapeFrame.STC_S.txt
similarity index 100%
rename from vo-dml/desc/desc.ShapeFrame.STC_S.txt
rename to vo-dml/trash/desc.ShapeFrame.STC_S.txt
diff --git a/vo-dml/desc/desc.ShapeFrame.txt b/vo-dml/trash/desc.ShapeFrame.txt
similarity index 100%
rename from vo-dml/desc/desc.ShapeFrame.txt
rename to vo-dml/trash/desc.ShapeFrame.txt