Fusion de dev/XMLS schéma final 0.2.1

This commit is contained in:
Adrien Bourmault 2021-12-07 20:01:44 +01:00
commit de7f61e156
No known key found for this signature in database
GPG Key ID: 6EB408FE0ACEC664
3 changed files with 169 additions and 104 deletions

View File

@ -1,22 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<gem-graph-model version="0.2"> <gem-graph-model version="0.2.1">
<!-- Model identity informations -->
<identity> <identity>
<name>Modèle de test</name> <name>Modèle de test</name>
<owner>Gaston Lagaffe</owner> <owner>Léontine Patinette</owner>
<owner_id>2</owner_id> <owner_id>2</owner_id>
<date>1629830000</date> <date>1630000000</date>
<version>1.0</version> <version>1.0</version>
<g_ref id="texte" date="1629830000" author="Jean" lang="en">Ref</g_ref> <g_ref id="Cause" date="1630000000" author="toujours" lang="en">Ref</g_ref>
</identity> </identity>
<!-- Model parameters --> <parameters id="texte" date="0" author="Léontine Trottine.">
<parameters id="texte" date="0" author="Gaston Lagaffe">
<simulation> <simulation>
<max_thread>0</max_thread> <max_thread>0</max_thread>
<max_cycles>9</max_cycles> <max_cycles>9</max_cycles>
@ -24,18 +23,17 @@
</simulation> </simulation>
<space-param> <space-param>
<dimension>
<!-- loop_on_zero="true" anything moved before zero reenters at the end of space--> <!-- loop_on_zero="true" anything moved before zero reenters at the end of space-->
<!-- loop_on_zero="false" anything moved before zero is lost--> <!-- loop_on_zero="false" anything moved before zero is lost-->
<!-- loop_on_max="true" anything moved beyond max reenters at the zero of space--> <!-- loop_on_max="true" anything moved beyond max reenters at the zero of space-->
<!-- loop_on_max="false" anything moved beyond max is lost--> <!-- loop_on_max="false" anything moved beyond max is lost-->
<axis name="x" size="29"/>
<axis name="y" size="0"/> <dimension x="29"/>
<axis name="z" size="0"/>
</dimension>
<!-- Site_multiplicity = number of sites in a space unit. --> <!-- Site_multiplicity = number of sites in a space unit. -->
<!-- Each site points towards a neighbouring space unit. --> <!-- Each site points towards a neighbouring space unit. -->
<!-- Several arrows can be stacked in the same site. --> <!-- Several arrows can be stacked in the same site. -->
<site_multiplicity>3</site_multiplicity> <site_multiplicity>3</site_multiplicity>
</space-param> </space-param>
@ -43,50 +41,50 @@
</parameters> </parameters>
<!-- Model objects definition --> <!-- Model objects definition -->
<objects id="texte" date="1629830000" author="Jean Sirmai">
<object id="dimer 1-1" date="1629830000" author="Jean Sirmai">
<arrow x="0" y="0" z="0" site="1" weight="1"/>
<arrow x="1" y="0" z="0" site="2" weight="1"/>
<objects id="only dimers in this model" date="1630000000" author="inanimés,... âme ?">
<object id="a dimer" date="1630000000" author="Alphonse">
<arrow site="1" weight="1" x="0"/>
<arrow site="2" weight="1" x="1"/>
</object> </object>
</objects> </objects>
<!-- Saved space description (initial space is sequence 0) --> <!-- Saved space description (initial space is sequence 0) -->
<savestates id="texte" date="1629830000" author="THE MATRIX">
<space id="initial" date="1629830000" author="Jean Sirmai" sequence="0">
<arrow x="0" y="0" z="0" site="1" weight="1"/>
<arrow x="1" y="0" z="0" site="2" weight="1"/>
<arrow x="10" y="0" z="0" site="1" weight="1"/> <savedstates id="texte" date="1630000000" author="Qui courrait dans l'herbe'">
<arrow x="11" y="0" z="0" site="2" weight="1"/> <state id="initial" date="1630000000" author="Une souris verte">
<arrow site="1" weight="1" x="0"/>
<arrow x="20" y="0" z="0" site="1" weight="1"/> <arrow site="2" weight="1" x="1"/>
<arrow x="21" y="0" z="0" site="2" weight="1"/> <arrow site="1" weight="1" x="10"/>
<arrow site="2" weight="1" x="11"/>
<arrow site="1" weight="1" x="20"/>
<arrow site="2" weight="1" x="21"/>
<!-- Three dimers 1-1 are drawn in the global space <!-- Three dimers 1-1 are drawn in the global space
at locations (0,1) (10,11) and (20,21) --> at locations (0,1) (10,11) and (20,21) -->
</space> </state>
</savestates> </savedstates>
<!-- Model transitions definition (rules) --> <!-- Model transitions definition (rules) -->
<!-- In this version : <xs:sequence minOccurs="0" maxOccurs="unbounded">--> <!-- In this version : <xs:sequence minOccurs="0" maxOccurs="unbounded">-->
<!-- Transitions should be edited by hand and written in a 'human-readable' format --> <!-- Transitions should be edited by hand and written in a 'human-readable' format -->
<conditions id="random walk of dimers" date="1629822222" author="Jean"> <conditions id="random walk of dimers" date="1630000000" author="Zazard le lézard !">
<condition x= "0" y="0" z="0" site="1" weight="1" node_id="1" parent="0"/> <condition site="1" weight="1" node_id="1" parent="0" x="0"/>
<condition x= "1" y="0" z="0" site="2" weight="1" node_id="2" parent="1"/> <condition site="2" weight="1" node_id="2" parent="1" x="1"/>
<!-- as soon as conditions 1 and 2 are satisfied, a dimer is identified at location (0,1). --> <!-- as soon as conditions 1 and 2 are satisfied, a dimer is identified at atation (0,1). -->
<condition x= "2" y="0" z="0" site="1" weight="0" node_id="3" parent="2"/> <condition site="1" weight="0" node_id="3" parent="2" x="2"/>
<!-- as soon as condition 3 is satisfied, <!-- as soon as condition 3 is satisfied,
the neighbouring space unit to East of the dimer is empty the neighbouring space unit to East of the dimer is empty
and the dimer identified by conditions (1,2) can be moved to East. --> and the dimer identified by conditions (1,2) can be moved to East. -->
<condition x="-1" y="0" z="0" site="2" weight="0" node_id="4" parent="2"/> <condition site="2" weight="0" node_id="4" parent="2" x="-1"/>
<!-- as soon as condition 4 is satisfied, <!-- as soon as condition 4 is satisfied,
the neighbouring space unit to West of the dimer is empty the neighbouring space unit to West of the dimer is empty
and the dimer identified by conditions (1,2) can be moved to West. --> and the dimer identified by conditions (1,2) can be moved to West. -->
@ -95,23 +93,23 @@
<transitions> <transitions>
<transition id="move_a_dimer_to_east" date="1629811111" author="Jean" <transition id="move_a_dimer_to_east" date="1630000000" author="Pas moi..."
parent="3" probability="1"> parent="3" probability="1">
<arrow x="0" y="0" z="0" site="1" weight="0"/> <arrow site="1" weight="0" x="0"/>
<arrow x="1" y="0" z="0" site="2" weight="0"/> <arrow site="2" weight="0" x="1"/>
<arrow x="1" y="0" z="0" site="1" weight="1"/> <arrow site="1" weight="1" x="1"/>
<arrow x="2" y="0" z="0" site="2" weight="1"/> <arrow site="2" weight="1" x="2"/>
</transition> </transition>
<transition id="move_a_dimer_to_west" date="1629811112" author="Jean" <transition id="move_a_dimer_to_west" date="1630000000" author="Ni moi !"
parent="4" probability="1"> parent="4" probability="1">
<arrow x= "0" y="0" z="0" site="1" weight="0"/> <arrow site="1" weight="0" x="0"/>
<arrow x= "1" y="0" z="0" site="2" weight="0"/> <arrow site="2" weight="0" x="1"/>
<arrow x= "0" y="0" z="0" site="2" weight="1"/> <arrow site="2" weight="1" x="0"/>
<arrow x="-1" y="0" z="0" site="1" weight="1"/> <arrow site="1" weight="1" x="1"/>
</transition> </transition>

