<graph>

<graph> (graphe) encode un graphe, c'est-à-dire un ensemble constitué de nœuds et d'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 de 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 nœud initial et un nœud 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 vers les extrêmités des arcs au lieu des attributs adjFrom et adjTo. Si l'attribut type est spécifié avec une valeur directed (ou toute autre valeur qui implique une orientation), les attributs 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 nœuds.
Statut Optionel
Type de données

<rng:ref name="data.count"/>
data.count
Valeurs Un entier positif.
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 Un entier non négatif.
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 nœuds et zéro, un ou plusieurs arcs dans un ordre quelconque.