Fact-checked by Grok 2 weeks ago

GraphML

GraphML is an extensible XML-based designed for representing and exchanging structures, including their structural properties and application-specific , to facilitate the generation, archiving, and processing of across diverse tools and services. It consists of a core language for describing basic elements such as nodes and edges, along with mechanisms for adding attributes and supporting complex graph types like directed, undirected, mixed, hypergraphs, and hierarchical structures. Key features include support for graphical representations, references to external , and a flexible extension system that allows integration with XML parsers and libraries, making it lightweight and interoperable with tools such as yFiles and LEDA. The format was initiated during a workshop at the 2000 , with a formal proposal presented at the 2001 symposium, leading to the release of GraphML 1.0rc, including schema and documentation, by March 2003. GraphML is freely available for scientific and commercial use under a Attribution 3.0 License, promoting its adoption in fields like network analysis, , and .

Introduction

Definition and Purpose

GraphML is an XML-based file format designed for storing and exchanging graph structures, encompassing nodes, edges, and their associated attributes. It serves as a comprehensive language for representing the structural properties of graphs while accommodating additional data specific to various applications. The primary purpose of GraphML is to provide a platform-independent and extensible syntax that enables seamless interoperability among diverse tools for graph drawing, analysis, and visualization. By leveraging XML as its underlying technology, GraphML ensures that graph data can be shared effectively across different systems without loss of information or compatibility issues. This standardization facilitates collaboration in fields where graph processing is essential, allowing users to attach application-specific attributes—such as visual properties or analytical metadata—directly to graph elements like nodes and edges. GraphML originated from the efforts of the graph drawing community to establish a unified standard for graph representation, addressing the fragmentation caused by proprietary formats. This initiative aimed to create a flexible framework that supports not only basic graph topologies but also extensions for specialized needs, promoting widespread adoption in academic and industrial graph-based applications.

Development History

The development of GraphML began in 2000, when the Steering Committee initiated the project to create a standardized format for representing graphs, addressing the need for among graph drawing tools. This effort was spurred by an informal held prior to the 8th International Symposium on (GD 2000) in , where participants discussed the limitations of existing formats and proposed a new for graphs. A formal proposal for the structural layer was presented at the 9th International Symposium on (GD 2001) in , . Following the symposium, a dedicated was formed to develop the specification, drawing on the broader graph drawing community's expertise to ensure broad applicability. A key predecessor influencing GraphML was the Graph Modeling Language (GML), an ASCII-based format that emerged from initiatives at the Graph Drawing Symposium in 1995 in , , and was finalized in 1996 following discussions in . GML had gained traction for its simplicity in describing graph structures and attributes, serving as a foundation for tools like Graphlet, but its lack of extensibility and XML integration prompted the shift toward GraphML. In 2002, GraphML gained further momentum through a formal proposal on March 12 to serve as the standard format for the network data archive in the EU-funded FET Open Project COSIN (IST-2001-33555), highlighting its potential for analysis and data exchange. The project's website was relaunched on June 22, 2002, to facilitate collaboration and documentation. The first major milestone came with the release of GraphML 1.0 release candidate on March 18, 2003, which included the initial Definition (XSD) for validating graph documents, establishing its XML-based nature as a deliberate choice for web compatibility and extensibility. Primary contributors included Ulrik Brandes as lead coordinator, alongside Markus Eiglsperger, Michael Kaufmann, Jürgen Lerner, and Christian Pich, with advisory input from figures like Ivan Herman, Stephen North, and Roberto Tamassia from the community. On April 5, 2007, the GraphML clarified the open licensing terms, explicitly stating that the format is free for all uses without restrictions, which encouraged widespread adoption. Since the 1.0 release, GraphML has seen no major version updates, with development efforts instead focusing on vendor-specific extensions to enhance compatibility with existing software ecosystems. Notable examples include the yFiles extension released on June 28, 2002, for integrating GraphML with libraries, and the LEDA extension's release candidate on August 3, 2004, supporting algorithmic graph processing. This approach has maintained GraphML's stability while allowing practical adaptations within the and analysis fields.

Core Specification

Document Structure

