blob: 6e1a92c1f18e929340bef4c964f6cd73774af27d [file] [log] [blame]
<?xml version="1.0"?>
<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:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xlink="http://www.w3.org/1999/xlink"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
>
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
The schema corresponding to this document defines the structural
layer of the Graph Markup Language (GraphML).
Although a DTD is provided, this schema is, together with its extensions
http://graphml.graphdrawing.org/xmlns/1.0/graphml-attributes.xsd
and
http://graphml.graphdrawing.org/xmlns/1.0/graphml-parseinfo.xsd,
the only normative reference.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://www.w3.org/1999/xlink"
schemaLocation="xlink.xsd">
<xs:annotation>
<xs:documentation
xml:lang="en">
Get access to the xlink attribute groups for the attributes
xlink:href and xlink:type of locator.type.
</xs:documentation>
</xs:annotation>
</xs:import>
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
The attribute groups &lt;element_name>.extra.attrib may be used
for adding user defined attributes to the elements
&lt;element_name>.
The attribute group common.extra.attrib may be used for adding
user defined attributes to all elements.
</xs:documentation>
</xs:annotation>
<xs:attributeGroup name="common.extra.attrib"/>
<xs:attributeGroup name="graphml.extra.attrib">
<xs:attributeGroup ref="common.extra.attrib"/>
</xs:attributeGroup>
<xs:attributeGroup name="data.extra.attrib">
<xs:attributeGroup ref="common.extra.attrib"/>
</xs:attributeGroup>
<xs:attributeGroup name="key.extra.attrib">
<xs:attributeGroup ref="common.extra.attrib"/>
</xs:attributeGroup>
<xs:attributeGroup name="default.extra.attrib">
<xs:attributeGroup ref="common.extra.attrib"/>
</xs:attributeGroup>
<xs:attributeGroup name="graph.extra.attrib">
<xs:attributeGroup ref="common.extra.attrib"/>
</xs:attributeGroup>
<xs:attributeGroup name="node.extra.attrib">
<xs:attributeGroup ref="common.extra.attrib"/>
</xs:attributeGroup>
<xs:attributeGroup name="edge.extra.attrib">
<xs:attributeGroup ref="common.extra.attrib"/>
</xs:attributeGroup>
<xs:attributeGroup name="port.extra.attrib">
<xs:attributeGroup ref="common.extra.attrib"/>
</xs:attributeGroup>
<xs:attributeGroup name="hyperedge.extra.attrib">
<xs:attributeGroup ref="common.extra.attrib"/>
</xs:attributeGroup>
<xs:attributeGroup name="endpoint.extra.attrib">
<xs:attributeGroup ref="common.extra.attrib"/>
</xs:attributeGroup>
<xs:attributeGroup name="locator.extra.attrib">
<xs:attributeGroup ref="common.extra.attrib"/>
</xs:attributeGroup>
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Complex type definitions for the GraphML structural layer elements:
&lt;data>, &lt;default>, &lt;key>, &lt;graphml>, &lt;graph>,
&lt;node>, &lt;port>,
&lt;edge>, &lt;hyperedge>, &lt;endpoint> and &lt;locator>.
The names of the complex types are constructed corresponding
to the pattern element_name.type.
(The only remaining GraphML structural layer element
&lt;desc> is of simple type xs:string.)
</xs:documentation>
</xs:annotation>
<xs:complexType name="data-extension.type" mixed="true">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Extension mechanism for the content of &lt;data> and &lt;default>.
The complex type data-extension.type is empty per default.
Users may redefine this type in order to add content to
the complex types data.type and default.type which are
extensions of data-extension.type.
</xs:documentation>
</xs:annotation>
</xs:complexType>
<xs:complexType name="data.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Complex type for the &lt;data> element.
data.type is mixed, that is, &lt;data> may contain #PCDATA.
Content type: extension of data-extension.type which is empty
per default.
</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="true">
<xs:extension base="data-extension.type">
<xs:attribute name="key" type="xs:NMTOKEN" use="required">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">refers to the id attribute of a &lt;key>.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="id" type="xs:NMTOKEN" use="optional">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">identifies this &lt;data>.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup ref="data.extra.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
user defined extra attributes for &lt;data> elements
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="default.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Complex type for the &lt;default> element.
default.type is mixed, that is, data may contain #PCDATA.
Content type: extension of data-extension.type which is empty
per default.
</xs:documentation>
</xs:annotation>
<xs:complexContent mixed="true">
<xs:extension base="data-extension.type">
<xs:attributeGroup ref="default.extra.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
user defined extra attributes for &lt;default> elements
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="key.for.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Simple type for the for attribute of &lt;key>.
key.for.type is a restriction of xs:NMTOKEN
Allowed values: all, graphml, graph, node, edge, hyperedge, port and endpoint.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="all"/>
<xs:enumeration value="graph"/>
<xs:enumeration value="node"/>
<xs:enumeration value="edge"/>
<xs:enumeration value="hyperedge"/>
<xs:enumeration value="port"/>
<xs:enumeration value="endpoint"/>
<xs:enumeration value="graphml"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="key.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Complex type for the &lt;key> element.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="desc" minOccurs="0"/>
<xs:element ref="default" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="id" type="xs:NMTOKEN" use="required">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">identifies this &lt;key>.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="for" type="key.for.type" default="all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
describes the domain of definition for
the corresponding graph attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup ref="key.extra.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
user defined extra attributes for &lt;key> elements.
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:complexType>
<xs:complexType name="graphml.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Complex type for the &lt;graphml> element.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="desc" minOccurs="0"/>
<xs:element ref="key" minOccurs="0" maxOccurs="unbounded"/>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="graph"/>
<xs:element ref="data"/>
</xs:choice>
</xs:sequence>
</xs:sequence>
<xs:attributeGroup ref="graphml.extra.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
user defined extra attributes for &lt;graphml> elements.
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
</xs:complexType>
<xs:simpleType name="graph.edgedefault.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Simple type for the edgedefault attribute of &lt;graph>.
graph.edgedefault.type is a restriction of xs:NMTOKEN
Allowed values: directed, undirected.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="directed"/>
<xs:enumeration value="undirected"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="graph.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Complex type for the &lt;graph> element.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="desc" minOccurs="0"/>
<xs:choice>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="data"/>
<xs:element ref="node"/>
<xs:element ref="edge"/>
<xs:element ref="hyperedge"/>
</xs:choice>
</xs:sequence>
<xs:element ref="locator"/>
</xs:choice>
</xs:sequence>
<xs:attributeGroup ref="graph.extra.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
user defined extra attributes for &lt;graph> elements.
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attribute name="id" type="xs:NMTOKEN">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
identifies this graph .
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="edgedefault"
type="graph.edgedefault.type" use="required">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
describes whether edges of this graph are considered
as directed or undirected per default (unless
specified by the attribute directed of &lt;edge>).
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="node.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Complex type for the &lt;node> element.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="desc" minOccurs="0"/>
<xs:choice>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="data"/>
<xs:element ref="port"/>
</xs:choice>
<xs:element ref="graph" minOccurs="0"/>
</xs:sequence>
<xs:element ref="locator"/>
</xs:choice>
</xs:sequence>
<xs:attributeGroup ref="node.extra.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
user defined extra attributes for &lt;node elements.
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attribute name="id" type="xs:NMTOKEN" use="required">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
identifies this node.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="port.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Complex type for the &lt;port> element.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="desc" minOccurs="0"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="data"/>
<xs:element ref="port"/>
</xs:choice>
</xs:sequence>
<xs:attributeGroup ref="port.extra.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
user defined extra attributes for &lt;port> elements.
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attribute name="name" type="xs:NMTOKEN" use="required">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
identifies this port, within the node it is contained in.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="edge.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Complex type for the &lt;edge> element.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="desc" minOccurs="0"/>
<xs:element ref="data" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="graph" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="edge.extra.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
user defined extra attributes for &lt;edge> elements.
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attribute name="id" type="xs:NMTOKEN">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
identifies this edge .
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="directed" type="xs:boolean">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
overwrites the edgedefault attribute of &lt;graph> .
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="source" type="xs:NMTOKEN" use="required">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
points to the id attribute of the source &lt;node>.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="target" type="xs:NMTOKEN" use="required">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
points to the id attribute of the target &lt;node>.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="sourceport" type="xs:NMTOKEN">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
points to the name attribute of the source &lt;port>.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="targetport" type="xs:NMTOKEN">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
points to the name attribute of the target &lt;port>.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="hyperedge.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Complex type for the &lt;hyperedge> element.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="desc" minOccurs="0"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="data"/>
<xs:element ref="endpoint"/>
</xs:choice>
<xs:element ref="graph" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="hyperedge.extra.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
user defined extra attributes for &lt;hyperedge> elements.
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attribute name="id" type="xs:NMTOKEN">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
identifies this &lt;hyperedge> .
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:simpleType name="endpoint.type.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Simple type for the type attribute of &lt;endpoint>.
endpoint.type.type is a restriction of xs:NMTOKEN
Allowed values: in, out, undir.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="in"/>
<xs:enumeration value="out"/>
<xs:enumeration value="undir"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="endpoint.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Complex type for the &lt;endpoint> element.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="desc" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="endpoint.extra.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
user defined extra attributes for &lt;endpoint> elements.
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attribute name="id" type="xs:NMTOKEN">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
identifies this &lt;endpoint> .
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="port" type="xs:NMTOKEN">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
points to the name of the port, to which this endpoint is
connected .
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="node" type="xs:NMTOKEN" use="required">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
points to the id of the node, to which this endpoint is connected.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" type="endpoint.type.type" default="undir">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
defines the direction on this endpoint (undirected per default).
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="locator.type" final="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Complex type for the &lt;locator> element.
Content type: (empty)
</xs:documentation>
</xs:annotation>
<xs:attributeGroup ref="locator.extra.attrib">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
user defined extra attributes for &lt;locator> elements.
</xs:documentation>
</xs:annotation>
</xs:attributeGroup>
<xs:attribute ref="xlink:href" use="required">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
points to the resource of this locator.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<!-- xs:attribute ref="xlink:type" fixed="simple"-->
<xs:attribute ref="xlink:type">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
type of the hyperlink (fixed as simple).
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!--========================================================-->
<xs:element name="desc" type="xs:string" block="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Description: Provides human-readable descriptions for the GraphML
element containing this &lt;desc> as its first child.
Occurence: &lt;key>, &lt;graphml>, &lt;graph>,
&lt;node>, &lt;port>, &lt;edge>, &lt;hyperedge>, and
&lt;endpoint>.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="locator" type="locator.type" block="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Description: Graphs and nodes are declared by the elements
&lt;graph> and &lt;node>, respectively. The optional
&lt;locator>-child of these elements point to
their definition. (If there is no &lt;locator>-child
the graphs/nodes are defined by their content).
Occurence: &lt;graph>, and &lt;node>.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="data" type="data.type" block="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Description: In GraphML there may be data-functions attached
to graphs, nodes, ports, edges, hyperedges and
endpoint and to the whole collection of
graphs described by the content of &lt;graphml>.
These functions are declared by &lt;key> elements
(children of &lt;graphml>) and defined by &lt;data>
elements.
Occurence: &lt;graphml>, &lt;graph>, &lt;node>, &lt;port>,
&lt;edge>, &lt;hyperedge>, and &lt;endpoint>.
</xs:documentation>
</xs:annotation>
<xs:unique name="data_data_key_unique">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: uniqueness of the key attributes of &lt;data> children
of this &lt;data> element.
</xs:documentation>
</xs:annotation>
<xs:selector xpath="./g:data"/>
<xs:field xpath="@key"/>
</xs:unique>
</xs:element>
<xs:element name="key" type="key.type" block="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Description: In GraphML there may be data-functions attached
to graphs, nodes, ports, edges, hyperedges and
endpoint and to the whole collection of
graphs described by the content of &lt;graphml>.
These functions are declared by &lt;key> elements
(children of &lt;graphml>) and defined by &lt;data>
elements.
Occurence: &lt;graphml>.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="default" type="default.type" block="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Description: In GraphML there may be data-functions attached
to graphs, nodes, ports, edges, hyperedges and
endpoint and to the whole collection of
graphs described by the content of &lt;graphml>.
These functions are declared by &lt;key> elements
(children of &lt;graphml>) and defined by &lt;data>
elements.
The (optional) &lt;default> child of &lt;key> gives
the default value for the corresponding function.
Occurence: &lt;key>.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="graphml" type="graphml.type" block="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Description: &lt;graphml> is the root element of each GraphML
document.
Occurence: root.
</xs:documentation>
</xs:annotation>
<xs:unique name="graphml_data_key_unique">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: uniqueness of the key attributes of &lt;data> children
of this &lt;graphml> element.
</xs:documentation>
</xs:annotation>
<xs:selector xpath="./g:data"/>
<xs:field xpath="@key"/>
</xs:unique>
<xs:key name="key_id_key">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: existence and uniqueness of the id attributes of
each &lt;key> element in this document.
</xs:documentation>
</xs:annotation>
<xs:selector xpath=".//g:key"/>
<xs:field xpath="@id"/>
</xs:key>
<xs:unique name="graph_id_unique">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: uniqueness of the id attributes of
each &lt;graph> element in this document.
</xs:documentation>
</xs:annotation>
<xs:selector xpath=".//g:graph"/>
<xs:field xpath="@id"/>
</xs:unique>
<xs:keyref name="data_key_ref" refer="key_id_key">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: for the key attribute of each &lt;data> in this document,
the existence of an id attribute of
&lt;key> which matches the value of it.
</xs:documentation>
</xs:annotation>
<xs:selector xpath=".//g:data"/>
<xs:field xpath="@key"/>
</xs:keyref>
</xs:element>
<xs:element name="graph" type="graph.type" block="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Description: Describes one graph in this document.
Occurence: &lt;graphml>, &lt;node>, &lt;edge>, &lt;hyperedge>.
</xs:documentation>
</xs:annotation>
<xs:unique name="graph_data_key_unique">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: uniqueness of the key attributes of &lt;data> children
of this &lt;graph> element.
</xs:documentation>
</xs:annotation>
<xs:selector xpath="./g:data"/>
<xs:field xpath="@key"/>
</xs:unique>
<xs:key name="node_id_key">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: existence and uniqueness of the id attributes of
each &lt;node> element in this graph.
</xs:documentation>
</xs:annotation>
<xs:selector xpath=".//g:node"/>
<xs:field xpath="@id"/>
</xs:key>
<xs:unique name="edge_id_unique">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: uniqueness of the id attributes of
each &lt;edge> element in this graph.
</xs:documentation>
</xs:annotation>
<xs:selector xpath=".//g:edge"/>
<xs:field xpath="@id"/>
</xs:unique>
<xs:unique name="hyperedge_id_unique">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: uniqueness of the id attributes of
each &lt;hyperedge> element in this graph.
</xs:documentation>
</xs:annotation>
<xs:selector xpath=".//g:hyperedge"/>
<xs:field xpath="@id"/>
</xs:unique>
<xs:unique name="endpoint_id_unique">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: uniqueness of the id attributes of
each &lt;endpoint> element in this graph.
</xs:documentation>
</xs:annotation>
<xs:selector xpath=".//g:endpoint"/>
<xs:field xpath="@id"/>
</xs:unique>
<xs:keyref name="edge_source_ref" refer="node_id_key">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: for the source attribute of each &lt;edge> in this graph,
the existence of an id attribute of
&lt;node> which matches the value of it.
</xs:documentation>
</xs:annotation>
<xs:selector xpath=".//g:edge"/>
<xs:field xpath="@source"/>
</xs:keyref>
<xs:keyref name="edge_target_ref" refer="node_id_key">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: for the target attribute of each &lt;edge> in this graph,
the existence of an id attribute of
&lt;node> which matches the value of it.
</xs:documentation>
</xs:annotation>
<xs:selector xpath=".//g:edge"/>
<xs:field xpath="@target"/>
</xs:keyref>
<xs:keyref name="endpoint_node_ref" refer="node_id_key">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: for the node attribute of each &lt;endpoint> in this graph,
the existence of an id attribute of
&lt;node> which matches the value of it.
</xs:documentation>
</xs:annotation>
<xs:selector xpath=".//g:endpoint"/>
<xs:field xpath="@node"/>
</xs:keyref>
</xs:element>
<xs:element name="node" type="node.type" block="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Description: Describes one node in the &lt;graph>
containing this &lt;node>.
Occurence: &lt;graph>.
</xs:documentation>
</xs:annotation>
<xs:key name="port_name_key">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: existence and uniqueness of the name attributes of
each &lt;port> element within this &lt;node>.
</xs:documentation>
</xs:annotation>
<xs:selector xpath=".//g:port"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:unique name="node_data_key_unique">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: uniqueness of the key attributes of &lt;data> children
of this &lt;node> element.
</xs:documentation>
</xs:annotation>
<xs:selector xpath="./g:data"/>
<xs:field xpath="@key"/>
</xs:unique>
</xs:element>
<xs:element name="port" type="port.type" block="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Description: Nodes may be structured by ports; thus edges
are not only attached to a node but to a certain
port in this node.
Occurence: &lt;node>, &lt;port>.
</xs:documentation>
</xs:annotation>
<xs:unique name="port_data_key_unique">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: uniqueness of the key attributes of &lt;data> children
of this &lt;port> element.
</xs:documentation>
</xs:annotation>
<xs:selector xpath="./g:data"/>
<xs:field xpath="@key"/>
</xs:unique>
</xs:element>
<xs:element name="edge" type="edge.type" block="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Description: Describes an edge in the &lt;graph> which contains this
&lt;edge>.
Occurence: &lt;graph>.
</xs:documentation>
</xs:annotation>
<xs:unique name="edge_data_key_unique">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: uniqueness of the key attributes of &lt;data> children
of this &lt;edge> element.
</xs:documentation>
</xs:annotation>
<xs:selector xpath="./g:data"/>
<xs:field xpath="@key"/>
</xs:unique>
</xs:element>
<xs:element name="hyperedge" type="hyperedge.type" block="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Description: While edges describe relations between two nodes,
a hyperedge describes a relation between an arbitrary
number of nodes.
Occurence: &lt;graph>.
</xs:documentation>
</xs:annotation>
<xs:unique name="hyperedge_data_key_unique">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Ensures: uniqueness of the key attributes of &lt;data> children
of this &lt;hyperedge> element.
</xs:documentation>
</xs:annotation>
<xs:selector xpath="./g:data"/>
<xs:field xpath="@key"/>
</xs:unique>
</xs:element>
<xs:element name="endpoint" type="endpoint.type" block="#all">
<xs:annotation>
<xs:documentation
source="http://graphml.graphdrawing.org/"
xml:lang="en">
Description: The list of &lt;endpoints> within a hyperedge
points to the nodes contained in this hyperedge.
Occurence: &lt;hyperedge>.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:schema>
<!--======================================================-->
<!-- end of file: graphml-structure.xsd -->
<!--======================================================-->