SBML Level 3 introduced a modular architecture, in which SBML Level 3 Core is usable in its own right (much like SBML Levels 1 and 2 before it), and optional SBML Level 3 Packages add features to this Core. To support this architecture, libSBML is itself divided into a core libSBML and optional extensions.

## Differences between core libSBML and extensions to libSBML

Core libSBML corresponds to the features of SBML Levels 1 to 3 Core; they are always available, and require applications to understand only the SBML core specifications. The classes listed on the rest of this page constitute libSBML's implementation of SBML Levels 1–3, without any SBML Level 3 packages.

By contrast, the libSBML extensions are plug-ins that each implement support for a given SBML Level 3 package. Separate pages of this API manual describe the libSBML extensions for those SBML Level 3 packages that are supported at this time. They are grouped under the section titled Level 3 Extensions. The stable releases of libSBML only include extensions for officially-released package specifications; additional, experimental extensions may be available for other Level 3 packages that may not yet have been finalized by the SBML community. You can find copies of these experimental extensions at the download site for libSBML on SourceForge.net.

## Summary of core SBML objects implemented in libSBML

Each type of component in a plain SBML model (i.e., one that does not use any SBML packages) is described using a specific type of SBML data object that organizes the relevant information. The top level of an SBML model definition consists of lists of these components, with every list being optional. The next table enumerates the lists and objects defined by core SBML; also shown are the SBML Level+Version combinations for which they are valid.

SBML components and corresponding libSBML objects.
Level & Version | LibSBML container object | LibSBML data object(s)
--- | --- | ---
Level 2 Version 1 and higher | ListOfFunctionDefinitions | FunctionDefinition
Level 2 Version 1 and higher | ListOfUnitDefinitions | UnitDefinition
Level 2 Versions 2–5 | ListOfCompartmentTypes | CompartmentType
Level 1 and higher | ListOfCompartments | Compartment
Level 2 Versions 2–5 | ListOfSpeciesTypes | SpeciesType
Level 1 and higher | ListOfSpecies | Species
Level 1 and higher | ListOfParameters | Parameter
Level 2 Version and higher | ListOfInitialAssignments | InitialAssignment
Level 1 and higher | ListOfRules | AssignmentRule, AlgebraicRule, RateRule
Level 2 Version and higher | ListOfConstraints | Constraint
Level 1 and higher | ListOfReactions | Reaction
Level 2 Version 1 and higher | ListOfEvents | Event

The list of classes below constitutes the public API of core libSBML. The list includes classes that are not defined in any SBML specification; these utility classes are provided by libSBML to implement various kinds of functionality useful in the context of working with SBML content.