=================================================================== RCS file: /home/cvs/OpenXM/doc/issac2000/data-format.tex,v retrieving revision 1.5 retrieving revision 1.9 diff -u -p -r1.5 -r1.9 --- OpenXM/doc/issac2000/data-format.tex 2000/01/13 10:58:16 1.5 +++ OpenXM/doc/issac2000/data-format.tex 2000/01/16 10:55:40 1.9 @@ -1,47 +1,39 @@ -% $OpenXM: OpenXM/doc/issac2000/data-format.tex,v 1.4 2000/01/11 05:35:48 noro Exp $ +% $OpenXM: OpenXM/doc/issac2000/data-format.tex,v 1.8 2000/01/16 06:02:41 takayama Exp $ -\section{Data Format} (Ohara) +\section{Data Format} OpenXM admits multiple mathematical encodings such as OpenMath, MP, CMO (Common Mathematical Object format). OpenXM itself does not exhibit a bias towards a particular encodings as a main mathematical data carrier and an OpenXM compliant system do not need to implement all possible data formats. -A server or a client does not necessarily implement full specifications -of OpenXM. -However, if a program sends an OX data or an OX command unknown to its peer, +However they should at least implement seven primitive +data types of the CMO, which are necessary to +carry several control informations such as a {\it mathcap}. +Mathcap is a list of supported CMO's, OpenXM stack machine codes, +and necessary extra informations. +If a program sends an OX messages unknown to its peer, an unrecoverable error may occur. -To avoid such a case OpenXM provides a scheme not -to send an OX message unknown to peers. -It is realized by exchanging a list of -supported CMO's, OpenXM stack machine codes, and necessary extra informations. -The list is called {\it mathcap}. -% Mathcap is also defined as a CMO and its elements are 32bit integers -% or strings. -Mathcap is also defined as a CMO and the CMO has a structure of a nest -of lists. its leafs of the end are also a CMO which tags with -CMO\_INT32 or CMO\_STRING. +By exchanging mathcaps, a program knows its peer's capability +and such an error can be avoided. +Mathcap is also defined as a CMO. +See \cite{noro-takayama} for the details. -Mathematical encoding types of OX data are distinguished with tags +Encoding types of OX data are distinguished with tags of OX messages. For example, an OX message with the tag -OX\_DATA is followed by a CMO packet. +{\tt OX\_DATA} is followed by a CMO packet. An OX message with the tag -OX\_DATA\_OPENMATH\_XML is followed by -an OpenMath XML string and its length. +{\tt OX\_DATA\_OPENMATH\_XML} is followed by +an OpenMath XML string. -All OpenXM compliant systems should implement seven primitive data types -of the CMO. -These are used not only to express mathematical objects, but also -indispensable to carry control informations such as mathcap. -CMO is an original mathematical data encoding system of the OpenXM project. Let us explain the data format of CMO. Any CMO packet consists of a header and a body. The size of the header is 4 bytes that tags the data type of the body. Data type tags are signed 32 bit integers which is called {\sl int32} in this paper. -Following tags are registered in the OpenXM for now. +Following tags are registered in the OpenXM. \begin{verbatim} #define CMO_ERROR2 0x7f000002 #define CMO_NULL 1 @@ -66,16 +58,15 @@ Following tags are registered in the OpenXM for now. #define CMO_RATIONAL 34 #define CMO_64BIT_MACHINE_DOUBLE 40 #define CMO_ARRAY_OF_64BIT_MACHINE_DOUBLE 41 -#define CMO_128BIT_MACHINE_DOUBLE 42 -#define CMO_ARRAY_OF_128BIT_MACHINE_DOUBLE 43 #define CMO_BIGFLOAT 50 #define CMO_IEEE_DOUBLE_FLOAT 51 #define CMO_INDETERMINATE 60 #define CMO_TREE 61 #define CMO_LAMBDA 62 \end{verbatim} -The first seven types should be implemented on all OpenXM compliant systems. -The format of the first seven CMO's are as follows. \\ +The first seven primitive types should be implemented +on all OpenXM compliant systems. +The formats are as follows. \\ \begin{tabular}{|c|c|} \hline {\sl int32} {\tt CMO\_ERROR2} & {\sl CMObject} {\rm ob} \\ @@ -118,11 +109,13 @@ $\cdots$ & {\sl CMObject} {\rm ob[n-1]} \\ \cline{1-2} \end{tabular} \\ -A mathematical programmer who wants to implement CMO on a server proceeds +As to the formats of other CMO's, see \cite{noro-takayama}. + +When one wants to implement CMO on a server, the person proceeds as follows. \begin{enumerate} -\item Look for the CMO list at the web cite \cite{openxm-web}. -If there is a CMO that fits to her or his requirement, then use this CMO. +\item Look for the list of CMO's at the web cite \cite{openxm-web}. +If there is a CMO that fits to one's requirement, then use this CMO. \item If there is no suitable CMO, design a new CMO and register the new CMO to \cite{openxm-web} with a description and examples. \end{enumerate}