<graph>

<graph> (graphe) encode un graphe, c'est-à-dire un ensemble constitué de noeuds et des arcs qui les relient entre eux. 19.1 Graphs and Digraphs
Module nets — 19 Graphs, Networks, and Trees
En complément des attributs globaux
type décrit le type d'un graphe.
Statut Recommendé
Type de données

<rng:ref name="data.enumerated"/>
data.enumerated
Les valeurs suggérées comprennent:
undirected
graphe non orienté.
directed
graphe orienté.
transitionNetwork
un graphe orienté avec un noeud initial et un noeud terminal bien distincts.
transducer
un réseau de transition avec jusqu'à deux étiquettes par arc.
Note
Si l'attribut type est spécifié avec une valeur undirected, la distinction entre les attributs to et from de la balise arc est neutralisée. Dans ce cas l'attribut adj doit également être utilisé pour encoder les pointeurs aux extrémités des arcs au lieu des attributs adjFrom et adjTo. Si l'attribut type est spécifié avec une valeur directed (ou tout autre valeur qui implique une directionalité), les attibuts adjFrom et adjTo doivent être utilisés plutôt que l'attribut adj.
order établit l'ordre du graphe, c'est-à-dire le nombre de ses noeuds.
Statut Optionel
Type de données

<rng:ref name="data.count"/>
data.count
Valeurs A positive integer.
size établit la taille du graphe, c'est-à-dire le nombre de ses arcs.
Statut Optionel
Type de données

<rng:ref name="data.count"/>
data.count
Valeurs A non-negative integer.
Utilisé par
Peut contenir
Declaration

<rng:element name="graph">
 <rng:ref name="att.global.attributes"/>
 <rng:optional>
  <rng:attribute name="type">
   <rng:choice>
    <rng:value>undirected</rng:value>
    <rng:value>directed</rng:value>
    <rng:value>transitionNetwork</rng:value>
    <rng:value>transducer</rng:value>
    <rng:data type="Name"/>
   </rng:choice>
  </rng:attribute>
 </rng:optional>
 <rng:optional>
  <rng:attribute name="order">
   <rng:ref name="data.count"/>
  </rng:attribute>
 </rng:optional>
 <rng:optional>
  <rng:attribute name="size">
   <rng:ref name="data.count"/>
  </rng:attribute>
 </rng:optional>
 <rng:group>
  <rng:optional>
   <rng:ref name="label"/>
   <rng:zeroOrMore>
    <rng:ref name="model.global"/>
   </rng:zeroOrMore>
  </rng:optional>
  <rng:choice>
   <rng:group>
    <rng:oneOrMore>
     <rng:ref name="node"/>
     <rng:zeroOrMore>
      <rng:ref name="model.global"/>
     </rng:zeroOrMore>
    </rng:oneOrMore>
    <rng:zeroOrMore>
     <rng:ref name="arc"/>
     <rng:zeroOrMore>
      <rng:ref name="model.global"/>
     </rng:zeroOrMore>
    </rng:zeroOrMore>
   </rng:group>
   <rng:group>
    <rng:oneOrMore>
     <rng:ref name="arc"/>
     <rng:zeroOrMore>
      <rng:ref name="model.global"/>
     </rng:zeroOrMore>
    </rng:oneOrMore>
    <rng:oneOrMore>
     <rng:ref name="node"/>
     <rng:zeroOrMore>
      <rng:ref name="model.global"/>
     </rng:zeroOrMore>
    </rng:oneOrMore>
   </rng:group>
  </rng:choice>
 </rng:group>
</rng:element>
element graph
{
   att.global.attributes,
   attribute type
   {
      "undirected" | "directed" | "transitionNetwork" | "transducer" | xsd:Name
   }?,
   attribute order { data.count }?,
   attribute size { data.count }?,
   (
      ( label, model.global* )?,
      (
         ( ( node, model.global* )+, ( arc, model.global* )* )
       | ( ( arc, model.global* )+, ( node, model.global* )+ )
      )
   )
}
Exemple
<graph
  xml:id="cug1"
  type="undirected"
  order="5"
  size="4"
  rend="LABEL-PLACE bottom center NODE-FRAME none ARC solid line">

 <label>Airline Connections in Southwestern USA</label>
 <node xml:id="lax" degree="2">
  <label>LAX</label>
 </node>
 <node xml:id="lvg" degree="2">
  <label>LVG</label>
 </node>
 <node xml:id="phx" degree="3">
  <label>PHX</label>
 </node>
 <node xml:id="tus" degree="1">
  <label>TUS</label>
 </node>
 <node xml:id="cib" degree="0">
  <label>CIB</label>
 </node>
 <arc from="#lax" to="#lvg"/>
 <arc from="#lax" to="#phx"/>
 <arc from="#lvg" to="#phx"/>
 <arc from="#phx" to="#tus"/>
</graph>
Note
un ou plusieurs noeuds et aucun à plusieurs arcs dans un ordre quelconque.