gem-graph-server/debian/var/models/XMLSchema example (in progr...

214 lines
7.4 KiB
Plaintext
Raw Normal View History

2021-09-18 16:44:10 +02:00
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
2021-09-18 19:32:29 +02:00
2021-09-20 18:21:31 +02:00
<!-- https://www.freeformatter.com/xml-validator-xsd.html -->
2021-09-19 22:39:47 +02:00
<!-- https://www.w3schools.com/xml/el_attribute.asp -->
2021-09-19 22:58:37 +02:00
<!-- use="required" is NOT allowed in attributes declarations-->
2021-09-20 18:21:31 +02:00
<!-- To know : Attribute 'name' Cannot Appear In Element 'element'.-->
<!-- TODO
<BALISE>texte</BALISE> doit toujours être équivalent à <BALISE value="texte"/>
quelle que soit la BALISE et quel que soit le texte.
(excepté pour certaines balises sans texte)
Les balises concernées sont :
name, owner, date, version, max_thread, max_cycles,
dimension, site_multiplicity, boundaries, ref et quote
Comment déclarer cette équivalence ? -->
<!-- xs:element name="name" type="xs:string"/ -->
2021-09-19 22:39:47 +02:00
<xs:attribute name="id" type="xs:string"/>
<xs:attribute name="date" type="xs:integer"/> <!--TODO type ? -->
2021-09-20 18:21:31 +02:00
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="lang" type="xs:string"/>
2021-09-19 22:39:47 +02:00
<xs:attribute name="value" type="xs:integer"/> <!--TODO WARNING: It's an integer !-->
2021-09-20 18:21:31 +02:00
<xs:attribute name="owner" type="xs:integer"/>
2021-09-19 22:39:47 +02:00
<xs:attribute name="author" type="xs:string"/>
<xs:attribute name="version" type="xs:float"/>
<xs:attribute name="probability" type="xs:integer"/>
2021-09-19 22:39:47 +02:00
2021-09-20 18:21:31 +02:00
<!-- TO EVALUATE Consider using 'group' (?) or NOT -->
<!-- https://www.w3schools.com/xml/schema_complex_indicators.asp -->
<!-- TO EVALUATE Other definitions of an arrow (coord origin + dest,...) -->
<!-- TO EVALUATE Hypercubes pave the space => add a potential dimension 'w':
<xs:attribute name="w" type="xs:integer" default="0"/>-->
<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>
2021-09-19 22:39:47 +02:00
2021-09-20 18:21:31 +02:00
<!-- A state can be connex or not. A connex state is an object.
A transition goes from an origin (state) to a target.
Therefore, element 'State' is used in
- objects definitions,
- initial and produced/computed states declarations,
- origin and target declarations of a transition.
What attributes should always be associated to a state ? -->
<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>
2021-09-18 16:44:10 +02:00
<xs:element name="gem-graph-model">
<xs:complexType>
<xs:sequence>
2021-09-18 19:32:29 +02:00
<xs:element name="identity">
<xs:complexType>
<xs:sequence>
2021-09-19 22:39:47 +02:00
<xs:element name="anything_but_not_just_the_word_name" type="xs:string"/>
2021-09-18 19:32:29 +02:00
2021-09-19 22:39:47 +02:00
<xs:element name="name">
<xs:complexType>
2021-09-19 22:58:37 +02:00
<xs:attribute name="value" type="xs:string" use="required"/>
2021-09-19 22:39:47 +02:00
</xs:complexType>
</xs:element>
2021-09-18 19:32:29 +02:00
2021-09-20 18:21:31 +02:00
<xs:element name="owner" type="xs:integer"/>
2021-09-18 19:32:29 +02:00
<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>
2021-09-19 22:58:37 +02:00
<xs:attribute ref="value" use="required"/>
2021-09-18 19:32:29 +02:00
</xs:complexType>
</xs:element>
<xs:element name="max_cycles">
<xs:complexType>
2021-09-19 22:58:37 +02:00
<xs:attribute ref="value" use="required"/>
2021-09-18 19:32:29 +02:00
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="space">
<xs:complexType>
<xs:sequence>
<xs:element name="dimension">
<xs:complexType>
2021-09-19 22:58:37 +02:00
<xs:attribute ref="value" use="required"/>
2021-09-18 19:32:29 +02:00
</xs:complexType>
</xs:element>
<xs:element name="size">
<xs:complexType>
2021-09-19 22:58:37 +02:00
<xs:attribute ref="value" use="required"/>
2021-09-18 19:32:29 +02:00
</xs:complexType>
</xs:element>
<xs:element name="site_multiplicity">
<xs:complexType>
2021-09-19 22:58:37 +02:00
<xs:attribute ref="value" use="required"/>
2021-09-18 19:32:29 +02:00
</xs:complexType>
</xs:element>
<xs:element name="boundaries">
<xs:complexType>
</xs:complexType>
2021-09-18 16:46:39 +02:00
</xs:element>
</xs:sequence>
</xs:complexType>
2021-09-18 19:32:29 +02:00
</xs:element>
</xs:sequence>
2021-09-19 22:58:37 +02:00
<xs:attribute ref="id" use="required"/>
<xs:attribute ref="date" use="required"/>
<xs:attribute ref="author" use="required"/>
2021-09-18 19:32:29 +02:00
</xs:complexType>
2021-09-18 16:46:39 +02:00
</xs:element>
2021-09-18 19:32:29 +02:00
2021-09-18 19:50:06 +02:00
<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"/>
2021-09-18 19:50:06 +02:00
<!--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"/>
2021-09-18 19:50:06 +02:00
</xs:sequence>
2021-09-19 22:58:37 +02:00
<xs:attribute ref="id" use="required"/>
<xs:attribute ref="date" use="required"/>
<xs:attribute ref="author" use="required"/>
2021-09-18 19:50:06 +02:00
</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"/>
2021-09-18 16:44:10 +02:00
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>