CellML API

CellML API Index Page

Introduction

The CellML Application Programming Interface (API) provides a simple interface that applications can use to manipulate and process CellML documents. The interfaces are designed to be independent of any programming language, platform, or vendor, and are expressed in OMG Interface Definition Language (IDL). It addresses both CellML 1.0 and CellML 1.1. 

This page contains information about the defined interfaces, and also about implementations of it that are available.

The CellML API has been designed so that it can easily be adapted to work with various ways of parsing and representing XML documents. The University of Auckland implementation is built on top of a Document Object Model (DOM) representation of the XML. However, the CellML API does not expose the DOM to the application except in the cases where it cannot be avoided (these currently restricted to getting the initial Model object and manipulating extension elements. In addition, see the comments about MathML elements below).

The CellML API provides access to the MathML via the World Wide Web Consortium (W3C) MathML DOM. The objects in this API extend from those defined by the DOM core.

Interface definitions

IDL files for the CellML API are available. This is currently the normative reference for the CellML API. The CellML team also plans to release a plain-English definition of the API semantics; this will probably look similar to the API specifications released by the W3C.

The documentation generated from the API can be viewed at http://cellml-api.sf.net/

Implementations

An implementation of the CellML API is complete. See current and planned releases here. You can get the current development branch via Mercurial, at http://cellml-api.hg.sourceforge.net:8000/hgroot/cellml-api/cellml-api. There is an rss feed of changes to the repository available at http://cellml-api.hg.sourceforge.net/hgweb/cellml-api/cellml-api/rss-log. See the build instructions for various platforms. This implementation is written in C++, with mappings to CORBA and Java. It has been designed in such a way that automatic mappings to other languages can be easily added.

Testsuites

A testsuite, designed to test the C++ API, has also been developed, and is available in the source distribution.

Ongoing Work

Bugs and feature requests are put in the tracker. A page drafting the milestones for the next release are available here.