The GraphML document is structured as an XML instance conforming to the GraphML schema, ensuring a standardized hierarchical representation of graph data. At its core, the document uses a well-defined containment model that separates attribute definitions from graph instances, promoting modularity and extensibility. This organization allows for the description of multiple graphs within a single file, each potentially nested to represent hierarchical structures. The is <graphml>, which serves as the top-level container for the entire document. It declares the default xmlns="http://graphml.graphdrawing.org/xmlns" to identify GraphML-specific elements and may optionally include xmlns:xsi="http://www.w3.org/[2001](/page/2001)/XMLSchema-instance" for validation purposes, along with an xsi:schemaLocation attribute pointing to the official at http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd. Within <graphml>, a <desc> can appear immediately after the opening tag to provide human-readable about the document, such as its purpose or version, though this is optional and not required for validity. Following any <desc>, the <graphml> element contains zero or more <key> elements, which define reusable attribute schemas for later use, followed by one or more <graph> elements that instantiate the actual graph structures. The <key> elements must precede all <graph> elements to ensure attributes are defined before application. Each <graph> element represents a distinct graph instance and includes required attributes such as edgedefault, which specifies whether edges are "directed" or "undirected" by default, and an optional id for identification. The <graph> can directly contain <node> and <edge> elements, as well as <data> elements for graph-level attributes; <node> elements define vertices with a unique id attribute, while <edge> elements link nodes via source and target attributes. Nesting is supported by allowing <graph> elements inside <node> elements, enabling hierarchical graphs where child graphs represent substructures of parent nodes. Additionally, <data> elements can be nested within <graph>, <node>, or <edge> to assign specific values to predefined keys, facilitating the attachment of properties at various levels. The role of <key> elements is to declare attribute domains (e.g., for nodes or edges), which are then referenced by <data> for value assignment, ensuring type-safe and named properties across the . This containment enforces a logical : metadata and definitions first, followed by structural instances. A minimal GraphML illustrating this might appear as follows:
xml
<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
         http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
  <key id="label" for="node" attr.name="label" attr.type="string"/>
  <graph edgedefault="undirected">
    <node id="n0"/>
    <node id="n1">
      <data key="label">Example Node</data>
    </node>
    <edge source="n0" target="n1"/>
  </graph>
</graphml>
This example demonstrates the root <graphml>, a single <key> definition, and a basic undirected graph with nodes and an , including a <data> assignment.

Element Definitions

GraphML defines a set of core XML elements to represent the structural components of , ensuring interoperability across tools while allowing for extensibility through attributes. These elements include nodes, , hyperedges, ports, and locators, each with specific syntax for attributes and contents. All such elements may contain zero or more <data> child elements to attach key-referenced attributes, enabling the association of properties like labels or weights without altering the core structure. The <node> element represents a vertex in the graph and requires a unique id attribute of type NMTOKEN to identify it within the enclosing <graph>. It may contain optional <data> elements for attributes, as well as <port> elements to define connection points and a nested <graph> element to support hierarchical structures. For example, a basic node declaration appears as <node id="n1"></node>, which can be extended to <node id="n1"><data key="color">blue</data></node> to include properties. The <edge> element specifies a connection between two nodes, mandating source and target attributes that reference IDs via NMTOKEN values. It supports optional <data> children for attributes and may include a directed attribute to override the graph's default directionality; otherwise, directionality is implied by the enclosing <graph> element's edgedefault attribute, which can be set to "directed" or "undirected". An example is <edge source="n1" target="n2"></edge>, or with data: <edge source="n1" target="n2"><data key="weight">1.0</data></edge>. Ports can be referenced via optional sourceport and targetport attributes to connect to specific ports. For graphs involving relations among more than two nodes, the <hyperedge> element provides support, featuring an optional id attribute for unique identification. It contains one or more <endpoint> child elements, each with a required node attribute referencing a node ID and an optional type attribute specifying "in" or "out" to indicate directionality relative to the hyperedge. Hyperedges also allow <data> children for attributes and are ignored by parsers not supporting this feature. A sample hyperedge is <hyperedge id="h1"><endpoint node="n1" type="in"/><endpoint node="n2" type="out"/></hyperedge>. The <port> element defines named connection points on nodes to enable more precise edge attachments, placed as a child of <node> with a required name attribute of type NMTOKEN. It may include <data> elements for port-specific attributes and is ignored by applications without port support. For instance, <node id="n1"><port name="north"></port></node> allows an edge to specify <edge source="n1" sourceport="north" target="n2"/>. Ports can also nest within other ports for complex node structures. The <locator> element facilitates referencing external resources, such as images or definitions, by serving as an optional child of <graph>, <node>, or <data> elements. It requires an xlink:href attribute pointing to a and contains no other children; if the referenced resource is unsupported, the locator is ignored during . An example usage is <node id="n1"><locator xlink:href="http://example.com/node1.png"/></node>, which might link to a visual representation.

