<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Header -->
<xs:schema
    targetNamespace="http://graphml.graphdrawing.org/xmlns/graphml"
     
    xmlns="http://graphml.graphdrawing.org/xmlns/graphml"
    xmlns:g="http://graphml.graphdrawing.org/xmlns/graphml"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:y="http://www.yworks.com/xml/graphml"
    
    attributeFormDefault="unqualified"
    elementFormDefault="qualified"   >

  <xs:annotation>
    <xs:documentation>
      GraphML core language definitions including GraphML attributes and GraphML parseinfo.
    </xs:documentation>
  </xs:annotation>
  <xs:import namespace="http://www.yworks.com/xml/graphml" schemaLocation="yfeatures.xsd"/>

  <!--<xs:include schemaLocation="graphml-parseinfo.xsd"/>-->
  
  <!--<xs:include schemaLocation="graphml-parseinfo.xsd"/>-->
  
  <!-- Redefinition of the elements in the graphml-structure schema -->
  <xs:redefine schemaLocation="graphml-structure.xsd">

    <xs:attributeGroup name="key.extra.attrib">
      <xs:annotation>
        <xs:documentation>
          Redefinition of file graphml-structure.xsd.
          <p>Extends the attribute group key.extra.attrib (which takes
            part in the attribute list of &lt;key&gt;) by adding the
            attribute yfiles.type which is defined below.
          </p>
        </xs:documentation>
      </xs:annotation>
      <xs:attributeGroup ref="key.extra.attrib"/>
      <xs:attributeGroup ref="key.attributes.attrib"/>
      <xs:attribute name="yfiles.type" type="xs:string" use="optional">
        <xs:annotation>
          <xs:documentation>
            Custom yfiles specific attribute that allows to specify an additional data type.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
    </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>

    <!-- Definition of the different grouping types -->
    <!-- The grouping type is stored as attribute at the node element -->
    <xs:attributeGroup name="node.extra.attrib">
      <xs:annotation>
        <xs:documentation>
          Redefinition of file graphml-structure.xsd.
          <p>Extends the attribute group node.extra.attrib (which takes
            part in the attribute list of &lt;node&gt;) by adding a
            yfiles specific attribute for the folder type.
          </p>
        </xs:documentation>
      </xs:annotation>
      <xs:attributeGroup ref="node.extra.attrib"/>
      <xs:attributeGroup ref="node.parseinfo.attrib"/>
      <xs:attribute name="yfiles.foldertype" type="yfiles.foldertype.type" use="optional">
        <xs:annotation>
          <xs:documentation>
            The foldertype for group/folder nodes.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
    </xs:attributeGroup>

    <!-- Definition of the different node and edge types -->
    <xs:complexType name="data-extension.type">
      <xs:annotation>
        <xs:documentation>
          Redefinition of file graphml-structure.xsd.
          <p>Extends the type data-extension.type to allow specifically the content below (i.e. text only or
            all defined edge and node relaizers, resource blocks or postprocessors)
          </p>
        </xs:documentation>
      </xs:annotation>
      <xs:complexContent mixed="true">
        <xs:extension base="data-extension.type">
          <xs:choice maxOccurs="1" minOccurs="0">
            <xs:element ref="y:ShapeNode"/>
            <xs:element ref="y:ImageNode"/>
            <xs:element ref="y:GroupNode"/>
            <xs:element ref="y:GenericNode"/>
            <xs:element ref="y:GenericGroupNode"/>
            <xs:element ref="y:ProxyShapeNode"/>
            <xs:element ref="y:ProxyAutoBoundsNode"/>
            <xs:element ref="y:PolyLineEdge"/>
            <xs:element ref="y:ArcEdge"/>
            <xs:element ref="y:BezierEdge"/>
            <xs:element ref="y:SplineEdge"/>
            <xs:element ref="y:QuadCurveEdge"/>
            <xs:element ref="y:GenericEdge"/>
            <xs:element ref="y:Postprocessors"/>
            <xs:element ref="y:Resources"/>
          </xs:choice>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:redefine>

  <!-- Type of Grouping -->
  <xs:simpleType name="yfiles.foldertype.type">
    <xs:annotation>
      <xs:documentation>
        The valid folder types for a folder/group node.
        <p>Valid values are
          <ul>
            <li>
              <b>folder</b>: for folder nodes</li>
            <li>
              <b>group</b>: for group nodes</li>
            <li>
              <b>leaf</b>: for leaf nodes (this is the implied value)</li>
          </ul>
        </p>
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:NMTOKEN">
      <xs:enumeration value="folder"/>
      <xs:enumeration value="group"/>
      <xs:enumeration value="leaf"/>
    </xs:restriction>
  </xs:simpleType>

<!-- Copied from graphml.xsd -->

<!--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>
