Submit your research to the International Journal "Notes on Intuitionistic Fuzzy Sets". Contact us at nifs.journal@gmail.com

Call for Papers for the 27th International Conference on Intuitionistic Fuzzy Sets is now open!
Conference: 5–6 July 2024, Burgas, Bulgaria • EXTENDED DEADLINE for submissions: 15 APRIL 2024.

GNschema.xsd

From Ifigenia, the wiki for intuitionistic fuzzy sets and generalized nets
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

GNschema.xsd ( XSD (15 Kb, Info))

<?xml version="1.0"?>
<!-- edited with XMLSpy v2007 sp2 (http://www.altova.com) by fr0zd (none) -->
<xsd:schema xmlns="http://www.clbme.bas.bg/GN" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xhtml="http://www.w3.org/1999/xhtml" targetNamespace="http://www.clbme.bas.bg/GN" elementFormDefault="qualified">
	<xsd:annotation>
		<xsd:documentation xml:lang="en">
			<xhtml:h1>This is version 1.10 of the GN schema</xhtml:h1>
			<xhtml:h2>Version history:</xhtml:h2>
			<xhtml:h3>Version 1.10</xhtml:h3>
			<xhtml:ul>
				<xhtml:li>Multiple gn elements can be written single gn-model document element</xhtml:li>
				<xhtml:li>Changes to visual information representation</xhtml:li>
			</xhtml:ul>
			<xhtml:h3>Version 1.9</xhtml:h3>
			<xhtml:ul>
				<xhtml:li>Visual information for elements included</xhtml:li>
			</xhtml:ul>
			<xhtml:h3>Version 1.8.1</xhtml:h3>
			<xhtml:ul>
				<xhtml:li>"random" type of generator added</xhtml:li>
			</xhtml:ul>
			<xhtml:h3>Version 1.8</xhtml:h3>
			<xhtml:ul>
				<xhtml:li>Predicate definitions changed</xhtml:li>
				<xhtml:li>References changed</xhtml:li>
			</xhtml:ul>
			<xhtml:h3>Version 1.7</xhtml:h3>
			<xhtml:ul>
				<xhtml:li>Namespace qualification has been introduced</xhtml:li>
				<xhtml:li>Namespace "http://www.clbme.bas.bg/GN" will be used for GN XML definitions</xhtml:li>
			</xhtml:ul>
			<xhtml:h3>Version 1.6</xhtml:h3>
			<xhtml:ul>
				<xhtml:li>The "common" attribute group has been created</xhtml:li>
				<xhtml:li>"generator" declared as an extension of "token"</xhtml:li>
				<xhtml:li>Sequence replaced with all in "gn" element</xhtml:li>
				<xhtml:li>The "integerInf" type has been added</xhtml:li>
				<xhtml:li>Some cosmetic changes and comments were added</xhtml:li>
			</xhtml:ul>
			<xhtml:h3>Version 1.5</xhtml:h3>
			<xhtml:ul>
				<xhtml:li>Merging of tokens in places is now supported via the "merge" and "mergeRule" attributes</xhtml:li>
				<xhtml:li>The "generatorType" has been provided as an enumeration type</xhtml:li>
			</xhtml:ul>
			<xhtml:h3>Version 1.4</xhtml:h3>
			<xhtml:ul>
				<xhtml:li>Token generators now supported via adding a "generator" alternative to the "token" element</xhtml:li>
				<xhtml:li>Generators can also be referenced by a keyref in place/@host</xhtml:li>
				<xhtml:li>Deprecation of old tokens with a default characteristics</xhtml:li>
			</xhtml:ul>
			<xhtml:h3>Version 1.3</xhtml:h3>
			<xhtml:ul>
				<xhtml:li>"import" element defined, "fundefs" attribute of "gn" element maintained for backward compatibility</xhtml:li>
				<xhtml:li>Mixed content model for "functions", inline function definitions permitted</xhtml:li>
				<xhtml:li>Multiple named characteristics for tokens are defined via "char" subelements of "token"</xhtml:li>
				<xhtml:li>Backward compatibility is still maintained for old GN models</xhtml:li>
			</xhtml:ul>
			<xhtml:h3>Version 1.2</xhtml:h3>
			<xhtml:ul>
				<xhtml:li>Some comments were added with suggestions to future expansions of the transitionType tags, input and output lists and predicate matrix. Special thanks to Evelina :)</xhtml:li>
			</xhtml:ul>
			<xhtml:h3>Version 1.1</xhtml:h3>
			<xhtml:ul>
				<xhtml:li>"entering" and "leaving" attributes of "token" added</xhtml:li>
				<xhtml:li>"timeStart" and "timeStep" attributes of "gn" element added</xhtml:li>
			</xhtml:ul>
			<xhtml:h3>Version 1.0</xhtml:h3>
			<xhtml:ul>
				<xhtml:li>First definition of the XML Schema</xhtml:li>
				<xhtml:li>Only one characteristic in tokens supported</xhtml:li>
			</xhtml:ul>
		</xsd:documentation>
	</xsd:annotation>
	<xsd:simpleType name="transitionType">
		<xsd:restriction base="xsd:string"/>
	</xsd:simpleType>
	<xsd:element name="point" type="visualPositionType"/>
	<xsd:complexType name="pointList">
		<xsd:sequence maxOccurs="unbounded">
			<xsd:element ref="point"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:simpleType name="capacityMatrix">
		<xsd:list itemType="xsd:nonNegativeInteger"/>
	</xsd:simpleType>
	<xsd:simpleType name="integerInf">
		<xsd:restriction base="xsd:integer">
			<xsd:minInclusive value="-1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="placeRefType">
		<xsd:all>
			<xsd:element name="arc" type="pointList" minOccurs="0"/>
		</xsd:all>
		<xsd:attribute name="ref" type="xsd:NMTOKEN" use="required"/>
	</xsd:complexType>
	<xsd:element name="transition">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="inputs">
					<xsd:complexType>
						<xsd:sequence maxOccurs="unbounded">
							<xsd:element name="input" type="placeRefType"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="outputs">
					<xsd:complexType>
						<xsd:sequence maxOccurs="unbounded">
							<xsd:element name="output" type="placeRefType"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="predicates">
					<xsd:complexType>
						<xsd:sequence minOccurs="0" maxOccurs="unbounded">
							<xsd:element name="predicate">
								<xsd:complexType>
									<xsd:simpleContent>
										<xsd:extension base="xsd:NMTOKEN">
											<xsd:attribute name="input" type="xsd:IDREF" use="required"/>
											<xsd:attribute name="output" type="xsd:IDREF" use="required"/>
										</xsd:extension>
									</xsd:simpleContent>
								</xsd:complexType>
							</xsd:element>
						</xsd:sequence>
						<xsd:attribute name="default" default="false">
							<xsd:simpleType>
								<xsd:restriction base="xsd:string">
									<xsd:enumeration value="true"/>
									<xsd:enumeration value="false"/>
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:attribute>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="capacities" type="capacityMatrix" minOccurs="0"/>
			</xsd:sequence>
			<xsd:attributeGroup ref="common"/>
			<xsd:attributeGroup ref="visualBounds"/>
			<xsd:attribute name="startTime" type="xsd:nonNegativeInteger" default="0"/>
			<xsd:attribute name="lifeTime" type="integerInf" default="-1"/>
			<xsd:attribute name="type" type="transitionType"/>
			<!-- The transition type can be an identifier of a predicate, which should be evaluated every time
             a transition is fired -->
		</xsd:complexType>
		<!-- keys -->
		<xsd:key name="inputKey">
			<xsd:selector xpath="inputs/input"/>
			<xsd:field xpath="@ref"/>
		</xsd:key>
		<xsd:key name="outputKey">
			<xsd:selector xpath="outputs/output"/>
			<xsd:field xpath="@ref"/>
		</xsd:key>
		<xsd:key name="predicateKey">
			<xsd:selector xpath="predicates/predicate"/>
			<xsd:field xpath="@input"/>
			<xsd:field xpath="@output"/>
		</xsd:key>
		<!-- keyrefs -->
		<xsd:keyref name="predicateInputRef" refer="inputKey">
			<xsd:selector xpath="predicates/predicate"/>
			<xsd:field xpath="@input"/>
		</xsd:keyref>
		<xsd:keyref name="predicateOutputRef" refer="outputKey">
			<xsd:selector xpath="predicates/predicate"/>
			<xsd:field xpath="@output"/>
		</xsd:keyref>
	</xsd:element>
	<xsd:attributeGroup name="common">
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="priority" type="xsd:nonNegativeInteger" default="0"/>
		<xsd:attribute name="name" type="xsd:string" default=""/>
	</xsd:attributeGroup>
	<xsd:attributeGroup name="visualPosition">
		<xsd:attribute name="positionX" type="visualCoordinatesType"/>
		<xsd:attribute name="positionY" type="visualCoordinatesType"/>
	</xsd:attributeGroup>
	<xsd:attributeGroup name="visualSize">
		<xsd:attribute name="sizeX" type="visualMetricType" default="0"/>
		<xsd:attribute name="sizeY" type="visualMetricType" default="0"/>
	</xsd:attributeGroup>
	<xsd:attributeGroup name="visualBounds">
		<xsd:attributeGroup ref="visualPosition"/>
		<xsd:attributeGroup ref="visualSize"/>
	</xsd:attributeGroup>
	<xsd:element name="place">
		<xsd:complexType>
			<xsd:attributeGroup ref="common"/>
			<xsd:attributeGroup ref="visualPosition"/>
			<xsd:attribute name="char" type="xsd:string" default="ID"/>
			<xsd:attribute name="capacity" type="integerInf" default="-1"/>
			<xsd:attribute name="merge" type="xsd:boolean" default="false"/>
			<xsd:attribute name="mergeRule" type="xsd:string" default="ID"/>
		</xsd:complexType>
	</xsd:element>
	<xsd:simpleType name="charType">
		<xsd:restriction base="xsd:string"/>
	</xsd:simpleType>
	<xsd:element name="char">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="charType">
					<xsd:attribute name="name" type="xsd:NMTOKEN" default="Default"/>
					<xsd:attribute name="type" type="xsd:string" use="required"/>
					<xsd:attribute name="history" type="xsd:positiveInteger" default="1"/>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:complexType name="tokenType">
		<xsd:sequence minOccurs="0" maxOccurs="unbounded">
			<xsd:element ref="char"/>
		</xsd:sequence>
		<xsd:attributeGroup ref="common"/>
		<xsd:attribute name="host" type="xsd:IDREF" use="required"/>
		<xsd:attribute name="entering" type="xsd:nonNegativeInteger" default="0"/>
		<xsd:attribute name="leaving" type="integerInf" default="-1"/>
		<!-- obsolete -->
		<!--
      <xsd:attribute name="history" type="xsd:positiveInteger" default="1"/>
      <xsd:attribute name="defaulttype" type="xsd:string" use="required"/>
      <xsd:attribute name="default" type="xsd:string" use="required"/>