Key and Data Elements

In GraphML, attributes are attached to graph elements through a declarative system using <key> and <data> elements, enabling the assignment of typed values to nodes, edges, graphs, or all elements collectively. The <key> element defines the at the document root level, within the <graphml> container, specifying its , scope, name, and type. This mechanism ensures that attributes are consistently typed and scoped, facilitating across graph processing tools. The <key> element requires an id attribute, which serves as a unique identifier (of type NMTOKEN) referenced by <data> elements. It includes a for attribute to scope the key's applicability, with possible values such as node (for node-specific attributes), edge (for edge-specific), graph (for graph-level), or all (for global application across all elements). An optional attr.name attribute provides a human-readable name for the attribute, while attr.type specifies the data type, restricting values to boolean (true/false literals), int (integer), long (long integer), float (single-precision floating-point), double (double-precision floating-point), or string (text, encoded in UTF-8 as per XML standards). Keys may also include an optional <default> child element to supply a default value, which is applied to any relevant graph element lacking an explicit <data> assignment for that key. The <data> element attaches the actual attribute value to a specific graph element, such as <node>, <edge>, or <graph>, by referencing the corresponding key's id via its key attribute. The content of <data> must conform to the type declared in the referenced <key>, with the value provided as plain text (e.g., "true" for boolean, "3.14" for double). Multiple <data> elements can be nested within a single graph element, each linking to different keys, allowing rich annotation without altering the core graph structure. Scoped keys enhance flexibility; for instance, a key with for="edge" applies only to edges, preventing misuse on nodes, while for="all" permits uniform attributes like labels across the entire . This scoping is enforced during parsing to maintain . For example, to define and assign a weight attribute to edges, one might declare:
<key id="weight" for="edge" attr.name="weight" attr.type="double">
  <default>1.0</default>
</key>
Then, within an <edge> element:
<edge source="n1" target="n2">
  <data key="weight">1.5</data>
</edge>
Here, the edge from n1 to n2 has a of 1.5, while unspecified edges default to 1.0. This pattern supports concise yet expressive descriptions.

Features

Supported Graph Types

GraphML supports a range of basic types through its structural s, primarily defined by the <graph> and its attributes. Directed graphs are represented by setting the edgedefault attribute to "directed" on the <graph> , which implies that all edges point from a source to a unless overridden; individual edges can explicitly confirm directionality with the directed attribute set to "true". Undirected graphs use edgedefault="undirected", treating edges as bidirectional connections without inherent direction, with the directed attribute set to "false" for explicitness if needed. Mixed graphs combine both directed and undirected edges within the same structure, achieved by specifying the default via edgedefault and overriding it on specific <edge> s using the directed attribute. For more advanced structures, GraphML accommodates hypergraphs through the <hyperedge> element, which connects an arbitrary number of nodes rather than just two. Each connection in a hyperedge is defined by an <endpoint> subelement referencing a node ID, optionally classified as "in" or "out" to indicate directionality relative to the hyperedge. This allows representation of relations involving multiple entities, such as in or , while maintaining compatibility with standard edge-based graphs. Hierarchical graphs are enabled by nesting <graph> elements within <node> elements, creating subgraphs that represent tree-like or layered structures. A parent node can contain a graph via <node id="parent"><graph id="childgraph">...</graph></node>, allowing recursive organization where nodes at higher levels encompass entire subnetworks. edges, or multiedges, are supported natively by permitting multiple <edge> elements sharing the same source and target attributes; these are distinguished by unique id attributes or additional port specifications if needed. Although self-loops are not explicitly declared with a dedicated attribute, they can be modeled by defining an <edge> where the source and target both reference the same node ID, effectively creating a from a to itself.

Attribute System

