The model of OpenCAGE consists of several parts. First there is the GIF interface, which is the interface from a graph system to OpenCAGE. It supports at this stage of development nodes (which can be hierarchically connected) and edges between them.
An adapter forms the implementation of the GIF and relates to a special graph system. It maps the functionality provided by the graph system to the functions which are compatible to the other parts of OpenCAGE. There can be several independent adapters at the same time.
The model offers other parts of OpenCAGE methods which have to be notified when parts of model were changed. This is done through the abstract classes Edge_Model_Observer and Node_Model_Observer; concrete subclasses of them can be registerd at every Edge_Model and Node_Model and will be called on every change of the object where this observer is registered at.
Another part of the model forms the Programm Specific Data. This can be split up into the Project Data and the Program Data. At this stage of development this part is not implemented yet.