version 1.3, 2000/01/24 02:48:24 |
version 1.7, 2000/09/09 21:59:13 |
|
|
%% $OpenXM: OpenXM/doc/OpenXM-specs/formal-expression.tex,v 1.2 2000/01/23 05:28:33 noro Exp $ |
%% $OpenXM: OpenXM/doc/OpenXM-specs/formal-expression.tex,v 1.6 2000/09/09 16:32:26 takayama Exp $ |
//&jp \section{ CMO ¤Î·Á¼°ÅªÉ½¸½ÊýË¡ } |
//&jp \section{ CMO ¤Î·Á¼°ÅªÉ½¸½ÊýË¡ } |
//&eg \section{ A formal expression of CMO } |
//&eg \section{ A formal expression of CMO } |
|
|
|
|
In this section, we will introduce CMOexpression which is like the |
In this section, we will introduce CMOexpression which is like the |
bracket expression of Lisp. |
bracket expression of Lisp. |
We again explain a standard encoding method of CMO, |
We again explain a standard encoding method of CMO, |
which we have already explained in the previous section. |
which we have already explained in the previous section, but |
|
the explanation is more formal. |
*/ |
*/ |
|
|
/*&jp |
/*&jp |
Line 227 CMOexpression ¤È, CMObject ¤Î¶èÊ̤òÍý²ò¤·¤Æ¤ª¤¯¤Î¤Ï½ÅÍ |
|
Line 228 CMOexpression ¤È, CMObject ¤Î¶èÊ̤òÍý²ò¤·¤Æ¤ª¤¯¤Î¤Ï½ÅÍ |
|
¤³¤ì¤Ï, ʸˡŪ¤Ë¤ÏÀµ¤·¤¤¥×¥í¥°¥é¥à¤À¤¬, ¤Ê¤Ë¤ò¤ä¤ë¤Î¤«¤ÏÁ´¤¯ÉÔÌÀ¤Ê |
¤³¤ì¤Ï, ʸˡŪ¤Ë¤ÏÀµ¤·¤¤¥×¥í¥°¥é¥à¤À¤¬, ¤Ê¤Ë¤ò¤ä¤ë¤Î¤«¤ÏÁ´¤¯ÉÔÌÀ¤Ê |
¥×¥í¥°¥é¥à¤È»÷¤Æ¤¤¤ë. |
¥×¥í¥°¥é¥à¤È»÷¤Æ¤¤¤ë. |
|
|
|
*/ |
|
|
|
/*&jp |
¤µ¤Æ, Open math É÷ (\cite{openmath}) |
¤µ¤Æ, Open math É÷ (\cite{openmath}) |
¤Î SGML ɽ¸½Ë¡¤â²Äǽ¤Ç¤¢¤ê, ¤½¤Î¾ì¹ç¤Ï, ¾å¤ÎÆó¤Ä¤ÎÎã¤Ï¼¡¤Î¤è¤¦¤Ë |
¤Î XML ɽ¸½Ë¡¤â²Äǽ¤Ç¤¢¤ê, ¤½¤Î¾ì¹ç¤Ï, ¾å¤ÎÆó¤Ä¤ÎÎã¤Ï¼¡¤Î¤è¤¦¤Ë |
½ñ¤¯. |
½ñ¤¯. |
|
*/ |
|
/*&eg |
|
CMO's are expressed by XML like Open Math (\cite{openmath}). |
|
See example below. |
|
*/ |
|
|
|
/*&C |
|
|
\begin{verbatim} |
\begin{verbatim} |
<CMO_INT32> |
<cmo> |
1234 |
<cmo_int32> |
</CMO_INT32> |
<int32> 1234 </int32> |
|
</cmo_int32> |
|
|
<CMO_STRING> |
<cmo_string> |
5 |
<int32 for="length"> 5 </int32> |
"Hello" |
<string> "Hello" </string> |
</CMO_STRING> |
</cmo_string> |
|
</cmo> |
\end{verbatim} |
\end{verbatim} |
*/ |
*/ |
|
|
|
//&jp \noindent cmo\_string ¤Ï¼¡¤Î¤è¤¦¤Ë¤¢¤é¤ï¤·¤Æ¤â¤è¤¤. |
|
//&eg \noindent cmo\_string may be expressed as follows. |
/*&C |
/*&C |
|
\begin{verbatim} |
|
|
|
<cmo> |
|
<cmo_string> |
|
<int32 for="length"> 5 </int32> |
|
<byte> 'H' </byte> <byte> 'e' </byte> <byte> 'l' </byte> |
|
<byte> 'l' </byte> <byte> 'o' </byte> |
|
</cmo_string> |
|
</cmo> |
|
\end{verbatim} |
*/ |
*/ |
|
|
|
//&jp \noindent ¤³¤Î¾ì¹ç¤Î cmo\_string ¤Î DTD ¤Ë¤è¤ëÄêµÁ¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ë. \\ |
|
//&eg \noindent In this case, the DTD for cmo\_string is as follows; \\ |
|
//&C \verb+ <!ELEMENT cmo_string (int32, byte*)> + |
|
/*&C |
|
|
|
\bigbreak |
|
*/ |
|
|
/*&jp |
/*&jp |
¼¡¤Ë, ɸ½à encoding Ë¡¤òÀâÌÀ¤·¤è¤¦. |
¼¡¤Ë, ɸ½à encoding Ë¡¤òÀâÌÀ¤·¤è¤¦. |
ɸ½à encoding Ë¡¤Ç¤Ï, cmo\_tag ¤ò ¥Í¥Ã¥È¥ï¡¼¥¯¥Ð¥¤¥È¥ª¡¼¥À¡¼¤Î |
ɸ½à encoding Ë¡¤Ç¤Ï, cmo\_tag ¤ò ¥Í¥Ã¥È¥ï¡¼¥¯¥Ð¥¤¥È¥ª¡¼¥À¡¼¤Î |
Line 272 and byte data are encoded as it is. |
|
Line 305 and byte data are encoded as it is. |
|
100Mbps ¤ÎÄÌ¿®Ï©¤Ç 12Mbytes ¤Î {\tt CMO\_ZZ} ¤ÎžÁ÷¤Ç¤Ï |
100Mbps ¤ÎÄÌ¿®Ï©¤Ç 12Mbytes ¤Î {\tt CMO\_ZZ} ¤ÎžÁ÷¤Ç¤Ï |
Ìó 90\% ¤Î»þ´Ö¤¬ network byte order ¤Ø¤ÎÊÑ´¹¤Ë¤Ä¤¤¤ä¤µ¤ì¤Æ¤¤¤ë¤È¤¤¤¦ |
Ìó 90\% ¤Î»þ´Ö¤¬ network byte order ¤Ø¤ÎÊÑ´¹¤Ë¤Ä¤¤¤ä¤µ¤ì¤Æ¤¤¤ë¤È¤¤¤¦ |
¼Â¸³¥Ç¡¼¥¿¤â¤¢¤ë. |
¼Â¸³¥Ç¡¼¥¿¤â¤¢¤ë. |
¸úΨ¤ò½Å»ë¤·¤¿ encoding Ë¡¤Ë¤Ä¤¤¤Æ¤Ï¸å½Ò¤¹¤ë. |
¸úΨ¤ò½Å»ë¤·¤¿ encoding Ë¡¤Ë¤Ä¤¤¤Æ¤Ï¸å½Ò¤¹¤ë \ref{subsection:byteorder}. |
*/ |
*/ |
/*&eg |
/*&eg |
When we are using a high speed network, |
When we are using a high speed network, |
the translation from the internal expression of 32 bit integers to |
the translation from the internal expression of 32 bit integers to |
network byte order may become a bottle neck. |
network byte order may become a bottle neck. |
There are experimental data which presents that 90 percents of the transmission |
There are experimental data which presents that 90 percents of the transmission |
time are |
time are used |
for the translation to the network byte order to send {\tt CMO\_ZZ} of size |
for the translation to the network byte order to send {\tt CMO\_ZZ} of size |
12M bytes on a 100Mbps network. |
12M bytes. |
In a later section, we will discuss a protocol to avoid the translation. |
We used a 100Mbps network. |
|
In a later section \ref{subsection:byteorder}, |
|
we will discuss a protocol to avoid the translation. |
*/ |
*/ |
|
|
/*&C |
/*&C |
Line 323 is the encoding of the CMOexpression |
|
Line 358 is the encoding of the CMOexpression |
|
¤Î ɸ½à encoding Ë¡¤Ë¤è¤ëɽ¸½¤Ç¤¢¤ë. |
¤Î ɸ½à encoding Ë¡¤Ë¤è¤ëɽ¸½¤Ç¤¢¤ë. |
*/ |
*/ |
|
|
|
/*&C |
|
|
|
\bigbreak |
|
|
|
*/ |
|
|
|
/*&jp |
|
(¼Â¸³Åª) |
|
CMO ¤ª¤è¤Ó OX packets ¤Ï XML µ¬³Ê \cite{xml} ¤Ë½àµò¤·¤Æ¤¤¤ë. |
|
XML µ¬³Ê¤Î Attribute ¤ò binary encode ¤¹¤ë¤¿¤á¤Ë |
|
ÆÃÊ̤ʥ¿¥° \\ |
|
*/ |
|
/*&eg |
|
(Experimental) |
|
CMO and OX packets are complient to XML specification \cite{xml}. |
|
In order to encode ``Attribute'' in XML in our binary format, |
|
we have a tag: \\ |
|
*/ |
|
//&C \verb! #define CMO_ATTRIBUTE_LIST (LARGEID+3) ! \\ |
|
/*&jp |
|
¤òÍÑ°Õ¤·¤Æ¤¢¤ë. |
|
*/ |
|
/*&jp |
|
¤¿¤È¤¨¤Ð Attribute {\tt font="Times-Roman" } ¤Ï \\ |
|
*/ |
|
/*&eg |
|
For example, the attibute {\tt font="Times-Roman" } is encoded as \\ |
|
*/ |
|
/*&C |
|
\begin{verbatim} |
|
(CMO_ATTRIBUTE (CMO_LIST |
|
(CMO_LIST (CMO_STRING,"font") (CMO_STRING, "Times-Roman")))) |
|
\end{verbatim} |
|
*/ |
|
/*&jp |
|
¤È encoding ¤µ¤ì¤ë. |
|
*/ |
|
//&C |
|
/*&jp |
|
¤³¤ÎÆÃÊÌ¤Ê CMO tag {\tt CMO\_ATTRIBUTE\_LIST} °Ê³°¤Ï, |
|
XML ɽ¸½¤Ç¤Ï XML ¤Î¥¿¥°¤È¤·¤ÆÍý²ò¤µ¤ì¤ë. |
|
*/ |
|
/*&eg |
|
All tags except this special CMO tag {\tt CMO\_ATTRIBUTE\_LIST} |
|
are XML tags in the CMO/XML expression. |
|
*/ |
|
/*&jp |
|
CMO/XML ¤Ç {\it comment}, {\it for} ¤È̾Á°¤¬¤Ä¤¤¤¿ |
|
attributes ¤Ï CMO binary expression ¤Ë¤Ï¥¨¥ó¥³¡¼¥É¤µ¤ì¤Ê¤¤. |
|
*/ |
|
/*&eg |
|
CMO/XML attributes such as {\it comment}, {\it for} |
|
are not encoded in the CMO binary expression. |
|
*/ |