The attribute system in GraphML provides a flexible mechanism for attaching to graph elements, enabling the storage of arbitrary while ensuring and extensibility. Attributes are defined through <key> elements, which specify the name, type, and scope of the data, and are referenced by <data> elements attached to nodes, edges, s, or other components. This design supports both simple key-value pairs and more complex domain-specific extensions, making GraphML suitable for applications ranging from network analysis to . Keys in GraphML are primarily declared globally within the , applying across the entire document unless overridden by local definitions. The for attribute on a <key> determines its scoping: for="all" allows the key to be used on , , , hyperedges, ports, or endpoints, providing broad applicability; for="node" restricts it to ; for="edge" limits it to edges (including hyperedges); and for="graph" confines it to . Local keys can be defined within a specific <graph> element, overriding or supplementing global keys for that , which enables context-specific attribute management without affecting the broader document. For instance, a global key for weights might be overridden locally in a nested to reflect variations. Default values for attributes are specified using a <default> child element within the <key>, ensuring consistent handling when no explicit value is provided. If a <data> element referencing the key is absent for a particular graph element, parsers retrieve the default value; if no default is defined, the attribute is considered undefined, and applications must handle this gracefully, such as by assigning a or fallback value. This approach promotes robustness in while avoiding mandatory specification for every . An example is a color key with <default>blue</default>, which applies to all nodes unless overridden by a local <data key="color">red</data>. Custom attributes enhance GraphML's extensibility, allowing users to define arbitrary properties via the attr.name attribute on <key>, such as "color" for visualization or "priority" for scheduling domains, paired with an appropriate attr.type. Supported types include boolean, int, long, float, double, and string, with parsers required to enforce type consistency by validating <data> content against the declared type—rejecting, for example, a string value like "abc" for an int key. This enforcement prevents data mismatches during import and export, maintaining integrity in tools like graph databases or analyzers. For more complex needs, extensions permit embedding structured XML, such as SVG snippets for visual properties, within <data> elements. In hierarchical graphs, where nodes can contain nested <graph> elements, the attribute system leverages global keys to apply consistently across levels, with local keys in child graphs providing overrides for specificity. While there is no automatic of individual <data> values from parent to child elements, the scoping mechanism ensures that broadly defined keys (e.g., for="all") propagate their definitions throughout the , allowing attributes to be referenced and defaulted uniformly unless locally customized. Edges in nested structures must be declared in a graph that is an of their endpoints (ideally the least common ), facilitating attribute attachment that respects the without explicit rules. This design balances flexibility with structural discipline in complex, multi-level graphs.

Extensions and Parsing Rules

GraphML supports extensibility through optional core extensions that enhance its functionality beyond the basic structural layer. The graphml-attributes extension introduces typed attributes for keys, allowing specifications such as attr.type (e.g., boolean, int, float, string) and attr.name to define data properties more precisely, enabling better validation and processing of graph data. This extension is defined in its own XML Schema at http://graphml.graphdrawing.org/xmlns/1.0rc/graphml-attributes.xsd.[](http://graphml.graphdrawing.org/specification.html) Similarly, the graphml-parseinfo extension (also known as graphml-parsing) provides processing hints to optimize parsing, adding attributes to the <graph> element such as parse.nodeids, parse.edgeids, parse.nodelabels, parse.edgelabels, parse.nodecount, parse.edgecount, and parse.degree to signal structural information like counts or ordering, reducing the computational load on lightweight parsers. Its schema is available at http://graphml.graphdrawing.org/xmlns/1.0rc/graphml-parseinfo.xsd.[](http://graphml.graphdrawing.org/specification.html) Vendor-specific extensions further customize GraphML for particular applications while adhering to the core's extensibility principles. The yFiles extension package, released on June 28, 2002, incorporates layout information and stylistic properties into documents, allowing for the preservation of visual representations during and in tools. It enables the of complex structures within <data> elements, supporting advanced features like hierarchical layouts. The LEDA extension, introduced as a release candidate on August 3, 2004, focuses on algorithmic relevant to graph computation libraries, such as weights and properties optimized for algorithms in the LEDA system. These extensions are distributed as packages, with the LEDA one available for download to integrate algorithmic without altering the core syntax. Parsing rules in GraphML emphasize robustness and forward compatibility through an extensibility principle, requiring processors to ignore unknown elements and attributes rather than failing outright. This allows documents to incorporate custom extensions without breaking compatibility across tools. Processors should issue warnings for unrecognized elements, multiple root <graph> elements, or nested graphs, but may adopt flexible strategies such as processing the first <graph>, unioning all graphs, or ignoring nesting levels. Schema validation is optional but recommended when provided; documents can include an xmlns:xsi:schemaLocation attribute pointing to http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd to enable XML Schema validation against the official definition. Error handling prioritizes graceful degradation during parsing. Undefined keys referenced in <data> elements or type mismatches in attribute values should not halt processing; instead, processors ignore such issues and continue with available data, ensuring partial usability of the document. The <desc> element is supported throughout the document structure for embedding human-readable metadata or descriptions, which parsers must preserve but are not required to interpret. GraphML maintains backward compatibility for earlier versions, with documents conforming to the 1.0rc specification (released March 18, 2003) remaining fully valid after subsequent updates, including the schema revision on February 22, 2007. This ensures that legacy files can be processed by modern tools without modification.

