Components of AGLIB and required third-party packages

Components of AGLIB

AGLIB consists of the main library (libag), AG wrappers, and file I/O plugins. The diagram below illustrates the architecture of AGLIB.

libag: The main library

The main library (libag) consists of the core library and some API's (AGAPI and the Tree API) built on top of it. The core implements the annotation graph data structures (classes) and functions (methods) that allow users to access the data structure. The core also implements an ODBC interface (agdb) and file I/O plugin interface.

The agdb module allows annotation graphs to be stored and loaded from database systems via ODBC drivers.

The file I/O plugin interface is an interface for the file I/O plugins, and also defines a plugin programming interface.

AGAPI wraps the core, exporting a set of flat functions. The intention was to provide a set of functions that can be easily wrapped by SWIG so that we can quickly develop scripting language interfaces to the main library. However, because this flat API is so understand and use, it has been widely employed even by AGLIB components such as file I/O plugins, which could have used the core directly.

The Tree API is written using AGAPI and provides operations that manipulate annotation graph representation of tree structures as described in [Cotton & Bird, 2002].

AG wrappers: Scripting language interfaces

The AG wrapper modules is a native module of one of the scripting languages, allowing programs written in that language to use the AGAPI functions (plus Tree API functions). These modules are created by wrapping AGAPI and the Tree API of the main library using SWIG. Advantages of this approach, over porting the entire C++ code of AGLIB to the native code of the language are that:

Currently there are three AG wrappers available: the Tcl AG wrapper, the Python AG wrapper and the Java AG wrapper

File I/O plugins

The File I/O plugins are seperate modules that can be loaded dynamically at runtime. These modules export Load and Store functions, which bridge the annotation graph data model and other file formats. As of the release time of AGLIB 2.0, eleven file I/O plugins are available. For more information on the supported formats, see Supported file formats.

Required third-party packages

Some AGLIB components require external software packages. They are required to take advantage of all the components of AGLIB, but if some components are not needed, AGLIB can be built without those components. If any of the components in the following table are missing, the corresponding AGLIB components won't be built. Here is a full list of the packages:

Component Required package /
Download site /
(ODBC interface)
iODBC driver manager (libiodbc)
  • Download:
  • Java AG wrapper Java SDK
  • Download:
  • JNI development headers are needed at compile time.
  • Java VM is needed at run time.
  • Python AG wrapper Python
  • Download:
  • Development headers are needed at compile time.
  • Python interpreter is needed at run time.
  • Tcl AG wrapper Tcl/Tk
  • Download: SourceForge (8.0 or above)
  • Development headers are needed at compile time.
  • tclsh (Tcl only) or wish (Tcl/Tk) is needed at run time.
    file I/O plugins
    Xerces C++
  • Download: Xerces-C download site
  • Development headers and libxerces-c are needed at compile time.
  • is needed at run time.
  • CAG
    file I/O plugin
  • Download:
  • If development headers and libz are available, output compression will be turned on.
  • might be needed at run time.

  • Annotation Graph Toolkit