New model format (reforged)

This commit is contained in:
Adrien Bourmault 2021-09-21 15:55:18 +02:00
parent 299ca225a0
commit 242d6a9cd6
No known key found for this signature in database
GPG Key ID: 6EB408FE0ACEC664
3 changed files with 95 additions and 174 deletions

View File

@ -1,99 +1,140 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<gem-graph-model> <gem-graph-model version="0.1">
<!-- Model identity informations -->
<identity> <identity>
<anything_but_not_just_the_word_name>Modèle de test</anything_but_not_just_the_word_name> <name>Modèle de test</name>
<name value="(Trois dimères)"/>
<owner>2</owner> <owner>Gaston Lagaffe</owner>
<owner_id>2</owner_id>
<date>1629830000</date> <date>1629830000</date>
<version>1.0</version> <version>1.0</version>
</identity> </identity>
<parameters id="0" date="0" author="Gaston Lagaffe"> <!-- Model parameters -->
<parameters id="texte" date="0" author="Gaston Lagaffe">
<modelization> <simulation>
<max_thread value="0"/> <max_thread value="0"/>
<max_cycles value="13"/> <max_cycles value="13"/>
</modelization>
<space> </simulation>
<space-param>
<dimension value="1"/> <dimension value="1"/>
<size value="39"/> <size value="39"/>
<site_multiplicity value="2"/> <site_multiplicity value="2"/>
<boundaries/>
</space> </space-param>
</parameters> </parameters>
<objects id="A list of connex states" date="1629830000" author="Jean Sirmai"> <!-- Model objects definition -->
<objects id="texte" date="1629830000" author="Jean Sirmai">
<state id="dimer 1-1" 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="0" y="0" z="0" site="1" weight="1"/>
<arrow x="1" y="0" z="0" site="0" weight="1"/> <arrow x="1" y="0" z="0" site="0" weight="1"/>
</state>
<state id="dimer 2-2" date="1629830000" author="Jean Sirmai"> </object>
<object id="dimer 2-2" date="1629830000" author="Jean Sirmai">
<arrow x="0" y="0" z="0" site="1" weight="2"/> <arrow x="0" y="0" z="0" site="1" weight="2"/>
<arrow x="1" y="0" z="0" site="0" weight="2"/> <arrow x="1" y="0" z="0" site="0" weight="2"/>
</state>
<state id="dimer 3-3" date="1629830000" author="Jean Sirmai"> </object>
<object id="dimer 3-3" date="1629830000" author="Jean Sirmai">
<arrow x="0" y="0" z="0" site="1" weight="3"/> <arrow x="0" y="0" z="0" site="1" weight="3"/>
<arrow x="1" y="0" z="0" site="0" weight="3"/> <arrow x="1" y="0" z="0" site="0" weight="3"/>
</state>
<!-- Just for the fun ! Can you imagine a rules in a next model ? --> </object>
<state id="dimer 1-2" date="1629830000" author="Jean Sirmai">
<arrow x="0" y="0" z="0" site="1" weight="1"/>
<arrow x="1" y="0" z="0" site="0" weight="2"/>
</state>
</objects> </objects>
<state id="initial state" date="1629830000" author="Jean Sirmai"> <!-- Saved space description (initial space is sequence 0) -->
<!-- three dimers of three types (1-1, 2-2, 3-3) are defined in three locations--> <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="0" y="0" z="0" site="1" weight="1"/>
<arrow x="1" y="0" z="0" site="0" weight="1"/> <arrow x="1" y="0" z="0" site="0" weight="1"/>
<arrow x="10" y="0" z="0" site="1" weight="2"/> <arrow x="10" y="0" z="0" site="1" weight="1"/>
<arrow x="11" y="0" z="0" site="0" weight="2"/> <arrow x="11" y="0" z="0" site="0" weight="1"/>
<arrow x="20" y="0" z="0" site="1" weight="3"/> <arrow x="20" y="0" z="0" site="1" weight="1"/>
<arrow x="21" y="0" z="0" site="0" weight="3"/> <arrow x="21" y="0" z="0" site="0" weight="1"/>
</state> </space>
<produced_states id="a computed state" date="000" author="THE MATRIX (you know it...)"> </savestates>
</produced_states>
<transitions id="how many ?" date="000" author="THE SUPER MATRIX (you did'not know it ? Did you ?...)"> <!-- Model transitions definition (rules) -->
<transitions id="texte" date="1629830000" author="THE SUPER MATRIX">
<transition id="texte" date="1629830000" author="Bob" parent="texte"
probability="1">
<quote id="texte" date="1629830000" author="Bob" lang="fr">
Moves a dimer to east.
</quote>
<transition id="0" date="1629830000" author="Jean Sirmai" probability="1"> <!-- moves a dimer to east--> <if>
<state id="initial transition state" date="0" author="Jean Sirmai">
<arrow x="0" y="0" z="0" site="1" weight="1"/> <arrow x="0" y="0" z="0" site="1" weight="1"/>
<arrow x="1" y="0" z="0" site="0" weight="1"/> <!-- a dimer is identified-->
<!-- the local space origin is its "west" particule-->
<arrow x="2" y="0" z="0" site="1" weight="0"/> <!-- the east location next this dimer is empty-->
<arrow x="3" y="0" z="0" site="0" weight="0"/> <!-- In this very simple model, I do not need to check this condition-->
</state> <arrow x="1" y="0" z="0" site="0" weight="1">
<quote lang="fr">A dimer is identified</quote>
</arrow>
<arrow x="2" y="0" z="0" site="1" weight="0">
<quote lang="fr">
The east location next this dimer is empty
</quote>
</arrow>
<arrow x="3" y="0" z="0" site="0" weight="0">
<quote lang="fr">
In this very simple model, I do not need to check this condition
</quote>
</arrow>
</if>
<then>
<quote>
Therefore I can (and I want to) move it to its next east location
</quote>
<state id="final transition state" date="0" author="Jean Sirmai"> <!-- Therefore I can (and I want to) move it to its next east location-->
<arrow x="0" y="0" z="0" site="1" weight="0"/> <arrow x="0" y="0" z="0" site="1" weight="0"/>
<arrow x="1" y="0" z="0" site="0" weight="0"/> <!-- The identified dimer no more exists ( :-(( --> <arrow x="1" y="0" z="0" site="0" weight="0">
<arrow x="1" y="0" z="0" site="1" weight="1"/> <quote>The identified dimer no more exists ( :-(( </quote>
<arrow x="2" y="0" z="0" site="0" weight="1"/> <!-- Happily, it is now rebuilt at its east location ( ;-))-->
</state> </arrow>
<arrow x="1" y="0" z="0" site="1" weight="1"/>
<arrow x="2" y="0" z="0" site="0" weight="1">
<quote>
Happily, it is now rebuilt at its east location ( ;-))
</quote>
</arrow>
</then>
</transition> </transition>
</transitions> </transitions>
<ref></ref> <!-- Non context-specific tags, designed to annotate anything -->
<ref id="texte" date="1629830000" author="Jean" lang="ref"></ref>
<quote></quote> <quote id="texte" date="1629830000" author="Jean" lang="ref"></quote>
</gem-graph-model> </gem-graph-model>

View File

@ -6,17 +6,6 @@
<!-- use="required" is NOT allowed in attributes declarations--> <!-- use="required" is NOT allowed in attributes declarations-->
<!-- To know : Attribute 'name' Cannot Appear In Element 'element'.--> <!-- 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"/ --> <!-- xs:element name="name" type="xs:string"/ -->
<!-- Cos-element-consistent: Error For Type '#AnonType_identitygem-graph-model'. <!-- Cos-element-consistent: Error For Type '#AnonType_identitygem-graph-model'.
Multiple Elements With Name 'name', With Different Types, Appear In The Model Group. --> Multiple Elements With Name 'name', With Different Types, Appear In The Model Group. -->
@ -89,14 +78,7 @@
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="anything_but_not_just_the_word_name" type="xs:string"/> <xs:element name="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" type="xs:integer"/> <xs:element name="owner" 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"/>

View File

@ -1,102 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- TODO DTD or XML Schema-->
<gem-graph-model version="0.1">
<!-- Model identity informations -->
<identity>
<name>Model created for testing purposes</name>
<name value="(Three dimers)"/>
<owner>Jean Sirmai</owner>
<owner_id>2</owner_id>
<date>1629830000</date> <!--Warning: it's an arbitrary unchecked date...-->
<version>1.0</version>
</identity>
<!-- Model parameters -->
<parameters id="test" date="1629830000" author="Jean Sirmai">
<modelization>
<max_thread value="0"/> <!--Why "0" ?-->
<max_cycles value="13"/>
</modelization>
<space_param>
<dimension value="1"/>
<size x="39" y="0" z="0"/>
<site_multiplicity value="2"/> <!-- Indicates that there are two sites per cell-->
<boundaries/> <!-- TODO -->
</space_param>
</parameters>
<!-- Model objects definition -->
<objects>
<object id="dimer" date="1629830000" author="Jean Sirmai">
<!-- A dimer is made of two linked adjacent particles.-->
<!-- Site 1 of particle 0 points at east to next particle.-->
<!-- Site 0 of particle 1 points at west to previous particle.-->
<arrow x="0" y="0" z="0" site="0" weight="0"/>
<arrow x="0" y="0" z="0" site="1" weight="1"/>
<arrow x="1" y="0" z="0" site="0" weight="1"/>
<arrow x="1" y="0" z="0" site="1" weight="0"/>
</object>
</objects>
<!-- Space description (initial state) -->
<space id="test" date="1629830000" author="Jean Sirmai">
<arrow x="0" y="0" z="0" site="1" weight="1"/>
<arrow x="1" y="0" z="0" site="0" weight="1"/>
<arrow x="10" y="0" z="0" site="1" weight="1"/>
<arrow x="11" y="0" z="0" site="0" weight="1"/>
<arrow x="20" y="0" z="0" site="1" weight="1"/>
<arrow x="21" y="0" z="0" site="0" weight="1"/>
<!-- three dimers have been defined-->
</space>
<!-- Saved space description (saved states) -->
<savestates id="test" date="1629830000" author="Jean Sirmai">
<space id="test" date="1629830000" author="Jean Sirmai">
</space>
</savestates>
<!-- Model transitions definition (rules) -->
<transitions id="test" date="1629830000" author="Jean Sirmai">
<transition id="0" date="1629830000" author="Jean Sirmai" probability="1"> <!-- moves a dimer to east-->
<if>
<arrow x="0" y="0" z="0" site="1" weight="1"/>
<arrow x="1" y="0" z="0" site="0" weight="1"/> <!-- a dimer is identified-->
<!-- the local space origin is its "west" particule-->
<arrow x="2" y="0" z="0" site="1" weight="0"/> <!-- the east location next this dimer is empty-->
<arrow x="3" y="0" z="0" site="0" weight="0"/> <!-- In this very simple model, I do not need to check this condition-->
</if>
<then> <!-- Therefore I can (and I want to) move it to its next east location-->
<arrow x="0" y="0" z="0" site="1" weight="0"/>
<arrow x="1" y="0" z="0" site="0" weight="0"/> <!-- The identified dimer no more exists ( :-(( -->
<arrow x="1" y="0" z="0" site="1" weight="1"/>
<arrow x="2" y="0" z="0" site="0" weight="1"/> <!-- Happily, it is now rebuilt at its east location ( ;-))-->
</then>
</transition>
</transitions>
<!-- Non context-specific tags -->
<ref id="Best reference!" date="1629830000" author="Jean Sirmai" lang="fr">
https://www.a-lec.org
</ref>
<quote>This is a quote.</quote>
</gem-graph-model>