Implementations and Tools

Software Libraries

Several programming libraries provide support for reading, writing, and manipulating GraphML files, enabling developers to integrate GraphML into various applications for graph data processing. These libraries vary in their language, feature completeness, and handling of advanced GraphML elements such as attributes and graph structures. NetworkX, a library for the creation, manipulation, and study of , offers comprehensive read and write support for GraphML files, including directed and undirected graphs with and attributes. This functionality has been available since version 1.1, released in 2010, allowing users to serialize NetworkX graphs to GraphML XML format and parse GraphML documents back into NetworkX graph objects. However, NetworkX's GraphML implementation does not support hyperedges, nested graphs, mixed edge directions, or ports, limiting it to simpler graph structures. igraph, an open-source library for network analysis and , available in C, Python, and R, provides read and write support for GraphML files through functions like read_graph and write_graph. It handles directed and undirected with vertex and edge attributes but has limited support for advanced features such as hyperedges or nested . The jgraphml library, implemented in , facilitates parsing and generating GraphML documents, with a focus on compatibility with tools like for diagram creation and editing. It supports the core GraphML elements, including keys, data attributes, and basic structures, enabling the construction of GraphML from objects and vice versa. The library was last updated on April 14, 2024, ensuring ongoing relevance for -based graph applications. goGraphML, an open-source Go library available on GitHub, provides an implementation for handling directed and undirected graphs in GraphML format, including support for data functions attached to graph elements such as nodes and edges. It allows for encoding and decoding GraphML files, making it suitable for Go applications requiring graph . The library adheres to the GraphML specification for structural properties and attributes. Cytoscape.js, a for graph analysis and visualization in web browsers, offers partial support for GraphML through extensions like cytoscape.js-graphml, which enables importing graphs from GraphML files and exporting Cytoscape.js graphs to GraphML. This integration is particularly useful within the Cytoscape ecosystem for network analysis workflows, though it may not fully handle all advanced features like hyperedges. While many libraries provide robust handling of basic graphs and attributes, limitations exist in support for advanced GraphML features; for instance, not all implementations fully accommodate hyperedges or hierarchical structures, with offering basic import and export for GraphML graphs, including some support for nested graphs and hypergraphs via its built-in graph functions.

Visualization Applications

yEd, developed by yWorks, is a free desktop editor that provides full import and export support for GraphML files, allowing users to create, edit, and automatically arrange diagrams using advanced layout algorithms powered by the yFiles library. It incorporates yFiles extensions in GraphML for preserving stylistic and structural details, such as node shapes, edge styles, and custom attributes. runs on Windows, macOS, and platforms, making it accessible for cross-platform and editing tasks. Gephi is an open-source platform designed for exploring and visualizing networks, featuring robust GraphML import capabilities that handle node and edge attributes with types including boolean, integer, float, double, and string. While it offers limited support for GraphML—excluding sub-graphs and hyperedges—Gephi enables dynamic visualization through interactive layouts, filtering, and clustering, ideal for analyzing large-scale networks in fields like social sciences and bioinformatics. Cytoscape serves as a desktop application primarily for visualizing and analyzing biological networks, with built-in support for importing GraphML files to load graphs along with associated node and edge attributes. During import, Cytoscape maps GraphML attributes to visual properties, enabling customizable styling such as colors, sizes, and labels based on biological data like gene expression or protein interactions. This integration facilitates advanced network exploration and integration with other omics data formats. The GraphML Viewer from yWorks is a free, Flash-based web application for embedding and displaying GraphML diagrams directly in pages, optimized for files generated by . It supports zooming, panning, and printing of static diagrams but has been deprecated following the discontinuation of support in 2020, with yWorks recommending alternatives like yEd Live for modern web-based viewing. Other tools offer varying levels of GraphML compatibility for handling large datasets. Graphia, an open-source platform for graph , supports GraphML alongside formats like and GML, enabling interactive 2D/3D of millions of nodes and edges with clustering algorithms such as Louvain. provides partial GraphML for its 3D graph framework, focusing on large-scale with plugin extensibility. Pajek, a program, includes GraphML and capabilities, allowing conversion of graphs for of directed and undirected structures up to millions of vertices.

