In this appendix we describe the major changes that occurred between version 1.1 and version 2 of the OpenMath standard. All changes to the encodings and content dictionaries have been designed to be backward compatible, in other words all existing OpenMath objects and Content Dictionaries are still valid in OpenMath 2. On the other hand an existing OpenMath 1.1 application may not be able to process OpenMath 2 objects.
Additional features of abstract objects have been introduced:
OpenMath symbols have an optional role qualifier which restricts the place where they may occur within compound objects. Although part of the abstract description of a symbol this information is intended to be stored in the CD. In the XML encoding it may be used to provide a more restricted schema leading to tighter validation.
In addition to their name and cd properties, symbols now have an optional cdbase property. This can be used to disambiguate between two CDs which are produced independently but have the same name, and can also be used to produce a canonical URI for any OpenMath symbol for use in frameworks such as RDFS or MathML which need one.
An OpenMath object may be attributed with a non-OpenMath object using the new foreign constructor. This allows an XML-encoded OpenMath object to be attributed with appropriate Presentation MathML, for example, or a base-64 encoded MPEG file of its aural rendering.
In addition, an OpenMath error object may take as its arguments non-OpenMath objects wrapped in the new foreign constructor.
The new role property can be used to indicate that a symbol is an attribution, in which case an application may ignore or remove it, or a semantic attribution in which case removing it is no longer guaranteed to produce an equivalent object.
Restrictions on the names of symbols, variables and content dictionaries have been relaxed to be compatible with XML and to be less Anglo-Saxon.
The OpenMath version 2 standard still mandates two encodings: XML and binary. The XML encoding in particular has been updated to reflect the latest development of XML and is now a full XML application. Version 2 encodings are backward compatible with version 1.1 encodings.
Both encodings have been updated to support the changes to the model of abstract objects described above.
Encodings support internal and external sharing of objects
An optional attribute defining the version of the encoding can be specified for the encoded object
The XML encoding in version 2 is defined by a Relax NG schema and the mandated character-based grammar of version 1 has been removed, while the DTD has been relegated to an Appendix.
The symbolic values INF
,
-INF
and NaN
have
been added to the decimal attribute of an OMF
in the XML encoding,
and guidelines on the interpretation of NaN
s
added to the compliance section.
The Binary encoding has been extended to support the streaming of objects.
In OpenMath version 2 Content Dictionaries are defined in terms of the abstract information content that needs to be specified for defining OpenMath symbols. The current implementation is thus just one possible encoding of this abstract model.
The CDUses element is not part of this information model and has been made optional and deprecated in the reference encoding since it is trivial to extract its content automatically from the CD.
A CD may now, optionally, define its cdbase.
A CD symbol definition may now, optionally, define its role.
An FMP may, optionally, have a kind
attribute for use in classifying different kinds of definitions. The
details of how this attribute is used are not mandated by the standard.
The XML encoded Content Dictionaries now use elements from
the namespace http://www.openmath.org/OpenMathCD
.