OpenMath is the name of a markup language for specifying the meaning of mathematical formulae. Among other things, it can be used to complement MathML, a standard which mainly focuses on the presentation of formulae, with information about their semantic meaning. OpenMath can be encoded in XML or in a binary format.
OpenMath consists of the definition of "OpenMath Objects", which is an abstract datatype for describing the logical structure of a mathematical formula and the definition of "OpenMath Content Dictionaries", or collections of names for mathematical concepts. The names available from the latter type of collections are specifically intended for use in extending MathML, and conversely, a basic set of such "Content Dictionaries" has been designed to be compatible with the small set of mathematical concepts defined in Content MathML, the non-presentational subset of MathML.
OpenMath has been developed in a long series of workshops and (mostly European) research projects that began in 1993 and continues through today. The OpenMath 1.0 Standard was released in February 2000, and revised as OpenMath 1.1 in October 2002. Two years later, the OpenMath 2.0 Standard was released in June 2004. OpenMath 1 fixed the basic language architecture, while OpenMath2 brought better XML integration, structure sharing and liberalized the notion of OpenMath Content dictionaries.
The OpenMath Effort is governed by the OpenMath Society, based in Helsinki, Finland. The Society brings together tool builders, software suppliers, publishers and authors. Membership is by invitation of the Societies Executive Committee, which welcomes self-nominations of individuals who have worked on OpenMath-related issues in research or application. As of 2007, Michael Kohlhase is president of the OpenMath society. He succeeded Arjeh M. Cohen, who was the first president.
The well-known quadratic formula:
would be marked up like this in OpenMath (the representation is an expression tree made up from functional elements like OMA for function application or OMV for variables):
<OMOBJxmlns="http://www.openmath.org/OpenMath"><OMAcdbase="http://www.openmath.org/cd"><OMScd="relation1"name="eq"/><OMVname="x"/><OMA><OMScd="arith1"name="divide"/><OMA><OMScdbase="http://www.example.com/mathops"cd="multiops"name="plusminus"/><OMA><OMScd="arith1"name="unary_minus"/><OMVname="b"/></OMA><OMA><OMScd="arith1"name="root"/><OMA><OMScd="arith1"name="minus"/><OMA><OMScd="arith1"name="power"/><OMVname="b"/><OMI>2</OMI></OMA><OMA><OMScd="arith1"name="times"/><OMI>4</OMI><OMVname="a"/><OMVname="c"/></OMA></OMA></OMA></OMA><OMA><OMScd="arith1"name="times"/><OMI>2</OMI><OMVname="a"/></OMA></OMA></OMA></OMOBJ>
In the expression tree above symbols—i.e. elements like <OMS cd="arith1" name="times"/>—stand for mathematical functions that are applied to sibling expressions in an OMA which are interpreted as arguments. The OMS element is a generic extension element that means whatever is specified in the content dictionary referred to in the cd attribute (this document can be found at the URI specified in the innermost cdbase attribute dominating the respective OMS element. In the example above, all symbols come from the content dictionary for arithmetics (arith1, see below), except for the plusminus, which comes from a non-standard place, hence the cdbase attribute here.
Content Dictionaries are structured XML documents that define mathematical symbols that can be referred to by OMS elements in OpenMath Objects. The OpenMath 2 standard does not prescribe a canonical encoding for content dictionaries, but only requires an infrastructure sufficient for unique referencing in OMS elements. OpenMath provides a very basic XML encoding that meets these requirements, and a set of specific content dictionaries for some areas of mathematics, in particular covering the K-14 fragment covered by content MathML.
For more richly structured content dictionaries (and generally for arbitrary mathematical documents) the OMDoc format extends OpenMath by a “statement level” (including structures like definitions, theorems, proofs and examples, as well as means for interrelating them) and a “theory level”, where a theory is a collection of several contextually related statements. OMDoc's theories are designed to be compatible to OpenMath content dictionaries, but they can also be set into inheritance and import relations.
OpenMath is criticised for being inadequate for general mathematics, exposing not enough formal precision to capture the intricacies of numerics, lacking a proof-of-concept and as an inferior technology to already established approaches of encoding mathematical semantics, amongst other presumed shortcomings. [1]
Markuplanguage refers to a text-encoding system consisting of a set of symbols inserted in a text document to control its structure, formatting, or the relationship between its parts. Markup is often used to control the display of the document or to enrich its content to facilitating automated processing. A markup language is a set of rules governing what markup information may be included in a document and how it is combined with the content of the document in a way to facilitate use by humans and computer programs. The idea and terminology evolved from the "marking up" of paper manuscripts, which is traditionally written with a red pen or blue pencil on authors' manuscripts.
The Standard Generalized Markup Language is a standard for defining generalized markup languages for documents. ISO 8879 Annex A.1 states that generalized markup is "based on two postulates":
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. The World Wide Web Consortium's XML 1.0 Specification of 1998 and several other related specifications—all of them free open standards—define XML.
Mathematical Markup Language (MathML) is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents. It is part of HTML5 and is a ISO/IEC standard ISO/IEC 40314 since 2015.
The Geography Markup Language (GML) is the XML grammar defined by the Open Geospatial Consortium (OGC) to express geographical features. GML serves as a modeling language for geographic systems as well as an open interchange format for geographic transactions on the Internet. Key to GML's utility is its ability to integrate all forms of geographic information, including not only conventional "vector" or discrete objects, but coverages and sensor data.
A formula editor is a computer program that is used to typeset mathematical formulas and mathematical expressions.
An XML schema is a description of a type of XML document, typically expressed in terms of constraints on the structure and content of documents of that type, above and beyond the basic syntactical constraints imposed by XML itself. These constraints are generally expressed using some combination of grammatical rules governing the order of elements, Boolean predicates that the content must satisfy, data types governing the content of elements and attributes, and more specialized rules such as uniqueness and referential integrity constraints.
The Darwin Information Typing Architecture (DITA) specification defines a set of document types for authoring and organizing topic-oriented information, as well as a set of mechanisms for combining, extending, and constraining document types. It is an open standard that is defined and maintained by the OASIS DITA Technical Committee.
The following tables compare general and technical information for a number of document markup languages. Please see the individual markup languages' articles for further information.
Office Open XML is a zipped, XML-based file format developed by Microsoft for representing spreadsheets, charts, presentations and word processing documents. Ecma International standardized the initial version as ECMA-376. ISO and IEC standardized later versions as ISO/IEC 29500.
OMDoc is a semantic markup format for mathematical documents. While MathML only covers mathematical formulae and the related OpenMath standard only supports formulae and “content dictionaries” containing definitions of the symbols used in formulae, OMDoc covers the whole range of written mathematics.
A mathematical markup language is a computer notation for representing mathematical formulae, based on mathematical notation. Specialized markup languages are necessary because computers normally deal with linear text and more limited character sets. A formally standardized syntax also allows a computer to interpret otherwise ambiguous content, for rendering or even evaluating. For computer-interpretable syntaxes, the most popular are TeX/LaTeX and MathML.
Extensible HyperText Markup Language (XHTML) is part of the family of XML markup languages. It mirrors or extends versions of the widely used HyperText Markup Language (HTML), the language in which Web pages are formulated.
EPUB is an e-book file format that uses the ".epub" file extension. The term is short for electronic publication and is sometimes styled ePub. EPUB is supported by many e-readers, and compatible software is available for most smartphones, tablets, and computers. EPUB is a technical standard published by the International Digital Publishing Forum (IDPF). It became an official standard of the IDPF in September 2007, superseding the older Open eBook (OEB) standard.
The Office Open XML file formats are a set of file formats that can be used to represent electronic office documents. There are formats for word processing documents, spreadsheets and presentations as well as specific formats for material such as mathematical formulae, graphics, bibliographies etc.
LibSBML is an open-source software library that provides an application programming interface (API) for the SBML format. The libSBML library can be embedded in a software application or used in a web servlet as part of the application or servlet's implementation of support for reading, writing, and manipulating SBML documents and data streams. The core of libSBML is written in ISO standard C++; the library provides API for many programming languages via interfaces generated with the help of SWIG.