Edward A. Lee and Stephen Neuendorffer, UC Berkeley
eal at eecs, neuendor@eecs.berkeley.edu
MoML is a modeling markup language based on XML. It is intended for specifying interconnections of parameterized components. Its key features include:
- Web integration. MoML is an XML dialect. XML, the popular extensible markup language, provides a standard syntax and a standard way of defining the content within that syntax. The syntax is a subset of SGML, and is similar to HTML. It is intended for use on the internet, and is intended for precisely this sort of specialization into dialects. File references are via URIs (in practice, URLs), both relative and absolute, so MoML is equally comfortable working in applets and applications.
- Implementation independence. The MoML language is designed to work with a variety of tools. A modeling tool that reads MoML files is expected to provide a class loader in some form. Given the name of a class, the class loader must be able to instantiate it. In Java, the class loader could be that built in to the JVM. In C++ or other languages, the class loader would have to implemented by the modeling tool.
- Extensibility. Components can be parameterized in two ways. First, they can have named attributes with string values. Second, they can be associated with an external configuration file that can be in any format understood by the component. Typically, the configuration will be in some other XML dialect, such PlotML or GraphicML.
- Support for visual rendering. Models in MoML can provide annotations that serve as hints or specifications for a visual rendering tool, such as a block diagram editor. For example, components can specify a location and can reference an external configuration file that defines a visual rendition, such as an icon.
- Classes and inheritance. Components can be defined in MoML as classes which can then be instantiated in a model. Components can extend other components through an object-oriented inheritance mechanism.
- Semantics independence. MoML defines no semantics for an interconnection of components. It instead provides a mechanism for attaching to a model a director. The director defines the semantics of the interconnection. MoML knows nothing about directors except that they are instances of classes that can be loaded by the class loader.