Comparisons and Alternatives

Similar Graph Formats

GraphML shares similarities with several other graph file formats but differs in its XML-based structure, which facilitates schema validation and extensibility. One prominent predecessor is the Graph Modeling Language (GML), a plain-text, hierarchical key-value format originally developed for the Graphlet software toolkit. GML uses a simple ASCII syntax to describe graphs, nodes, and edges through indented key-value pairs, such as graph [ directed 1 ] for graph properties or node [ id 1 label "A" ] for node attributes, allowing flexible ordering of declarations without strict enforcement. Unlike GraphML's XML foundation, GML lacks native support for typed attributes, hypergraphs, or schema-based validation, making it less structured for complex data exchange but easier for manual editing. Another XML-based alternative is the Graph Exchange XML Format (GEXF), designed specifically for complex and dynamic networks within tools like . GEXF employs elements like <gexf>, <nodes>, and <edges> to represent graph structures, with support for attributes typed as strings, integers, floats, or booleans, similar to GraphML's key-data system. However, GEXF is optimized for temporal aspects, featuring "spells" to define time-varying edges and nodes—such as <edge start="2008" end="2010">—which enable modeling of evolving networks, a capability not natively emphasized in GraphML. It also includes hierarchical node grouping for clustering, providing a more network-focused extensibility than GraphML's general-purpose graph description. In contrast, the DOT language from serves primarily as a text-based description for graph rendering and , rather than comprehensive data storage. DOT files define graphs using a declarative syntax, such as digraph G { A -> B; }, with directives for shapes, styles, and clusters to guide algorithms. While it supports basic attributes like labels and colors, DOT prioritizes specifications over rich data attributes or hierarchical structures, lacking GraphML's XML extensibility for arbitrary or validation against schemas. The Pajek .net format offers a straightforward adjacency list representation for social network analysis, using plain text to list vertices and connections. It begins with *Vertices n followed by numbered labels (e.g., 1 "NodeA"), then *Edges or *Arcs sections for undirected or directed links with optional weights (e.g., 1 2 1). Pajek .net supports only basic numeric values for edges and simple text labels for nodes, without embedded hierarchical attributes or extensibility, requiring separate files for advanced properties like partitions or vectors. This simplicity limits it compared to GraphML's support for complex, typed data on any graph element. A core distinction across these formats is GraphML's reliance on XML, which enables rigorous rules, validation for , and easy with XML tools, features absent in text-based formats like GML, DOT, or Pajek .net. While GEXF also uses XML, GraphML provides broader support for static hypergraphs and general attribute systems, prioritizing over domain-specific dynamics.

Strengths and Limitations

