2. Hierarchy of graphs

The Tulip library integrates the management of sub graphs. By definition a sub graph G' of a graph G is part of the elements of G such that G' is a graph. This implies that all sources and target of the edges of G' are in G. Thus a sub graph can be manipulated exactly like a graph and so in Tulip one will only manipulates graphs that we call SuperGraph because they could be or not sub graphs. As a sub graph is a graph one can need to obtain a sub graph of this sub graph and so on. Such an operation consists in building of a hierarchy of graphs. In this hierarchy if a graph G" is a descendant of a graph G, G" is a sub graph of G.

One of the strong point of Tulip is to ensure efficiently that all elements are shared between graphs in a hierarchy of graph. Thus, if a node n is element of a graph G and of a graph G' the entity n is the same in both graphs. Of course, the information about the entity can changed between graphs. For instance, the degree of n can be different according to the graph that we manipulate.

One of the other feature in Tulip is that the sub graph relation in the hierarchy is preserved when one makes modification of a graph. This requirement implies some change on the modification operations described above. If one add a node in a graph, this node is automatically added to all the ancestors of this graph. If one delete a node, this node is automatically deleted in all the descendants of the graph. If one reverses an edge, this edge is automatically reversed in all the hierarchy of graphs.

In order to manipulate a hierarchy of graphs, a set of functions have been added to graph function introduced above. This function enables to navigate in the hierarchy and also to modify the hierarchy of graphs. As for the graph structure the access to the hierarchy structure is done by using iterators. One should remember that iterators are not persistent and thus, if the hierarchy is modified, the iterators are invalid.

List of available modification operations

List of available access operations