[BACK]Return to data-format.tex CVS log [TXT][DIR] Up to [local] / OpenXM / doc / issac2000

Annotation of OpenXM/doc/issac2000/data-format.tex, Revision 1.9

1.9     ! takayama    1: % $OpenXM: OpenXM/doc/issac2000/data-format.tex,v 1.8 2000/01/16 06:02:41 takayama Exp $
1.2       takayama    2:
1.7       takayama    3: \section{Data Format}
1.2       takayama    4:
1.5       ohara       5: OpenXM admits multiple mathematical encodings such as OpenMath, MP, CMO
1.2       takayama    6: (Common Mathematical Object format).
                      7: OpenXM itself does not exhibit a bias towards a particular encodings
1.5       ohara       8: as a main mathematical data carrier and an OpenXM compliant system do not need to
1.2       takayama    9: implement all possible data formats.
1.7       takayama   10: However  they should at least implement seven primitive
1.6       noro       11: data types of the CMO, which are necessary to
                     12: carry several control informations such as a {\it mathcap}.
                     13: Mathcap is a list of supported CMO's, OpenXM stack machine codes,
                     14: and necessary extra informations.
1.7       takayama   15: If a program sends an OX messages unknown to its peer,
1.2       takayama   16: an unrecoverable error may occur.
1.9     ! takayama   17: By exchanging mathcaps, a program knows its peer's capability
1.6       noro       18: and such an error can be avoided.
1.7       takayama   19: Mathcap is also defined as a CMO.
                     20: See \cite{noro-takayama} for the details.
1.2       takayama   21:
1.8       takayama   22: Encoding types of OX data are distinguished with tags
1.2       takayama   23: of OX messages.
                     24: For example,
                     25: an OX message with the tag
1.8       takayama   26: {\tt OX\_DATA} is followed by a CMO packet.
1.2       takayama   27: An OX message with the tag
1.8       takayama   28: {\tt OX\_DATA\_OPENMATH\_XML} is followed by
1.7       takayama   29: an OpenMath XML string.
1.3       takayama   30:
1.2       takayama   31: Let us explain the data format of CMO.
                     32: Any CMO packet consists of a header and a body.
                     33: The size of the header is 4 bytes that tags the data type of the body.
                     34: Data type tags are signed 32 bit integers which is called {\sl int32} in this
                     35: paper.
1.7       takayama   36: Following tags are registered in the OpenXM.
1.2       takayama   37: \begin{verbatim}
                     38: #define CMO_ERROR2                         0x7f000002
                     39: #define CMO_NULL                           1
                     40: #define CMO_INT32                          2
                     41: #define CMO_DATUM                          3
                     42: #define CMO_STRING                         4
                     43: #define CMO_MATHCAP                        5
                     44: #define CMO_LIST                           17
1.4       noro       45:
1.2       takayama   46: #define CMO_MONOMIAL32                     19
                     47: #define CMO_ZZ                             20
                     48: #define CMO_QQ                             21
                     49: #define CMO_ZERO                           22
                     50: #define CMO_DMS_GENERIC                    24
                     51: #define CMO_DMS_OF_N_VARIABLES             25
                     52: #define CMO_RING_BY_NAME                   26
                     53: #define CMO_RECURSIVE_POLYNOMIAL           27
                     54: #define CMO_LIST_R                         28
                     55: #define CMO_INT32COEFF                     30
                     56: #define CMO_DISTRIBUTED_POLYNOMIAL         31
                     57: #define CMO_POLYNOMIAL_IN_ONE_VARIABLE     33
                     58: #define CMO_RATIONAL                       34
                     59: #define CMO_64BIT_MACHINE_DOUBLE           40
                     60: #define CMO_ARRAY_OF_64BIT_MACHINE_DOUBLE  41
                     61: #define CMO_BIGFLOAT                       50
                     62: #define CMO_IEEE_DOUBLE_FLOAT              51
                     63: #define CMO_INDETERMINATE                  60
                     64: #define CMO_TREE                           61
                     65: #define CMO_LAMBDA                         62
                     66: \end{verbatim}
1.7       takayama   67: The first seven primitive types should be implemented
                     68: on all OpenXM compliant systems.
                     69: The formats are as follows. \\
1.2       takayama   70: \begin{tabular}{|c|c|}
                     71: \hline
1.5       ohara      72: {\sl int32} {\tt CMO\_ERROR2} & {\sl CMObject} {\rm ob} \\
1.2       takayama   73: \hline
                     74: \end{tabular} \\
                     75: \begin{tabular}{|c|c|}
                     76: \hline
1.5       ohara      77: {\sl int32} {\tt CMO\_NULL}  \\
1.2       takayama   78: \hline
                     79: \end{tabular} \\
                     80: \begin{tabular}{|c|c|}
                     81: \hline
1.5       ohara      82: {\sl int32} {\tt CMO\_INT32}& {\sl int32} {\rm n}  \\
1.2       takayama   83: \hline
                     84: \end{tabular} \\
                     85: \begin{tabular}{|c|c|c|}
                     86: \hline
1.5       ohara      87: {\sl int32} {\tt CMO\_DATUM}& {\sl int32} {\rm n} & {\sl byte} {\rm  data[0]} \\
1.2       takayama   88: \hline
1.5       ohara      89: $\cdots$ & {\sl byte} {\rm  data[n-1]} \\
1.2       takayama   90: \cline{1-2}
                     91: \end{tabular} \\
                     92: \begin{tabular}{|c|c|c|}
                     93: \hline
1.5       ohara      94: {\sl int32} {\tt CMO\_STRING}& {\sl int32} {\rm n} & {\sl byte} {\rm data[0]} \\
1.2       takayama   95: \hline
1.5       ohara      96: $\cdots$ & {\sl byte} {\rm data[n-1]} \\
1.2       takayama   97: \cline{1-2}
                     98: \end{tabular} \\
                     99: \begin{tabular}{|c|c|}
                    100: \hline
1.5       ohara     101: {\sl int32} {\tt CMO\_MATHCAP} & {\sl CMObject} {\rm ob} \\
1.2       takayama  102: \hline
                    103: \end{tabular} \\
                    104: \begin{tabular}{|c|c|c|}
                    105: \hline
1.5       ohara     106: {\sl int32} {\tt CMO\_LIST}& {\sl int32} {\rm n} & {\sl CMObject} {\rm ob[0]} \\
1.2       takayama  107: \hline
1.5       ohara     108: $\cdots$ & {\sl CMObject} {\rm ob[n-1]} \\
1.2       takayama  109: \cline{1-2}
                    110: \end{tabular} \\
1.8       takayama  111:
                    112: As to the formats of other CMO's, see \cite{noro-takayama}.
1.2       takayama  113:
1.7       takayama  114: When one wants to implement CMO on a server, the person proceeds
1.2       takayama  115: as follows.
                    116: \begin{enumerate}
1.9     ! takayama  117: \item Look for the list of CMO's at the web cite \cite{openxm-web}.
1.7       takayama  118: If there is a CMO that fits to one's requirement, then use this CMO.
1.2       takayama  119: \item If there is no suitable CMO, design a new CMO and register
                    120: the new CMO to \cite{openxm-web} with a description and examples.
                    121: \end{enumerate}

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>