GraphML's design leverages XML's inherent strengths, providing high extensibility through the use of XML namespaces, which allows users to incorporate custom schemas for application-specific data without altering the core format. This flexibility enables seamless integration of complex elements, such as graphical representations or domain-specific attributes, making it suitable for diverse graph modeling needs. Additionally, GraphML offers robust support for attributes on nodes, edges, and graphs, including hierarchical structures via nested graphs, which facilitates the representation of multi-level relationships and metadata. As a platform-independent format, it benefits from validation to ensure and consistency across different systems and tools. Established as an in 2007 under a permissive license, GraphML promotes widespread adoption and interoperability, particularly in graph exchange between applications like and , where it serves as a reliable interchange format for attributed graphs. Despite these advantages, GraphML's reliance on XML introduces notable limitations, primarily its verbose syntax, which results in significantly larger file sizes compared to more compact formats like GML, especially for dense or large-scale graphs. This overhead can complicate storage, transmission, and processing in resource-constrained environments. Furthermore, XML parsing imposes computational demands that slow down loading and manipulation of substantial graphs, as the format lacks native mechanisms to mitigate this issue. GraphML also provides limited built-in support for dynamic or temporal data, such as evolving node lifetimes or time-based attributes, in contrast to formats like GEXF that explicitly encode such . Adoption challenges further highlight GraphML's drawbacks, including incomplete support for advanced features like s in certain libraries; for instance, while the format specification accommodates hyperedges, implementations such as NetworkX do not fully parse them, restricting practical use in hypergraph analysis. Development of the core standard has remained stagnant since the release of version 1.0rc in , with only minor schema adjustments in 2007 and no major updates addressing modern requirements like enhanced temporal modeling or optimized parsing for scenarios.

