<xsd:element name="glyph">
<xsd:annotation>
<xsd:documentation>
<p>The glyph element is:
<ul>
<li>either a stand-alone, high-level SBGN glyph (EPN, PN, compartment, etc),</li>
<li>or a sub-glyph (state variable, unit of information, inside of a complex, ...)</li>
</ul>
</p>
<p>In the first case, it appears directly in the glyph list of the map. In the second case, it is a child of another glyph element.</p>
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="SBGNBase">
<xsd:sequence>
<xsd:choice>
<xsd:annotation>
<xsd:documentation>
<p>The text inside a glyph is described:
<ul>
<li>either by a label element (optional) [process nodes can't have one],</li>
<li>or by a state element (optional) [for state variables only].</li>
</ul>
</p>
</xsd:documentation>
</xsd:annotation>
<xsd:element ref="sbgn:label" minOccurs="0" maxOccurs="1"/>
<xsd:element name="state" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>
<p>The state element should only be used for state variables. It replaces the label element used for other glyphs. It describes the text to be drawn inside the state variable.</p>
<p>A state must have a value, a variable, or both. If it has both, they are rendered as a concatenated string with @ in between.</p>
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:attribute name="value" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation>
<p>The value attribute represents the state of the variable. It can be:
<ul>
<li>either from a predefined set of string (P, S, etc.) which correspond to specific SBO terms (cf. SBGN specs),</li>
<li>or any arbitrary string.</li>
</ul>
</p>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="variable" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation>
<p>The variable attribute describes the site where the modification described by the value attribute occurs. It is:
<ul>
<li>optional when there is only one state variable on the parent EPN,</li>
<li>required when there is more than one state variable the parent EPN.</li>
</ul>
</p>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:choice>
<xsd:element name="clone" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>
<p>The clone element (which is optional) means the glyph carries a clone marker. It can contain an optional label.</p>
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="sbgn:label" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="callout" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>
<p>The callout element is only used for glyphs with class annotation. It contains the coordinate of the point where the annotation points to, as well as a reference to the element that is pointed to.</p>
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="sbgn:point" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="target" type="xsd:IDREF" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="entity" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>
<p>The entity is only used in activity flow diagrams. It can only be used on a unit of information glyph on a biological activity glyph, where it is compulsory. It is used to indicate the shape of this unit of information.</p>
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:attribute name="name" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="unspecified entity"/>
<xsd:enumeration value="simple chemical"/>
<xsd:enumeration value="macromolecule"/>
<xsd:enumeration value="nucleic acid feature"/>
<xsd:enumeration value="complex"/>
<xsd:enumeration value="perturbation"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element ref="sbgn:bbox" minOccurs="1" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>
<p>The bbox element is mandatory and unique: exactly one per glyph. It defines the outer bounding box of the glyph. The actual shape of the glyph can be irregular (for instance in the case of some compartments)</p>
<p>In the case of process nodes, the bounding box only concerns the central glyph (square, or circle): the input/output ports are not included, and neither are the lines connecting them to the central glyph.</p>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element ref="sbgn:glyph" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>
<p>A glyph element can contain any number of children glyph elements. In practice, this should only happen in the following cases:
<ul>
<li>a compartment with unit of information children,</li>
<li>an EPN with states variables and/or unit of information children,</li>
<li>a complex, with state variables, unit of info, and/or EPN children.</li>
</ul>
</p>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element ref="sbgn:port" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="class" use="required">
<xsd:annotation>
<xsd:documentation>
<p>The class attribute defines the semantic of the glyph, and influences:
<ul>
<li>the way that glyph should be rendered,</li>
<li>the overall syntactic validity of the map.</li>
</ul>
</p>
<p>The various classes encompass the following PD SBGN elements:
<ul>
<li>Entity Pool Nodes (EPN),</li>
<li>Process Nodes (PN),</li>
<li>Logic Operator Nodes,</li>
<li>Sub-glyphs on Nodes (State Variable, Unit of Information),</li>
<li>Sub-glyphs on Arcs (Stoichiometry Label),</li>
<li>Other glyphs (Compartment, Submap, Tag, Terminal).</li>
</ul>And the following ER SBGN elements
<ul>
<li>Entities (Entity, Outcome)</li>
<li>Other (Annotation, Phenotype)</li>
<li>Auxiliary on glyps (Existence, Location)</li>
<li>Auxiliary on arcs (Cardinality)</li>
<li>Delay operator</li>
<li>implicit xor</li>
</ul>
</p>
</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<!-- Entity Pool Node classes (PD only) -->
<xsd:enumeration value="unspecified entity"/>
<xsd:enumeration value="simple chemical"/>
<xsd:enumeration value="macromolecule"/>
<xsd:enumeration value="nucleic acid feature"/>
<xsd:enumeration value="simple chemical multimer"/>
<xsd:enumeration value="macromolecule multimer"/>
<xsd:enumeration value="nucleic acid feature multimer"/>
<xsd:enumeration value="complex"/>
<xsd:enumeration value="complex multimer"/>
<xsd:enumeration value="source and sink"/>
<!-- Activities (AF) -->
<!-- perturbation is deprecated in AF as Activity Node in milestone 3. -->
<xsd:enumeration value="perturbation"/>
<xsd:enumeration value="biological activity"/>
<!-- Entities (both PD and ER) -->
<xsd:enumeration value="perturbing agent"/>
<!-- Other (PD only) -->
<xsd:enumeration value="compartment"/>
<xsd:enumeration value="submap"/>
<xsd:enumeration value="tag"/>
<xsd:enumeration value="terminal"/>
<!-- Process Node classes (PD only) -->
<xsd:enumeration value="process"/>
<xsd:enumeration value="omitted process"/>
<xsd:enumeration value="uncertain process"/>
<xsd:enumeration value="association"/>
<xsd:enumeration value="dissociation"/>
<!-- PD, ER and AF -->
<xsd:enumeration value="phenotype"/>
<!-- Logical Operator classes (PD, ER and AF) -->
<xsd:enumeration value="and"/>
<xsd:enumeration value="or"/>
<xsd:enumeration value="not"/>
<!-- Subglyph on glyph classes (both PD and ER) -->
<xsd:enumeration value="state variable"/>
<xsd:enumeration value="unit of information"/>
<!-- Entities classes (ER) -->
<xsd:enumeration value="entity"/>
<xsd:enumeration value="outcome"/>
<!-- Other (ER) -->
<xsd:enumeration value="interaction"/>
<xsd:enumeration value="influence target"/>
<xsd:enumeration value="annotation"/>
<xsd:enumeration value="variable value"/>
<xsd:enumeration value="implicit xor"/>
<!-- Logical Operator classes (ER and AF) -->
<xsd:enumeration value="delay"/>
<!-- Auxiliary on glyph classes -->
<xsd:enumeration value="existence"/>
<xsd:enumeration value="location"/>
<!-- Auxiliary on arc classes -->
<xsd:enumeration value="cardinality"/>
<!-- used for cis / trans and stoichiometry -->
<!-- NB Arc classes are in a separate enumeration -->
<!-- The use of observable is deprecated in newer versions of SBGN.
Because it occurs in older versions of the SBGN spec,
we will keep it around indefinitely.
!-->
<xsd:enumeration value="observable"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="orientation" default="horizontal">
<xsd:annotation>
<xsd:documentation>
<p>The orientation attribute is used to express how to draw asymmetric glyphs. In PD, the orientation of Process Nodes is either horizontal or vertical. It refers to an (imaginary) line connecting the two in/out sides of the PN. In PD, the orientation of Tags and Terminals can be left, right, up or down. It refers to the direction the arrow side of the glyph is pointing at.</p>
</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<!-- horizontal / vertical are for process nodes -->
<xsd:enumeration value="horizontal"/>
<xsd:enumeration value="vertical"/>
<!-- left / right / up / down are for tags and terminals -->
<xsd:enumeration value="left"/>
<xsd:enumeration value="right"/>
<xsd:enumeration value="up"/>
<xsd:enumeration value="down"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="id" type="xsd:ID" use="required">
<xsd:annotation>
<xsd:documentation>
<p>The xsd:ID type is an alphanumeric identifier, starting with a letter. It is recommended to generate meaningless IDs (e.g. "glyph1234") and avoid IDs with a meaning (e.g. "epn_ethanol")</p>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="compartmentRef" type="xsd:IDREF" use="optional">
<xsd:annotation>
<xsd:documentation>
<p>Reference to the ID of the compartment that this glyph is part of. Only use this if there is at least one explicit compartment present in the diagram. Compartments are only used in PD and AF, and thus this attribute as well. For PD, this should be used only for EPN's. For AF, this should be used only for Activity Nodes.</p>
<p>In case there are no compartments, entities that can have a location, such as EPN's, are implicit member of an invisible compartment that encompasses the whole map. In that case, this attribute must be omitted.</p>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="compartmentOrder" type="xsd:float" use="optional">
<xsd:annotation>
<xsd:documentation>
<p>The compartment order attribute can be used to define a drawing order for compartments. It enables tools to draw compartments in the correct order especially in the case of overlapping compartments. Compartments are only used in PD and AF, and thus this attribute as well.</p>
<p>The attribute is of type float, the attribute value has not to be unique. Compartments with higher compartment order are drawn on top. The attribute is optional and should only be used for compartments.</p>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="mapRef" type="xsd:IDREF" use="optional">
<xsd:annotation>
<xsd:documentation>
<p>This attribute is only used on a submap glyph. It is required.</p>
<p>Reference to the ID of the map which provides the content of the submap. If no map is available providing the content of the submap an omitted process should be used instead of the submap. Submaps are only used in PD and AF, and thus this attribute as well.</p>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="tagRef" type="xsd:IDREF" use="optional">
<xsd:annotation>
<xsd:documentation>
<p>This attribute is only used on a terminal glyph. It is required.</p>
<p>Reference to the ID of a tag on a map providing the content of a submap. The terminal glyph is defined as sub-glyph of this submap. Submaps and therefore terminals are only used in PD and AF, and thus this attribute as well.</p>
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element> |