WIP: XMLS non redondant et renommages

This commit is contained in:
Jean Sirmai 2021-12-05 17:44:05 +01:00
parent 544a34de7c
commit 16eb05fa05
Signed by: jean
GPG Key ID: FB3115C340E057E3
2 changed files with 74 additions and 104 deletions

View File

@ -1,22 +1,20 @@
<?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">
<!-- 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 +22,19 @@
</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>
<axis name="z" size="0"/> <coord axis="x" at="29"/>
</dimension> </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 +42,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"> <objects id="only dimers in this model" date="1630000000" author="inanimés,... âme ?">
<arrow x="0" y="0" z="0" site="1" weight="1"/> <object id="a dimer" date="1630000000" author="Alphonse">
<arrow x="1" y="0" z="0" site="2" weight="1"/> <arrow site="1" weight="1"><coord axis="x" at="0"/></arrow>
<arrow site="2" weight="1"><coord axis="x" at="1"/></arrow>
</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"> <savedstates id="texte" date="1630000000" author="Qui courrait dans l'herbe'">
<arrow x="0" y="0" z="0" site="1" weight="1"/> <state id="initial" date="1630000000" author="Une souris verte">
<arrow x="1" y="0" z="0" site="2" weight="1"/> <arrow site="1" weight="1"><coord axis="x" at="0"/></arrow>
<arrow site="2" weight="1"><coord axis="x" at="1"/></arrow>
<arrow x="10" y="0" z="0" site="1" weight="1"/> <arrow site="1" weight="1"><coord axis="x" at="10"/></arrow>
<arrow x="11" y="0" z="0" site="2" weight="1"/> <arrow site="2" weight="1"><coord axis="x" at="11"/></arrow>
<arrow site="1" weight="1"><coord axis="x" at="20"/></arrow>
<arrow x="20" y="0" z="0" site="1" weight="1"/> <arrow site="2" weight="1"><coord axis="x" at="21"/></arrow>
<arrow x="21" y="0" z="0" site="2" weight="1"/>
<!-- 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"><coord axis="x" at="0"/></condition>
<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"><coord axis="x" at="1"/></condition>
<!-- 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"><coord axis="x" at="2"/></condition>
<!-- 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"><coord axis="x" at="-1"/></condition>
<!-- 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,27 +94,26 @@
<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"><coord axis="x" at="0"/></arrow>
<arrow x="1" y="0" z="0" site="2" weight="0"/> <arrow site="2" weight="0"><coord axis="x" at="1"/></arrow>
<arrow x="1" y="0" z="0" site="1" weight="1"/> <arrow site="1" weight="1"><coord axis="x" at="1"/></arrow>
<arrow x="2" y="0" z="0" site="2" weight="1"/> <arrow site="2" weight="1"><coord axis="x" at="2"/></arrow>
</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"><coord axis="x" at="0"/></arrow>
<arrow x= "1" y="0" z="0" site="2" weight="0"/> <arrow site="2" weight="0"><coord axis="x" at="1"/></arrow>
<arrow x= "0" y="0" z="0" site="2" weight="1"/> <arrow site="2" weight="1"><coord axis="x" at="0"/></arrow>
<arrow x="-1" y="0" z="0" site="1" weight="1"/> <arrow site="1" weight="1"><coord axis="x" at="1"/></arrow>
</transition> </transition>
</transitions> </transitions>
</gem-graph-model> </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,12 +11,7 @@
<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"/>
@ -27,14 +22,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,31 +35,38 @@
<xs:element name="quote" substitutionGroup="g_ref"/> <xs:element name="quote" substitutionGroup="g_ref"/>
<xs:element name="axis"> <xs:element name="coord">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:attribute name="axis" type="xs:string" use="required"/>
<xs:element minOccurs="0" ref="quote"/> <xs:attribute name="at" type="xs:integer" use="required"/>
</xs:sequence> </xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/> </xs:element>
<xs:attribute name="size" type="xs:integer" use="required"/>
<xs:element name="dimension">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element ref="coord"/>
</xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="arrow"> <xs:element name="arrow">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element minOccurs="0" ref="quote"/> <xs:element ref="coord"/>
</xs:sequence> </xs:sequence>
<xs:attributeGroup ref="xyz_site_nb"/> <xs:attribute name="site" use="required"/>
<xs:attribute name="weight" use="required"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="condition"> <xs:element name="condition">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element minOccurs="0" ref="quote"/> <xs:element ref="coord" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
<xs:attributeGroup ref="xyz_site_nb"/> <xs:attribute name="site" use="required"/>
<xs:attribute name="weight" use="required"/>
<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:complexType> </xs:complexType>
@ -89,16 +83,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 +97,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 +141,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>