<?xml version="1.0"?>

<xs:schema
    targetNamespace="http://graphml.graphdrawing.org/xmlns/graphml"

    xmlns="http://graphml.graphdrawing.org/xmlns/graphml"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"

    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    >

  <xs:annotation>
    <xs:documentation
        source="http://graphml.graphdrawing.org/"
        xml:lang="en">
     This document defines the GraphML language including GraphML attributes and GraphML parseinfo.
    </xs:documentation>
  </xs:annotation>
  <xs:redefine schemaLocation="graphml-structure.xsd">
    <xs:attributeGroup name="key.extra.attrib">
      <xs:annotation>
      <xs:documentation
          source="http://graphml.graphdrawing.org/"
          xml:lang="en">
        Redefinition of file graphml-structure.xsd.
        Extends the attribute group key.extra.attrib (which takes
        part in the attribute list of &lt;key>) by adding the
        attribute group key.attributes.attrib which is defined below.
      </xs:documentation>
    </xs:annotation>
      <xs:attributeGroup ref="key.extra.attrib"/>
      <xs:attributeGroup ref="key.attributes.attrib"/>
    </xs:attributeGroup>


    <xs:attributeGroup name="graph.extra.attrib">
      <xs:annotation>
      <xs:documentation
          source="http://graphml.graphdrawing.org/"
          xml:lang="en">
        Redefinition of file graphml-structure.xsd.
        Extends the attribute group node.extra.attrib (which takes
        part in the attribute list of &lt;node>) by adding the
        attribute group node.parseinfo.attrib which is defined below.
      </xs:documentation>
    </xs:annotation>
      <xs:attributeGroup ref="graph.extra.attrib"/>
      <xs:attributeGroup ref="graph.parseinfo.attrib"/>
    </xs:attributeGroup>


    <xs:attributeGroup name="node.extra.attrib">
     <xs:annotation>
      <xs:documentation
          source="http://graphml.graphdrawing.org/"
          xml:lang="en">
        Redefinition of file graphml-structure.xsd.
        Extends the attribute group graph.extra.attrib (which takes
        part in the attribute list of &lt;graph>) by adding the
        attribute group graph.parseinfo.attrib which is defined below.
      </xs:documentation>
    </xs:annotation>
      <xs:attributeGroup ref="node.extra.attrib"/>
      <xs:attributeGroup ref="node.parseinfo.attrib"/>
    </xs:attributeGroup>

  </xs:redefine>


  <!--types as in graphml-attributes.xsd -->

  <xs:simpleType name="key.name.type" final="#all">

    <xs:annotation>
      <xs:documentation
          source="http://graphml.graphdrawing.org/(Dokumentation der Attributes Erweiterung; entsprechende Stelle.html)"
          xml:lang="en">
        Simple type for the attr.name attribute of &lt;key>.
        key.name.type is final, that is, it may not be extended
        or restricted.
        key.name.type is a restriction of xs:NMTOKEN
        Allowed values: (no restriction)
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN"/>
  </xs:simpleType>


  <xs:simpleType name="key.type.type" final="#all">

    <xs:annotation>
      <xs:documentation
          source="http://graphml.graphdrawing.org/(Dokumentation der Attributes Erweiterung; entsprechende Stelle.html)"
          xml:lang="en">
        Simple type for the attr.type attribute of &lt;key>.
        key.type.type is final, that is, it may not be extended
        or restricted.
        key.type.type is a restriction of xs:NMTOKEN
        Allowed values: boolean, int, long, float, double, string, complex.
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="boolean"/>
      <xs:enumeration value="int"/>
      <xs:enumeration value="long"/>
      <xs:enumeration value="float"/>
      <xs:enumeration value="double"/>
      <xs:enumeration value="string"/>
      <xs:enumeration value="complex"/>
    </xs:restriction>
  </xs:simpleType>


  <xs:attributeGroup name="key.attributes.attrib">
    <xs:annotation>
      <xs:documentation
          source="http://graphml.graphdrawing.org/"
          xml:lang="en">
        Definition of the attribute group key.attributes.attrib.
        This group consists of the two optional attributes
        - attr.name (gives the name for the data function)
        - attr.type (declares the range of values for the data function)
      </xs:documentation>
    </xs:annotation>
    <xs:attribute name="attr.name" type="key.name.type" use="optional"/>
    <xs:attribute name="attr.type" type="key.type.type" use="optional"/>
  </xs:attributeGroup>

  <!--types as in graphml-parseinfo.xsd -->

  <xs:annotation>
    <xs:documentation 
        source="http://graphml.graphdrawing.org/"
        xml:lang="en">
       Simple type definitions for the new graph attributes.
    </xs:documentation>
  </xs:annotation>

  <xs:simpleType name="graph.order.type" final="#all">

  <xs:annotation>
    <xs:documentation 
        source="http://graphml.graphdrawing.org/"
        xml:lang="en">
      Simple type for the parse.order attribute of &lt;graph>.
      graph.order.type is final, that is, it may not be extended
                          or restricted.
      graph.order.type is a restriction of xs:NMTOKEN
      Allowed values: free, nodesfirst, adjacencylist.
    </xs:documentation>
  </xs:annotation>

    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="free"/>
      <xs:enumeration value="nodesfirst"/>
      <xs:enumeration value="adjacencylist"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="graph.nodes.type" final="#all">

  <xs:annotation>
    <xs:documentation 
        source="http://graphml.graphdrawing.org/"
        xml:lang="en">
      Simple type for the parse.nodes attribute of &lt;graph>.
      graph.nodes.type is final, that is, it may not be extended
                          or restricted.
      graph.nodes.type is a restriction of xs:nonNegativeInteger
      Allowed values: (no restriction).
    </xs:documentation>
  </xs:annotation>

    <xs:restriction base="xs:nonNegativeInteger"/>
  </xs:simpleType>

  <xs:simpleType name="graph.edges.type" final="#all">

  <xs:annotation>
    <xs:documentation 
        source="http://graphml.graphdrawing.org/"
        xml:lang="en">
      Simple type for the parse.edges attribute of &lt;graph>.
      graph.edges.type is final, that is, it may not be extended
                          or restricted.
      graph.edges.type is a restriction of xs:nonNegativeInteger
      Allowed values: (no restriction).
    </xs:documentation>
  </xs:annotation>

    <xs:restriction base="xs:nonNegativeInteger"/>
  </xs:simpleType>

  <xs:simpleType name="graph.maxindegree.type" final="#all">

  <xs:annotation>
    <xs:documentation 
        source="http://graphml.graphdrawing.org/"
        xml:lang="en">
      Simple type for the parse.maxindegree attribute of &lt;graph>.
      graph.maxindegree.type is final, that is, it may not be extended
                          or restricted.
      graph.maxindegree.type is a restriction of xs:nonNegativeInteger
      Allowed values: (no restriction).
    </xs:documentation>
  </xs:annotation>

    <xs:restriction base="xs:nonNegativeInteger"/>
  </xs:simpleType>

  <xs:simpleType name="graph.maxoutdegree.type" final="#all">

  <xs:annotation>
    <xs:documentation 
        source="http://graphml.graphdrawing.org/"
        xml:lang="en">
      Simple type for the parse.maxoutdegree attribute of &lt;graph>.
      graph.maxoutdegree.type is final, that is, it may not be extended
                          or restricted.
      graph.maxoutdegree.type is a restriction of xs:nonNegativeInteger
      Allowed values: (no restriction).
    </xs:documentation>
  </xs:annotation>

    <xs:restriction base="xs:nonNegativeInteger"/>
  </xs:simpleType>

  <xs:simpleType name="graph.nodeids.type" final="#all">

  <xs:annotation>
    <xs:documentation 
        source="http://graphml.graphdrawing.org/"
        xml:lang="en">
      Simple type for the parse.nodeids attribute of &lt;graph>.
      graph.nodeids.type is final, that is, it may not be extended
                          or restricted.
      graph.nodeids.type is a restriction of xs:string
      Allowed values: (no restriction).
    </xs:documentation>
  </xs:annotation>

    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="canonical"/>
      <xs:enumeration value="free"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="graph.edgeids.type" final="#all">

  <xs:annotation>
    <xs:documentation 
        source="http://graphml.graphdrawing.org/"
        xml:lang="en">
      Simple type for the parse.edgeids attribute of &lt;graph>.
      graph.edgeids.type is final, that is, it may not be extended
                          or restricted.
      graph.edgeids.type is a restriction of xs:string
      Allowed values: (no restriction).
    </xs:documentation>
  </xs:annotation>

    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="canonical"/>
      <xs:enumeration value="free"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:attributeGroup name="graph.parseinfo.attrib">

  <xs:annotation>
    <xs:documentation 
        source="http://graphml.graphdrawing.org/"
        xml:lang="en">
     Definition of the attribute group graph.parseinfo.attrib.
     This group consists of the seven attributes:
     <ul>
     <li><code>parse.nodeids</code></li> (fixed to 'canonical' meaning that the id attribute
                      of &lt;node> follows the pattern 'n[number]),
     <li><code>parse.edgeids</code></li> (fixed to 'canonical' meaning that the id attribute
                      of &lt;edge> follows the pattern 'e[number]),
     <li><code>parse.order</code></li> (required; one of the values 'nodesfirst', 
                    'adjacencylist' or 'free'),
     <li><code>parse.nodes</code></li> (required; number of nodes in this graph), 
     <li><code>parse.edges</code></li> (required; number of edges in this graph), 
     <li><code>parse.maxindegree</code></li> (optional; maximal indegree of a node in this graph),
     <li><code>parse.maxoutdegree</code></li> (optional; maximal outdegree of a node in this graph)
     </ul>
    </xs:documentation>
  </xs:annotation>

    <xs:attribute name="parse.nodeids" type="graph.nodeids.type"/>
    <xs:attribute name="parse.edgeids" type="graph.edgeids.type"/>
    <xs:attribute name="parse.order" type="graph.order.type"/>
    <xs:attribute name="parse.nodes" type="graph.nodes.type"/>
    <xs:attribute name="parse.edges" type="graph.edges.type"/>
    <xs:attribute name="parse.maxindegree" type="graph.maxindegree.type" use="optional"/>
    <xs:attribute name="parse.maxoutdegree" type="graph.maxoutdegree.type" use="optional"/>
  </xs:attributeGroup>



  <xs:annotation>
    <xs:documentation 
        source="http://graphml.graphdrawing.org/"
        xml:lang="en">
       Simple type definitions for the new node attributes.
    </xs:documentation>
  </xs:annotation>

  <xs:simpleType name="node.indegree.type" final="#all">

  <xs:annotation>
    <xs:documentation 
        source="http://graphml.graphdrawing.org/"
        xml:lang="en">
      Simple type for the parse.indegree attribute of &lt;node>.
      node.indegree.type is final, that is, it may not be extended
                          or restricted.
      node.indegree.type is a restriction of xs:nonNegativeInteger
      Allowed values: (no restriction).
    </xs:documentation>
  </xs:annotation>

    <xs:restriction base="xs:nonNegativeInteger"/>
  </xs:simpleType>

  <xs:simpleType name="node.outdegree.type" final="#all">

  <xs:annotation>
    <xs:documentation 
        source="http://graphml.graphdrawing.org/"
        xml:lang="en">
      Simple type for the parse.outdegree attribute of &lt;node>.
      node.outdegree.type is final, that is, it may not be extended
                          or restricted.
      node.outdegree.type is a restriction of xs:nonNegativeInteger
      Allowed values: (no restriction).
    </xs:documentation>
  </xs:annotation>

    <xs:restriction base="xs:nonNegativeInteger"/>
  </xs:simpleType>

  <xs:attributeGroup name="node.parseinfo.attrib">

  <xs:annotation>
    <xs:documentation 
        source="http://graphml.graphdrawing.org/"
        xml:lang="en">
     Definition of the attribute group node.parseinfo.attrib.
     This group consists of two attributes
     - parse.indegree (optional; indegree of this node),
     - parse.outdegree (optional; outdegree of this node).
    </xs:documentation>
  </xs:annotation>

    <xs:attribute name="parse.indegree" type="node.indegree.type" use="optional"/>
    <xs:attribute name="parse.outdegree" type="node.outdegree.type" use="optional"/>
  </xs:attributeGroup>

</xs:schema>
