<?xml version="1.0" encoding="UTF-8"?>
<vo-dml:model xmlns:vo-dml="http://www.ivoa.net/xml/VODML/v1"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <name>ivoa</name>
  <description>This is the main reference data model containing primitive types used in other data models.</description>
  <uri>http://www.ivoa.net/xml/VODML/v1</uri>
  <title>IVOA Reference Types Data Model ala VO-URP</title>
  <version>1.0</version>
  <lastModified>2017-09-23T09:33:12</lastModified>
  <primitiveType>
    <vodml-id>Unit</vodml-id>
    <name>Unit</name>
    <description>Must conform to definition of unit in VOUnit spec.</description>
    <extends>
      <vodml-ref>ivoa:string</vodml-ref>
    </extends>
  </primitiveType>

  <primitiveType>
    <vodml-id>anyURI</vodml-id>
    <name>anyURI</name>
    <description>Represents a URI in the same way as the datatype of the same name in XML Schema is used.</description>
    <extends>
      <vodml-ref>ivoa:string</vodml-ref>
    </extends>
  </primitiveType>

  <primitiveType>
    <vodml-id>boolean</vodml-id>
    <name>boolean</name>
    <description>The standard boolean, having values true or false.</description>
  </primitiveType>

  <primitiveType>
    <vodml-id>complex</vodml-id>
    <name>complex</name>
    <description>Represents a complex number, consisting of a real and imaginary component, both of which are reals. Note that in many contexts there is no native mapping for this type and it must be treated with a custom mapping.</description>
  </primitiveType>

  <primitiveType>
    <vodml-id>datetime</vodml-id>
    <name>datetime</name>
    <description>Represents a moment in time using a date+timestamp. </description>
  </primitiveType>

  <primitiveType>
    <vodml-id>integer</vodml-id>
    <name>integer</name>
    <description>An integer number (from Z).</description>
  </primitiveType>

  <primitiveType>
    <vodml-id>nonnegativeInteger</vodml-id>
    <name>nonnegativeInteger</name>
    <description>An integer number from N, therefore greater than or equal to 0.</description>
  </primitiveType>

  <primitiveType>
    <vodml-id>rational</vodml-id>
    <name>rational</name>
    <description>A rational number from Q, represented by two integers, a numerator and a denominator. A native mapping to a serialisation context does in general not exists.</description>
  </primitiveType>

  <primitiveType>
    <vodml-id>real</vodml-id>
    <name>real</name>
    <description>A real number (from R).</description>
  </primitiveType>

  <primitiveType>
    <vodml-id>string</vodml-id>
    <name>string</name>
    <description>A string, represented as an array of characters treated as a single, primitive value. Ala Java, a string can not be updated, that is any update leads to a different string. However in contrast to Java we assume that two strings that are identical in all their constituent characters are the same.
I.e. string has value type semantics.</description>
  </primitiveType>

  <dataType>
    <vodml-id>IntegerQuantity</vodml-id>
    <name>IntegerQuantity</name>
    <description>An integer number with a unit. Examples of such units that can be used for attributes are bit/byte/kiloByte etc.</description>
    <extends>
      <vodml-ref>ivoa:Quantity</vodml-ref>
    </extends>
    <attribute>
      <vodml-id>IntegerQuantity.value</vodml-id>
      <name>value</name>
      <description>
          TODO : Missing description : please, update your UML model asap.
        </description>
      <datatype>
        <vodml-ref>ivoa:integer</vodml-ref>
      </datatype>
      <multiplicity>
        <minOccurs>1</minOccurs>
        <maxOccurs>1</maxOccurs>
      </multiplicity>
    </attribute>
  </dataType>

  <dataType abstract="true">
    <vodml-id>Quantity</vodml-id>
    <name>Quantity</name>
    <description>Meant to represent the value of a numerical physical quantity.
Can be mapped in VOTables to FIELDrefs and PARAM(ref)s, in which case the @unit attribute of those VOTable elements is assumed to be mapped to the attribute on the Quantity.
Ths is only allowed for these predefined ivoa types.</description>
    <attribute>
      <vodml-id>Quantity.unit</vodml-id>
      <name>unit</name>
      <description>
          TODO : Missing description : please, update your UML model asap.
        </description>
      <datatype>
        <vodml-ref>ivoa:Unit</vodml-ref>
      </datatype>
      <multiplicity>
        <minOccurs>0</minOccurs>
        <maxOccurs>1</maxOccurs>
      </multiplicity>
    </attribute>
  </dataType>

  <dataType>
    <vodml-id>RealQuantity</vodml-id>
    <name>RealQuantity</name>
    <description>A real value with a unit.</description>
    <extends>
      <vodml-ref>ivoa:Quantity</vodml-ref>
    </extends>
    <attribute>
      <vodml-id>RealQuantity.value</vodml-id>
      <name>value</name>
      <description>
          TODO : Missing description : please, update your UML model asap.
        </description>
      <datatype>
        <vodml-ref>ivoa:real</vodml-ref>
      </datatype>
      <multiplicity>
        <minOccurs>1</minOccurs>
        <maxOccurs>1</maxOccurs>
      </multiplicity>
    </attribute>
  </dataType>

</vo-dml:model>
