GraphML is an XML-based file format for graphs. The GraphML file format results from the joint GraphML Primer · Comparison between XML to SVG Transformation Mechanisms, showing conversions between GraphML and SVG. Hi. I’m new to yEd. I tried downloading the GraphML examples to open in yEd, but they look a lot different in yEd than in the GraphML primer. I am going through the Graphml primer (rawing/primer/ ) but when I copy and paste the examples into.
|Published (Last):||21 July 2011|
|PDF File Size:||20.35 Mb|
|ePub File Size:||20.69 Mb|
|Price:||Free* [*Free Regsitration Required]|
GraphML Primer is a non-normative document intended to provide an easily readable description of the GraphML facilities, and is oriented towards quickly understanding how to create GraphML documents.
This primer describes the language features through examples which are complemented by references to normative texts. The text assumes that you have a basic understanding of XML 1.
Basic knowledge of XML Schema is also assumed for some parts of this document. Each major section of the primer introduces new features of the language, and describes those features in the context graphlm concrete examples. Section 2 covers the basic mechanisms of GraphML. It describes how to declare a simple graph by defining its nodes and edges and how to add simple user data to the graph.
Section 3 describes advanced graph models which include nested graphs, hyperedges, and ports. Section 4 describes mechanisms for extending GraphML to store complex application specific data. The primer is a non-normative document, which priimer that it does not provide a definitive specification of the GraphML language.
The examples and other explanatory material in this document are provided to help you understand GraphML, but they may not always provide definitive answers.
In such cases, you will need to refer to the GraphML specification, and to help you do this, we provide many links pointing to the relevant parts of the specification. The purpose of a GraphML document is to define a graph.
Let us start by considering the graph shown in the figure below. It contains 11 nodes and 12 edges. The graph is contained in the file simple. The GraphML document consists of a graphml element and a variety of subelements: In the remainder of this section we will discuss these elements in detail and show how they define a graph. In this section we discuss the parts of the document which are common to all GraphML documents, basically the graphml element.
Of course other encodings can be chosen for GraphML documents. The second line contains the root-element element of a GraphML document: The graphml element, like all other GraphML elements, belongs to the namespace http: In our example we use the standard schema for GraphML documents located on the graphdrawing. The first attribute, xmlns: The second attribute, xsi: The XML Schema reference is not required but it provides means to gfaphml the document and is therefore strongly recommended.
A graph is, not surprisingly, denoted by a graph element. Nested inside a graph element are the declarations of nodes and edges. A node is declared with primee node element, and an egde with an edge element.
The GraphML File Format
In GraphML there is no order defined for the appearance of node and edge elements. Therefore the following example is a perfectly valid GraphML fragment:. Graphs in GraphML are mixedin other words, they can contain directed and undirected edges at the same time. If no direction is specified when an edge is declared, the default direction is applied to the edge. The default direction is declared as the XML Attribute edgedefault of the graph element. The two possible value for this XML Attribute are directed and undirected.
Note that the default direction must be specified. Optionally an identifier for the graph can be specified with the XML Attribute id. The identifier is used, when it is necessary to reference the graph.
Edges in the graph are declared by the edge element. Each edge must define its two endpoints with the XML-Attributes source and target.
The value vraphml the sourceresp. Edges with only one endpoint, also called loops, selfloops, or reflexive edges, are defined by having the same value for source and target. The optional XML-Attribute directed declares if the edge is directed or undirected.
The GraphML File Format
The value true declares a directed edge, the value false an prjmer edge. If the direction is not explicitely defined, the default direction is applied to this edge as defined in the enclosing graph. Optionally an identifier for the edge can be specified with the XML Attribute id. When it is necessary to reference the edge, the id XML-Attribute is used.
In the previous section we discussed how to describe the topology of a graph in GraphML. While pure topological information may be sufficient for some appications of GraphML, for the most time additional information is needed. With the help of the extension GraphML-Attributes one graaphml specify additional information of simple type for the elements of the graph. Simple type means that the information is restricted to scalar grapjml, e.
For a detailed description of this mechanism see Chapter 4. We will use GraphML-Attributes to store the extra data on the nodes and edges. A GraphML-Attribute is defined by a key element which specifies the identifiernametype and domain of the attribute. The purpose of the name is that applications can identify the meaning of the attribute.
Note that the name of the GraphML-Attribute is not used inside the document, the identifier is used for this purpose. The type of the GraphML-Attribute can be either booleanintlongfloatdoubleor string. These types are defined like the corresponding types in the Java TM -Programming language.
Possible values include graphnodeedgeand all. It is possible to define a default value for a GraphML-Attribute. The text content of the default graphm defines this default value. The value of a GraphML-Attribute for a graph element is defined by a data element nested inside the element for the graph element.
The value of the GraphML-Attribute is the text content of the data element. This value must be of the type declared graphmll the corresponding key definition. There can be graph elements for which a GraphML-Attribute is defined but no value is declared by a corresponding data element. If a default value is defined for this GraphML-Attribute, then this default value is applied to the graph element.
In the above example no value is defined for the node with identifier n1 and the GraphML-Attribute with name color. Therefore this GraphML-Attribute has the default value, yellow for this node. If no default value is specified, as for the GraphML-Attribute weight in the above example, the value of the GraphML-Attribute is undefined for the graph element.
In the above example the value is undefined of the GraphML-Attribute weight for the edge with identifier e3. All XML-Attributes denoting meta-data are prefixed with parse. There are two kinds of meta-data: For the first kind, information about the number of elements, the following XML-Attributes for the graph element are defined: For the node element the XML-Attribute parse.
For the second kind, information about element encoding, the following XML-Attributes for the graph element are defined: If the XML-Attribute parse. Otherwise the value of hraphml XML-Attribute is free.
The same holds for edges for which the corresponding XML-Attribute parse. For the value nodesfirst no node element is allowed to occur after the first occurence of an edge element. For the value adjacencylistthe declaration of a node is followed by the declaration of its adjacent edges.
For the value free no order is imposed. In some applications the graph model described in the previous section is too restrictive and does not model adequatly the application data.
In this section we discuss advanced graph models which can model a nesting hierarchy, hyperedges and ports. GraphML supports nested graphsi. The hierarchy is expressed by the structure of the GraphML document. A node in a GraphML document may have a graph element which itself contains the nodes which are in the hierarchy below this node.
Here is an example for a nested graph and the corresponding GraphML document. Note that in the drawing of the graph the hierarchy is expressed by containment, i.
The edges between two nodes in a nested graph have to be declared in a graph, which is an ancestor of both nodes in the hierarchy. Note that this is true for our example. Declaring the edge between node n A good policy is to place the edges at the least common ancestor of the nodes in the hierarchy, or at the top level.
For applications which can not handle nested graphs the garphml behaviour is to ignore nodes which are not contained in the top-level graph and to ignore edges which have do not have both endpoints in the top-level graph. Like edges, hyperedges and enpoints may have an XML-Attribute idwhich defines a unique identifier for the corresponding element. A node may specify different logical locations for edges and hyperedges to connect. The logical locations are called “ports”. As an analogy, think of the graph as a motherboard, the nodes as integrated circuits and the edges as connecting wires.
Then the pins on the integrated circuits correspond to ports of a node. The ports of a node are declared by port elements as children of the corresponding node elements.