83
models/testing.xml Normal file
View File

@ -0,0 +1,83 @@
<gem-graph-model version="0.2">
<!-- Model identity informations -->
<identity>
<name>Modèle de test</name>
<owner>Gaston Lagaffe</owner>
<owner_id>2</owner_id>
<date>1629830000</date>
<version>1.0</version>
<g_ref id="texte" date="1629830000" author="Jean" lang="en">Ref</g_ref>
</identity>
<!-- Model parameters -->
<parameters id="texte" date="0" author="Gaston Lagaffe">
<simulation>
<max_thread>0</max_thread>
<max_cycles>9</max_cycles>
</simulation>
<space-param>
<dimension>
<!-- loop_on_zero="true" anything moved before zero reenters at the end of space-->
<!-- loop_on_zero="false" anything moved before zero is lost-->
<!-- loop_on_max="true" anything moved beyond max reenters at the zero of space-->
<!-- loop_on_max="false" anything moved beyond max is lost-->
<axis name="x" size="29"/>
<axis name="y" size="0"/>
<axis name="z" size="0"/>
</dimension>
<!-- Site_multiplicity = number of sites in a space unit. -->
<!-- Each site points towards a neighbouring space unit. -->
<!-- Several arrows can be stacked in the same site. -->
<site_multiplicity>3</site_multiplicity>
</space-param>
</parameters>
<!-- Model objects definition -->
<objects id="texte" date="1629830000" author="Jean Sirmai">
<object id="dimer 1-1" date="1629830000" author="Jean Sirmai">
<arrow x="0" y="0" z="0" site="1" weight="1"/>
<arrow x="1" y="0" z="0" site="2" weight="1"/>
</object>
</objects>
<!-- Saved space description (initial space is sequence 0) -->
<savestates id="texte" date="1629830000" author="THE MATRIX">
<space id="initial" date="1629830000" author="Jean Sirmai" sequence="0">
<arrow x="0" y="0" z="0" site="1" weight="1"/>
<arrow x="1" y="0" z="0" site="2" weight="1"/>
<arrow x="10" y="0" z="0" site="1" weight="1"/>
<arrow x="11" y="0" z="0" site="2" weight="1"/>
<arrow x="20" y="0" z="0" site="1" weight="1"/>
<arrow x="21" y="0" z="0" site="2" weight="1"/>
<!-- Three dimers 1-1 are drawn in the global space
at locations (0,1) (10,11) and (20,21) -->
</space>
</savestates>
<!-- Model transitions definition (rules) -->
<!-- In this version : <xs:sequence minOccurs="0" maxOccurs="unbounded">-->
<!-- Transitions should be edited by hand and written in a 'human-readable' format -->
<conditions id="random walk of dimers" date="1629822222" author="Jean">
<condition x="0" y="0" z="0" site="1" weight="1" node_id="1" parent="0"/>
<condition x="1" y="0" z="0" site="2" weight="1" node_id="2" parent="1"/>
<!-- as soon as conditions 1 and 2 are satisfied, a dimer is identified at location (0,1). -->
<condition x="2" y="0" z="0" site="1" weight="0" node_id="3" parent="2"/>
<!-- as soon as condition 3 is satisfied,
the neighbouring space unit to East of the dimer is empty
and the dimer identified by conditions (1,2) can be moved to East. -->
<condition x="-1" y="0" z="0" site="2" weight="0" node_id="4" parent="2"/>
<!-- as soon as condition 4 is satisfied,
the neighbouring space unit to West of the dimer is empty
and the dimer identified by conditions (1,2) can be moved to West. -->
</conditions>
<transitions>
<transition id="move_a_dimer_to_east" date="1629811111" author="Jean" parent="3" probability="1">
<arrow x="0" y="0" z="0" site="1" weight="0"/>
<arrow x="1" y="0" z="0" site="2" weight="0"/>
<arrow x="1" y="0" z="0" site="1" weight="1"/>
<arrow x="2" y="0" z="0" site="2" weight="1"/>
</transition>
<transition id="move_a_dimer_to_west" date="1629811112" author="Jean" parent="4" probability="1">
<arrow x="0" y="0" z="0" site="1" weight="0"/>
<arrow x="1" y="0" z="0" site="2" weight="0"/>
<arrow x="0" y="0" z="0" site="2" weight="1"/>
<arrow x="-1" y="0" z="0" site="1" weight="1"/>
</transition>
</transitions>
</gem-graph-model>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- https://www.freeformatter.com/xml-validator-xsd.html --> <!-- https://www.freeformatter.com/xml-validator-xsd.html -->
<!-- https://www.w3schools.com/xml/el_attribute.asp -->
<xs:attribute name="id" type="xs:string"/> <xs:attribute name="id" type="xs:string"/>
<xs:attribute name="node_id" type="xs:integer"/> <xs:attribute name="node_id" type="xs:integer"/>
<xs:attribute name="parent" type="xs:integer"/>
<xs:attribute name="date" type="xs:integer"/> <xs:attribute name="date" type="xs:integer"/>
<xs:attribute name="name" type="xs:string"/> <xs:attribute name="name" type="xs:string"/>
<xs:attribute name="lang" type="xs:string"/> <xs:attribute name="lang" type="xs:string"/>
@ -11,14 +11,16 @@
<xs:attribute name="owner_id" type="xs:integer"/> <xs:attribute name="owner_id" type="xs:integer"/>
<xs:attribute name="author" type="xs:string"/> <xs:attribute name="author" type="xs:string"/>
<xs:attribute name="version" type="xs:float"/> <xs:attribute name="version" type="xs:float"/>
<xs:attribute name="sequence" type="xs:integer"/>
<xs:attribute name="probability" type="xs:integer"/> <xs:attribute name="probability" type="xs:integer"/>
<xs:attribute name="parent" type="xs:integer"/>
<xs:attribute name="x" type="xs:integer" default="0"/>
<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="0"/> <xs:attribute name="site" type="xs:integer" default="0"/>
<xs:attribute name="weight" type="xs:integer" default="0"/> <xs:attribute name="weight" type="xs:integer" default="0"/>
<xs:attribute name="u" type="xs:integer"/>
<xs:attribute name="v" type="xs:integer"/>
<xs:attribute name="w" type="xs:integer"/>
<xs:attribute name="x" type="xs:integer"/>
<xs:attribute name="y" type="xs:integer"/>
<xs:attribute name="z" type="xs:integer"/>
<xs:attribute name="t" type="xs:integer"/>
<xs:attributeGroup name="id_date_author"> <xs:attributeGroup name="id_date_author">
@ -27,14 +29,6 @@
<xs:attribute ref="author"/> <xs:attribute ref="author"/>
</xs:attributeGroup> </xs:attributeGroup>
<xs:attributeGroup name="xyz_site_nb">
<xs:attribute ref="x"/>
<xs:attribute ref="y"/>
<xs:attribute ref="z"/>
<xs:attribute ref="site"/>
<xs:attribute ref="weight"/>
</xs:attributeGroup>
<xs:element name="g_ref"> <xs:element name="g_ref">
<xs:complexType> <xs:complexType>
<xs:simpleContent> <xs:simpleContent>
@ -48,33 +42,45 @@
<xs:element name="quote" substitutionGroup="g_ref"/> <xs:element name="quote" substitutionGroup="g_ref"/>
<xs:element name="axis"> <xs:element name="dimension">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:attribute ref="u" use="optional"/>
<xs:element minOccurs="0" ref="quote"/> <xs:attribute ref="v" use="optional"/>
</xs:sequence> <xs:attribute ref="w" use="optional"/>
<xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute ref="x" use="optional"/>
<xs:attribute name="size" type="xs:integer" use="required"/> <xs:attribute ref="y" use="optional"/>
<xs:attribute ref="z" use="optional"/>
<xs:attribute ref="t" use="optional"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="arrow"> <xs:element name="arrow">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:attribute ref="site" use="required"/>
<xs:element minOccurs="0" ref="quote"/> <xs:attribute ref="weight" use="required"/>
</xs:sequence> <xs:attribute ref="u" use="optional"/>
<xs:attributeGroup ref="xyz_site_nb"/> <xs:attribute ref="v" use="optional"/>
<xs:attribute ref="w" use="optional"/>
<xs:attribute ref="x" use="optional"/>
<xs:attribute ref="y" use="optional"/>
<xs:attribute ref="z" use="optional"/>
<xs:attribute ref="t" use="optional"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="condition"> <xs:element name="condition">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:attribute ref="site" use="required"/>
<xs:element minOccurs="0" ref="quote"/> <xs:attribute ref="weight" use="required"/>
</xs:sequence>
<xs:attributeGroup ref="xyz_site_nb"/>
<xs:attribute ref="node_id" use="required"/> <xs:attribute ref="node_id" use="required"/>
<xs:attribute ref="parent" use="required"/> <xs:attribute ref="parent" use="required"/>
<xs:attribute ref="u" use="optional"/>
<xs:attribute ref="v" use="optional"/>
<xs:attribute ref="w" use="optional"/>
<xs:attribute ref="x" use="optional"/>
<xs:attribute ref="y" use="optional"/>
<xs:attribute ref="z" use="optional"/>
<xs:attribute ref="t" use="optional"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
@ -89,16 +95,6 @@
<xs:element name="object" substitutionGroup="state"/> <xs:element name="object" substitutionGroup="state"/>
<xs:element name="space">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element ref="arrow"/>
</xs:sequence>
<xs:attributeGroup ref="id_date_author"/>
<xs:attribute ref="sequence" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="transition"> <xs:element name="transition">
<xs:complexType> <xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded"> <xs:sequence minOccurs="1" maxOccurs="unbounded">
@ -113,50 +109,38 @@
<xs:element name="gem-graph-model"> <xs:element name="gem-graph-model">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="identity"> <xs:element name="identity">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="name" type="xs:string"/> <xs:element name="name" type="xs:string"/>
<xs:element name="owner" type="xs:string"/> <xs:element name="owner" type="xs:string"/>
<xs:element name="owner_id" type="xs:integer"/> <xs:element name="owner_id" type="xs:integer"/>
<xs:element name="date" type="xs:integer"/> <xs:element name="date" type="xs:integer"/>
<xs:element name="version" type="xs:float"/> <xs:element name="version" type="xs:float"/>
<xs:element minOccurs="0" ref="g_ref"/> <xs:element ref="g_ref" minOccurs="1" maxOccurs="1"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="parameters"> <xs:element name="parameters">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="simulation"> <xs:element name="simulation">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="max_thread" type="xs:integer"/> <xs:element name="max_thread" type="xs:integer"/>
<xs:element name="max_cycles" type="xs:integer"/> <xs:element name="max_cycles" type="xs:integer"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="space-param"> <xs:element name="space-param">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence minOccurs="1" maxOccurs="1">
<xs:element ref="dimension"/>
<xs:element name="dimension">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element ref="axis"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="site_multiplicity" type="xs:integer"/> <xs:element name="site_multiplicity" type="xs:integer"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
@ -169,16 +153,16 @@
<xs:element name="objects"> <xs:element name="objects">
<xs:complexType> <xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded"> <xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element ref="state"/> <xs:element ref="object"/>
</xs:sequence> </xs:sequence>
<xs:attributeGroup ref="id_date_author"/> <xs:attributeGroup ref="id_date_author"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="savestates"> <xs:element name="savedstates">
<xs:complexType> <xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="space"/> <xs:element ref="state"/>
</xs:sequence> </xs:sequence>
<xs:attributeGroup ref="id_date_author"/> <xs:attributeGroup ref="id_date_author"/>
</xs:complexType> </xs:complexType>