-->
	</xsd:complexType>
	<xsd:simpleType name="generatorMode">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="periodic"/>
			<xsd:enumeration value="conditional"/>
			<xsd:enumeration value="random"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="generatorType">
		<xsd:complexContent>
			<xsd:extension base="tokenType">
				<xsd:attribute name="type" type="generatorMode" use="required"/>
				<xsd:attribute name="predicate" type="xsd:NMTOKEN" default="true"/>
				<xsd:attribute name="period" type="xsd:positiveInteger" default="1"/>
			</xsd:extension>
			<!-- generator attributes -->
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:simpleType name="functionType">
		<xsd:restriction base="xsd:string"/>
	</xsd:simpleType>
	<!-- not used for the moment
    functions are declared inline, without an id

  <xsd:element name="function">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="functionType">
	  <xsd:attribute name="id" type="xsd:ID" use="required"/>
	</xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>

    <xsd:key name="functionKey">
      <xsd:selector xpath="functions/function"/>
      <xsd:field xpath="@id"/>
    </xsd:key>

-->
	<xsd:element name="import">
		<xsd:complexType>
			<xsd:attribute name="fundefs" type="xsd:string"/>
		</xsd:complexType>
	</xsd:element>
	<xsd:simpleType name="unitsType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="px"/>
			<xsd:enumeration value="mm"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="visualMetricType">
		<xsd:restriction base="xsd:double">
			<xsd:minInclusive value="0"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="visualCoordinatesType">
		<xsd:restriction base="xsd:double"/>
	</xsd:simpleType>
	<xsd:complexType name="visualSizeType">
		<xsd:attributeGroup ref="visualSize"/>
	</xsd:complexType>
	<xsd:complexType name="visualPositionType">
		<xsd:attributeGroup ref="visualPosition"/>
	</xsd:complexType>
	<xsd:complexType name="visualBoundsType">
		<xsd:attributeGroup ref="visualBounds"/>
	</xsd:complexType>
	<xsd:element name="visual-parameters">
		<xsd:complexType>
			<xsd:all>
				<xsd:element name="metric">
					<xsd:complexType>
						<xsd:attribute name="units" type="unitsType" default="px"/>
						<xsd:attribute name="value" type="xsd:double" default="1"/>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="placeRadius" type="visualMetricType"/>
				<xsd:element name="transitionTriangleSize" type="visualSizeType"/>
			</xsd:all>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="gn-model">
		<xsd:complexType>
			<xsd:all>
				<xsd:element ref="gn"/>
				<xsd:element ref="visual-parameters" minOccurs="0"/>
			</xsd:all>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="gn">
		<xsd:complexType>
			<xsd:all>
				<!-- still not implemented
      
        <xsd:element name="constants" minOccurs="0">
          <xsd:complexType>
            <xsd:sequence minOccurs="0" maxOccurs="unbounded">
          </xsd:complexType>
        </xsd:element>
      -->
				<xsd:element name="transitions">
					<xsd:complexType>
						<xsd:sequence maxOccurs="unbounded">
							<xsd:element ref="transition"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="places">
					<xsd:complexType>
						<xsd:sequence minOccurs="0" maxOccurs="unbounded">
							<xsd:element ref="place"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="tokens">
					<xsd:complexType>
						<xsd:sequence minOccurs="0" maxOccurs="unbounded">
							<xsd:choice>
								<xsd:element name="token" type="tokenType">
									<xsd:unique name="uniqueTokenChar">
										<xsd:selector xpath="char"/>
										<xsd:field xpath="@name"/>
									</xsd:unique>
								</xsd:element>
								<xsd:element name="generator" type="generatorType">
									<xsd:unique name="uniqueGeneratorChar">
										<xsd:selector xpath="char"/>
										<xsd:field xpath="@name"/>
									</xsd:unique>
								</xsd:element>
							</xsd:choice>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="functions" minOccurs="0">
					<xsd:complexType mixed="true">
						<xsd:sequence minOccurs="0" maxOccurs="unbounded">
							<xsd:element ref="import"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element ref="visual-parameters" minOccurs="0"/>
			</xsd:all>
			<xsd:attributeGroup ref="visualBounds"/>
			<xsd:attribute name="name" type="xsd:ID" use="required"/>
			<xsd:attribute name="time" type="xsd:positiveInteger"/>
			<xsd:attribute name="timeStep" type="xsd:positiveInteger" default="1"/>
			<xsd:attribute name="timeStart" type="xsd:nonNegativeInteger" default="0"/>
			<xsd:attribute name="fundefs" type="xsd:string"/>
			<xsd:attribute name="root" type="xsd:boolean" default="false"/>
			<xsd:attribute name="language"/>
			<!-- deprecated -->
		</xsd:complexType>
		<!-- keys -->
		<xsd:key name="transitionKey">
			<xsd:selector xpath="transitions/transition"/>
			<xsd:field xpath="@id"/>
		</xsd:key>
		<xsd:key name="placeKey">
			<xsd:selector xpath="places/place"/>
			<xsd:field xpath="@id"/>
		</xsd:key>
		<xsd:key name="tokenKey">
			<xsd:selector xpath="tokens/token"/>
			<xsd:field xpath="@id"/>
		</xsd:key>
		<!-- keyrefs -->
		<xsd:keyref name="hostPlaceReference" refer="placeKey">
			<xsd:selector xpath="tokens/token | tokens/generator"/>
			<xsd:field xpath="@host"/>
		</xsd:keyref>
		<xsd:keyref name="transPlaceReference" refer="placeKey">
			<xsd:selector xpath="transitions/transition/inputs/input | transitions/transition/outputs/output"/>
			<xsd:field xpath="@ref"/>
		</xsd:keyref>
	</xsd:element>
</xsd:schema>