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.0rc/graphml-attributes.xsd and http://graphml.graphdrawing.org/xmlns/1.0rc/graphml-parseinfo.xsd, the only normative reference. Get access to the xlink attribute groups for the attributes xlink:href and xlink:type of locator.type. The attribute groups <element_name>.extra.attrib may be used for adding user defined attributes to the elements <element_name>. The attribute group common.extra.attrib may be used for adding user defined attributes to all elements. Complex type definitions for the GraphML structural layer elements: <data>, <default>, <key>, <graphml>, <graph>, <node>, <port>, <edge>, <hyperedge>, <endpoint> and <locator>. The names of the complex types are constructed corresponding to the pattern element_name.type. (The only remaining GraphML structural layer element <desc> is of simple type xs:string.) Extension mechanism for the content of <data> and <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. Complex type for the <data> element. data.type is mixed, that is, <data> may contain #PCDATA. Content type: extension of data-extension.type which is empty per default. refers to the id attribute of a <key>. identifies this <data>. user defined extra attributes for <data> elements Complex type for the <default> element. default.type is mixed, that is, data may contain #PCDATA. Content type: extension of data-extension.type which is empty per default. user defined extra attributes for <default> elements Simple type for the for attribute of <key>. key.for.type is a restriction of xs:NMTOKEN Allowed values: all, graph, node, edge, hyperedge, port and endpoint. Complex type for the <key> element. identifies this <key>. describes the domain of definition for the corresponding graph attribute. user defined extra attributes for <key> elements. Complex type for the <graphml> element. user defined extra attributes for <graphml> elements. Simple type for the edgedefault attribute of <graph>. graph.edgedefault.type is a restriction of xs:NMTOKEN Allowed values: directed, undirected. Complex type for the <graph> element. user defined extra attributes for <graph> elements. identifies this graph . describes whether edges of this graph are considered as directed or undirected per default (unless specified by the attribute directed of <edge>). Complex type for the <node> element. user defined extra attributes for <node elements. identifies this node. Complex type for the <port> element. user defined extra attributes for <port> elements. identifies this port, within the node it is contained in. Complex type for the <edge> element. user defined extra attributes for <edge> elements. identifies this edge . overwrites the edgedefault attribute of <graph> . points to the id attribute of the source <node>. points to the id attribute of the target <node>. points to the name attribute of the source <port>. points to the name attribute of the target <port>. Complex type for the <hyperedge> element. user defined extra attributes for <hyperedge> elements. identifies this <hyperedge> . Simple type for the type attribute of <endpoint>. endpoint.type.type is a restriction of xs:NMTOKEN Allowed values: in, out, undir. Complex type for the <endpoint> element. user defined extra attributes for <endpoint> elements. identifies this <endpoint> . points to the name of the port, to which this endpoint is connected . points to the id of the node, to which this endpoint is connected. defines the direction on this endpoint (undirected per default). Complex type for the <locator> element. Content type: (empty) user defined extra attributes for <locator> elements. points to the resource of this locator. type of the hyperlink (fixed as simple). Description: Provides human-readable descriptions for the GraphML element containing this <desc> as its first child. Occurence: <key>, <graphml>, <graph>, <node>, <port>, <edge>, <hyperedge>, and <endpoint>. Description: Graphs and nodes are declared by the elements <graph> and <node>, respectively. The optional <locator>-child of these elements point to their definition. (If there is no <locator>-child the graphs/nodes are defined by their content). Occurence: <graph>, and <node>. 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 <graphml>. These functions are declared by <key> elements (children of <graphml>) and defined by <data> elements. Occurence: <graphml>, <graph>, <node>, <port>, <edge>, <hyperedge>, and <endpoint>. Ensures: uniqueness of the key attributes of <data> children of this <data> element. 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 <graphml>. These functions are declared by <key> elements (children of <graphml>) and defined by <data> elements. Occurence: <graphml>. 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 <graphml>. These functions are declared by <key> elements (children of <graphml>) and defined by <data> elements. The (optional) <default> child of <key> gives the default value for the corresponding function. Occurence: <key>. Description: <graphml> is the root element of each GraphML document. Occurence: root. Ensures: uniqueness of the key attributes of <data> children of this <graphml> element. Ensures: existence and uniqueness of the id attributes of each <key> element in this document. Ensures: uniqueness of the id attributes of each <graph> element in this document. Ensures: for the key attribute of each <data> in this document, the existence of an id attribute of <key> which matches the value of it. Description: Describes one graph in this document. Occurence: <graphml>, <node>, <edge>, <hyperedge>. Ensures: uniqueness of the key attributes of <data> children of this <graph> element. Ensures: existence and uniqueness of the id attributes of each <node> element in this graph. Ensures: uniqueness of the id attributes of each <edge> element in this graph. Ensures: uniqueness of the id attributes of each <hyperedge> element in this graph. Ensures: uniqueness of the id attributes of each <endpoint> element in this graph. Ensures: for the source attribute of each <edge> in this graph, the existence of an id attribute of <node> which matches the value of it. Ensures: for the target attribute of each <edge> in this graph, the existence of an id attribute of <node> which matches the value of it. Ensures: for the node attribute of each <endpoint> in this graph, the existence of an id attribute of <node> which matches the value of it. Description: Describes one node in the <graph> containing this <node>. Occurence: <graph>. Ensures: existence and uniqueness of the name attributes of each <port> element within this <node>. Ensures: uniqueness of the key attributes of <data> children of this <node> element. 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: <node>, <port>. Ensures: uniqueness of the key attributes of <data> children of this <port> element. Description: Describes an edge in the <graph> which contains this <edge>. Occurence: <graph>. Ensures: uniqueness of the key attributes of <data> children of this <edge> element. Description: While edges describe relations between two nodes, a hyperedge describes a relation between an arbitrary number of nodes. Occurence: <graph>. Ensures: uniqueness of the key attributes of <data> children of this <hyperedge> element. Description: The list of <endpoints> within a hyperedge points to the nodes contained in this hyperedge. Occurence: <hyperedge>.