185 lines
6.3 KiB
XML
185 lines
6.3 KiB
XML
<?xml version="1.0"?>
|
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
|
|
|
<!-- https://www.w3schools.com/xml/el_attribute.asp -->
|
|
<!-- use="required" is NOT allowed in attributes declarations-->
|
|
<!-- Attribute 'name' Cannot Appear In Element 'element'.-->
|
|
|
|
<xs:attribute name="id" type="xs:string"/>
|
|
<xs:attribute name="date" type="xs:integer"/> <!--TODO type ? -->
|
|
<xs:attribute name="name" type="xs:string"/> <!--TODO pas clair, ce truc... -->
|
|
<xs:attribute name="lang" type="xs:string"/>
|
|
<xs:attribute name="value" type="xs:integer"/> <!--TODO WARNING: It's an integer !-->
|
|
<xs:attribute name="author" type="xs:string"/>
|
|
<xs:attribute name="version" type="xs:float"/>
|
|
<xs:attribute name="owner_id" type="xs:integer"/>
|
|
<xs:attribute name="probability" type="xs:integer"/>
|
|
|
|
<xs:element name="arrow"> <!-- TODO Consider using 'group' : -->
|
|
<!-- https://www.w3schools.com/xml/schema_complex_indicators.asp -->
|
|
<xs:complexType>
|
|
<xs:attribute name="x" type="xs:integer" default="1"/>
|
|
<xs:attribute name="y" type="xs:integer" default="0"/>
|
|
<xs:attribute name="z" type="xs:integer" default="0"/>
|
|
<xs:attribute name="site" type="xs:integer" default="1"/>
|
|
<xs:attribute name="weight" type="xs:integer" default="0"/>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<!-- A state can be connex or not. A connex state is an object. -->
|
|
<xs:element name="state">
|
|
<xs:complexType>
|
|
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
|
<xs:element ref="arrow"/>
|
|
</xs:sequence>
|
|
<xs:attribute ref="id" use="required"/>
|
|
<xs:attribute ref="date" use="required"/>
|
|
<xs:attribute ref="author" use="required"/>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="transition">
|
|
<xs:complexType>
|
|
<xs:sequence minOccurs="2" maxOccurs="2"> <!-- TODO ... Cannot use 'length' -->
|
|
<xs:element ref="state"/>
|
|
</xs:sequence>
|
|
<xs:attribute ref="id" use="required"/>
|
|
<xs:attribute ref="date" use="required"/>
|
|
<xs:attribute ref="author" use="required"/>
|
|
<xs:attribute ref="probability" use="required"/>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="gem-graph-model">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
|
|
<xs:element name="identity">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
|
|
<xs:element name="anything_but_not_just_the_word_name" type="xs:string"/>
|
|
|
|
<xs:element name="name">
|
|
<xs:complexType>
|
|
<xs:attribute name="value" type="xs:string" use="required"/>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="owner_id" type="xs:integer"/>
|
|
<xs:element name="date" type="xs:integer"/>
|
|
<xs:element name="version" type="xs:float"/>
|
|
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="parameters">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
|
|
<xs:element name="modelization">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
|
|
<xs:element name="max_thread">
|
|
<xs:complexType>
|
|
<xs:attribute ref="value" use="required"/>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="max_cycles">
|
|
<xs:complexType>
|
|
<xs:attribute ref="value" use="required"/>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="space">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
|
|
<xs:element name="dimension">
|
|
<xs:complexType>
|
|
<xs:attribute ref="value" use="required"/>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="size">
|
|
<xs:complexType>
|
|
<xs:attribute ref="value" use="required"/>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="site_multiplicity">
|
|
<xs:complexType>
|
|
<xs:attribute ref="value" use="required"/>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="boundaries">
|
|
<xs:complexType>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
<xs:attribute ref="id" use="required"/>
|
|
<xs:attribute ref="date" use="required"/>
|
|
<xs:attribute ref="author" use="required"/>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="objects">
|
|
<xs:complexType>
|
|
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
|
<xs:element ref="state"/> <!--An object is a connex state -->
|
|
</xs:sequence>
|
|
<xs:attribute ref="id" use="required"/>
|
|
<xs:attribute ref="date" use="required"/>
|
|
<xs:attribute ref="author" use="required"/>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<!--An initial state is made of at least one object -->
|
|
<xs:element ref="state"/>
|
|
|
|
<!--An produced state is made of at least one object -->
|
|
<xs:element name="produced_states">
|
|
<xs:complexType>
|
|
<xs:sequence minOccurs="0" maxOccurs="unbounded">
|
|
<xs:element ref="state"/>
|
|
</xs:sequence>
|
|
<xs:attribute ref="id" use="required"/>
|
|
<xs:attribute ref="date" use="required"/>
|
|
<xs:attribute ref="author" use="required"/>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="transitions">
|
|
<xs:complexType>
|
|
<xs:sequence minOccurs="0" maxOccurs="unbounded">
|
|
<xs:element ref="transition"/>
|
|
</xs:sequence>
|
|
<xs:attribute ref="id" use="required"/>
|
|
<xs:attribute ref="date" use="required"/>
|
|
<xs:attribute ref="author" use="required"/>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
|
|
<xs:element name="ref" type="xs:string"/>
|
|
|
|
<xs:element name="quote" type="xs:string"/>
|
|
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:schema>
|