OpenMathは、数式の意味を記述するためのマークアップ言語です。主に数式の表現に焦点を当てた標準規格であるMathMLを補完し、数式の意味に関する情報を提供することができます。OpenMathはXML形式またはバイナリ形式でエンコードできます。
OpenMathは、「OpenMathオブジェクト」の定義(数式の論理構造を記述するための抽象データ型)と、「OpenMathコンテンツ辞書」の定義(数学的概念の名前の集合)から構成されます。後者のタイプの集合から利用できる名前は、MathMLの拡張に使用することを特に意図しており、逆に、このような「コンテンツ辞書」の基本セットは、MathMLの非表現サブセットであるContent MathMLで定義されている少数の数学的概念と互換性があるように設計されています。
OpenMathは、1993年に始まり現在に至るまで続く、一連のワークショップと(主にヨーロッパの)研究プロジェクトを通じて開発されてきました。OpenMath 1.0規格は2000年2月にリリースされ、2002年10月にOpenMath 1.1として改訂されました。その2年後の2004年6月には、OpenMath 2.0規格がリリースされました。OpenMath 1では基本的な言語アーキテクチャが固定化され、OpenMath 2ではXMLとの統合、構造共有が改善され、OpenMathコンテンツ辞書の概念が自由化されました。
OpenMathプロジェクトは、フィンランドのヘルシンキに拠点を置くOpenMath Societyによって運営されています。この協会は、ツール開発者、ソフトウェアサプライヤー、出版社、著者などが集まる組織です。会員資格は協会の執行委員会からの招待制で、研究または応用においてOpenMath関連の問題に取り組んだ個人の自己推薦も受け付けています。2007年現在、マイケル・コールハーゼ氏がOpenMath Societyの会長を務めています。彼は初代会長のアルジェ・M・コーエン氏の後任です。
よく知られている二次方程式の解の公式:
OpenMathでは、以下のようにマークアップされます(表現は、関数適用を表すOMAや変数を表すOMVなどの関数要素から構成される式ツリーです)。
<OMOBJ xmlns= "http://www.openmath.org/OpenMath" > <OMA cdbase= "http://www.openmath.org/cd" > <OMS cd= "relation1" name= "eq" /> <OMV name= "x" /> <OMA> <OMS cd= "arith1" name= "divide" /> <OMA> <OMS cdbase= "http://www.example.com/mathops" cd= "multiops" name= "plusminus" /> <OMA> <OMS cd= "arith1" name= "unary_minus" /> <OMV name= "b" /> </OMA> <OMA> <OMS cd= "arith1" name= "root" /> <OMA> <OMS cd= "arith1" name= "minus" /> <OMA> <OMS cd= "arith1" name= "power" /> <OMV name= "b" /> <OMI> 2 </OMI> </OMA> <OMA> <OMS cd= "arith1" name= "times" /> <OMI> 4 </OMI> <OMV name= "a" /> <OMV name= "c" /> </OMA> </OMA> </OMA> </OMA> <OMA> <OMS cd= "arith1" name= "times" /> <OMI> 2 </OMI> <OMV name= "a" /> </OMA> </OMA> </OMA> </OMOBJ>上記の式ツリーでは、記号(つまり、<OMS cd="arith1" name="times"/> のような要素)は、引数として解釈されるOMA内の兄弟式に適用される数学関数を表します。OMS 要素は汎用拡張要素であり、 cd属性で参照されるコンテンツ辞書で指定されているものすべてを意味します(このドキュメントは、それぞれのOMS要素を支配する最も内側のcdbase属性で指定されている URI で見つけることができます)。上記の例では、プラスマイナスを除いて、すべての記号は算術のコンテンツ辞書 ( arith1、下記参照)から来ています。プラスマイナスは非標準の場所から来ているため、ここにcdbase属性があります。
コンテンツ辞書は、OpenMathオブジェクト内のOMS要素から参照できる数学記号を定義する構造化XMLドキュメントです。OpenMath 2標準では、コンテンツ辞書の標準的なエンコーディングは規定されておらず、 OMS要素内で一意に参照できるインフラストラクチャのみを要求しています。OpenMathは、これらの要件を満たす非常に基本的なXMLエンコーディングと、数学の特定の分野、特にコンテンツMathMLでカバーされるK-14分野を対象とした一連のコンテンツ辞書を提供しています。
より構造化されたコンテンツ辞書(および一般的に任意の数学文書)向けに、OMDoc形式はOpenMathを拡張し、「ステートメントレベル」(定義、定理、証明、例などの構造、およびそれらを相互に関連付ける手段を含む)と「理論レベル」を提供します。ここで、理論とは、文脈的に関連する複数のステートメントの集合です。OMDocの理論はOpenMathコンテンツ辞書との互換性を持つように設計されていますが、継承関係やインポート関係を設定することもできます。
OpenMathは、一般的な数学には不十分であり、数値の複雑さを捉えるのに十分な形式的精度を開示しておらず、概念実証がなく、数学的意味論を符号化する既存のアプローチよりも劣った技術であるなど、他の想定される欠点があるとして批判されている。[ 1 ]