References

  1. [1]
    The GraphML File Format
    GraphML is a comprehensive and easy-to-use file format for graphs. It consists of a language core to describe the structural properties of a graph.GraphML Specification · GraphML Primer · Download · About
  2. [2]
    GraphML Specification
    This document specifies syntax and processing rules for the GraphML language core (structural layer) and two GraphML extensions that allow to add base-type ...
  3. [3]
    GraphML Progress Report Structural Layer Proposal - SpringerLink
    We here present GraphML (Graph Markup Language), an XML format for graph structures, as an initial step towards this goal.Missing: original | Show results with:original
  4. [4]
    About GraphML
    - **Origin**: GraphML was initiated by the Graph Drawing Steering Committee before Graph Drawing 2000 in Williamsburg, following a workshop on file formats. It aimed to create an XML-based standard for graph representation.
  5. [5]
    [PDF] Graph Markup Language (GraphML) | Brown CS
    specification is the GraphML schema located at http://graphml.graphdrawing.org/xmlns/1.1/graphml.xsd. The document shown in Figure 16.2 is minimal to be a ...
  6. [6]
  7. [7]
    GraphML Download Area
    Jan 24, 2019 · 23 July 2002 ... GraphML proposed as the standard format for the network data archive to be created within EU FET Open Project COSIN.
  8. [8]
    GraphML Primer
    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. A ...
  9. [9]
    The GraphML Schema Documentation
    See current specification. 12 March 2002. GraphML proposed as the standard format for the network data archive to be created within EU FET Open Project COSIN.<|control11|><|separator|>
  10. [10]
    The GraphML Schema Documentation
    Element: endpoint​​ Description: The list of <endpoints> within a hyperedge points to the nodes contained in this hyperedge. Occurence: <hyperedge>.
  11. [11]
    The GraphML Schema Documentation
    Element: locator​​ Description: Graphs and nodes are declared by the elements <graph> and <node>, respectively. The optional <locator>-child of these elements ...
  12. [12]
    GraphML Primer
    ### Summary of GraphML Attribute System
  13. [13]
    None
    ### Summary of Schema Definitions for `<key>`, `<data>`, and `<default>` Elements
  14. [14]
    GraphML - yFiles - Documentation - yWorks
    The GraphML default extension mechanism can be customized to enable GraphML attributes that hold arbitrarily complex data. GraphMLIOHandler uses this mechanism ...
  15. [15]
    GraphML — NetworkX 3.5 documentation
    GraphML is a comprehensive and easy-to-use file format for graphs. It consists of a language core to describe the structural properties of a graph.
  16. [16]
    Developers
    JGraphml is a Java library allowing to create graphml diagrams. These diagrams are compatible with the yEd tool. See https://www.yworks.com/products/yed.
  17. [17]
    yaricom/goGraphML: The GraphML support for GO language - GitHub
    This repository includes implementation of GraphML specification to represent directed/undirected graphs with data-functions attached to any element of the ...Missing: library | Show results with:library
  18. [18]
    GraphML — NetworkX v1.1 documentation
    Read and write graphs in GraphML format. http://graphml.graphdrawing.org/. The module currently supports simple graphs and not nested graphs or hypergraphs.
  19. [19]
    jgraphml download | SourceForge.net
    Apr 14, 2024 · A Java library to write and read graphml diagrams. This library is compatible with the popular yEd tool.
  20. [20]
    iVis-at-Bilkent/cytoscape.js-graphml - GitHub
    A Cytoscape.js extension to import from a graph in GraphML format or to export the current Cytsocape.js graph to GraphML format, distributed under The MIT ...Missing: Wolfram | Show results with:Wolfram
  21. [21]
  22. [22]
    GraphML - Wolfram Language Documentation
    Represents typed, attributed, directed, and undirected graphs. · Can also store nested graphs and hypergraphs. · Supports user-defined edge and vertex types.
  23. [23]
    yEd - Graph Editor - yWorks
    yEd is a free desktop application to quickly create, import, edit, and automatically arrange diagrams. It runs on Windows, macOS, and Unix/Linux.Download · yEd Live · Gallery · Diagram editors
  24. [24]
    Documentation on graphml format used by yFiles - yEd Q&A
    Feb 9, 2021 · There is no documentation on GraphML tags other than the schema you already found, because we consider the custom tags to be an implementation detail.
  25. [25]
    GraphML | Gephi Desktop Documentation
    GraphML is an XML structured format using the .graphml extension. It supports attributes for nodes and edges, hierarchical graphs and benefits from a flexible ...Missing: hyperedge | Show results with:hyperedge<|control11|><|separator|>
  26. [26]
    Gephi - The Open Graph Viz Platform
    Gephi is the leading visualization and exploration software for all kinds of graphs and networks. Gephi is open-source and free.Download · Tutorial · Gephi plugins · Gephi Lite
  27. [27]
    7. Supported Network File Formats - Cytoscape User Manual
    Cytoscape.js has two ways to represent network ... In contrast to SIF, GML is a rich graph format language supported by many other network visualization packages.Missing: Wolfram | Show results with:Wolfram
  28. [28]
    GraphML Viewer - yWorks
    Free Flash®-based viewer to display diagrams in HTML web pages. It is optimized for diagrams which were created with the free yEd graph editor.
  29. [29]
    Graphia | Open-Source Graph Visualization Software for Big Data
    Support for a variety of input data formats, ranging from raw CSV to GraphML · Create correlation graphs using algorithms such as the Pearson Correlation ...
  30. [30]
    GraphML Import - Tulip
    Jun 2, 2011 · Tulip is a software system dedicated to the visualization of huge graphs. It enables, 3D visualizations, 3D modifications, plugin support, ...Missing: software | Show results with:software
  31. [31]
  32. [32]
    GEXF File Format
    GEXF (Graph Exchange XML Format) is a language for describing complex networks structures, their associated data and dynamics.Basic graph · XML Schema · Visualization · Data
  33. [33]
  34. [34]
    [PDF] Overview of Standard Graph File Formats - INTRANET ICAR-CNR
    The Graph Modeling Language (GML) [4] is a file format for graphs designed to represent arbitrary data structures and characterized by portability, simple.
  35. [35]
    DOT Language - Graphviz
    Sep 28, 2024 · DOT language is an abstract grammar for defining Graphviz nodes, edges, graphs, subgraphs, and clusters.IDs · HTML strings · Comments and optional...
  36. [36]
    [PDF] Short Introduction to Pajek - University of Oxford
    Apr 23, 2007 · Pajek is a computer program for the analysis and visualization of graphs, made by Vladimir Batagelj and Andrej Mrvar.Missing: specification | Show results with:specification
  37. [37]
    None
    ### Last Update Dates and Development Status
  38. [38]
    Is there a way to open a graph made in yEd in Gephi?
    Nov 11, 2021 · Well, since Gephi supports GraphML you can open any yEd-created GraphML file in Gephi. However, when doing so, the graph structure (i.e. ...
  39. [39]
    Supported Formats - SocNetV
    SocNetV supports GraphML, GML, GraphViz, Adjacency Matrix, Pajek, UCINET’s Data Language, Edge List, and Weighted Lists. GraphML is the default.
  40. [40]
    XML File Formats - Property Graph - Oracle Help Center
    Graphs already in memory may also be exported into GraphML files. See GraphML specification for a detailed description of the XML schema. PGX GraphML Limitation.
  41. [41]
    Dynamics - GEXF File Format
    GEXF provides a way to add a lifetime to nodes, edges and data. Time in GEXF is encoded in two ways. Continuous by default, it is encoded as a double.