Hierarchical Model Composition
SBML Level 3 Package Activity Status Page
Model composition refers to the ability to include models as submodels inside other models. This requires defining the interfaces between the models and rules for connecting parts of models together. The motivation is to enable the creation of standard, vetted models and use them as library components when creating larger models, much as is done in software development, electronics design, and other engineering fields.
The short label for this package is comp.
A separate page is dedicated to the specification development activities involving this package.
Package Working Group (PWG)
After a vote by the SBML community to accept the above proposal as something that addresses a valid need and takes a reasonable approach, we formed a working group to help complete the proposal and resolve any implementation issues that might arise. Membership of this group is open to all interested members of the SBML community; all you need to do is sign up for the sbml-comp mailing list.
As the above proposal was being developed and implemented, certain topics came up for which we solicited community input. These pages serve to archive the discussion of those topics, and as a reference for future implementers of the specification:
Combining Glycolysis: An example comp model that takes three related models and combines them.
Recipe to Cake: Because the comp package is rule-based (a 'recipe'), you must follow those rules in your own software to create an object model where each object corresponds to a single SBML element (the 'cake'). How do you do that?
Flattening and other packages: The easiest way to transfer a hierarchical model to software that doesn't know about this package is to 'flatten' it to no longer use 'comp' constructs. How can this be accomplished? What are the complications that arise when flattening a model with information from a different package?
Adding Ports: Suppose you had an existing Level 3 model, and wanted to add ports to it. How could this be done?
Proposal for 'Replaced By': If you want a submodel element to be the 'canonical' form, but you want to attach things to it in the containing model, is there a way we can allow this without literally copying and pasting the model?