Tulip TLP
Tulip TLP is the native, human-readable serialization of the Tulip graph visualization and analysis framework, created by David Auber and colleagues at LaBRI (Laboratoire Bordelais de Recherche en Informatique) and the University of Bordeaux. Tulip is an open-source C++/Qt framework aimed at the drawing, layout, clustering, and interactive exploration of very large graphs (up to millions of nodes and edges), and TLP is the plain-text file it reads and writes to persist a graph together with all of its visual and analytical state. The format is versioned in its opening line; version 2.3 has been current since Tulip 3.6.
Structurally, TLP uses an S-expression (LISP-like parenthesized) syntax. A file opens with (tlp "2.3" ...), comments begin with a semicolon, and the body consists of nested expressions. Nodes are declared as a list of non-negative integer indices, with a shorthand range notation (0..4) for consecutive ids. Each edge is a triple of the edge id, the source node id, and the target node id. Subgraphs are expressed as hierarchically nested cluster blocks, each with an id (id 0 is reserved for the root graph), a name, and its own node and edge lists, giving TLP first-class support for graph hierarchies that flatter formats like Edge List or DOT lack.
The defining feature is its property system. A property carries a data type and a name, a pair of default values (one for nodes, one for edges), and any number of per-element overrides. Types include bool, int, double, string, color, size, and layout (2D/3D coordinates), plus vector variants of each. Standardized view* properties (viewLayout, viewColor, viewSize, viewShape, viewLabel, viewSelection) let a single file store the complete rendered scene, not merely topology.
Tulip persists the same model in two sibling formats: the compact binary Tulip Binary (.tlpb) for fast load of huge graphs, and Tulip JSON for programmatic interchange; all three can be gzip-compressed. Tulip (Tulip) also imports and exports common formats such as GML, GEXF, Pajek, and DOT, so TLP is best treated as an application-native container rather than an interchange standard. Its strengths are rich typed properties and native subgraph hierarchies; its main limitations are that support is largely confined to the Tulip ecosystem and its bespoke syntax is unfamiliar to generic graph tooling.
Alternative Names: TLP
| Feature | Tulip TLP |
|---|---|
| Multiple Graphs per Document | |
| Nodes | |
| Undirected Edges | |
| Directed Edges | |
| Hyperedges | |
| Parallel Edges | |
| Self-loops | |
| Edges on Edges | |
| Nested Graphs in Nodes | |
| Nested Graphs in Edges | |
| Nested Graphs in Graphs | |
| Node Labels | |
| Edge Labels | |
| Attributes on Nodes | |
| Attributes on Edges | |
| Attributes on Graphs | |
| Typed Edges | |
Tools(Read & Write)
Frequently Asked Questions
What is a Tulip TLP file?
A Tulip TLP file stores a graph — its nodes, edges and attributes — in the Tulip TLP format (also: TLP). See the feature table above for what it supports.
How do I open a Tulip TLP file?
Open it in a graph tool that supports Tulip TLP, or convert it to a format your tool reads. With GraphInOut you can convert Tulip TLP to GraphML, DOT, Connected JSON and more, right in your browser.
How do I convert a Tulip TLP file to another format?
Use the Convert from Tulip TLP link above: upload or paste your Tulip TLP file (input preset to Tulip TLP), choose a target format and download the result — free, no install.
