next up previous contents
: CMO Primitive object : Design and Implementation of : 目次   目次

Introduction

OpenXM is a free, or Open Source, infrastructure for mathematical software systems. It provides methods and protocols for interactive distributed computation and for integrating mathematical software systems. OpenXM package is a set of software systems that support OpenXM protocols. It is currently a collection of software systems Risa/Asir [3], Kan/sm1 [7], PHC pack [8] , GNUPLOT, Mathematica interface, and OpenMath/XML [4] translator.

We have been profited from increasing number of mathematical software systems. These are usually ``expert'' systems in one area of mathematics such as ideals, groups, numbers, polytopes, and so on. They have their own interfaces and data formats, which are fine for intensive users of these systems. However, a unified system will be more convenient for users who want to explore a new area of mathematics with these software systems or users who need these systems only occasionally. It is also wonderful for developpers to have various software components that can be used from the target system.

OpenXM provides not only data representation and communication protocols but also programming guidelines to develop cooperative applications. One will be able to concentrate on developing mathematical algorithms with such guidelines. Our design goals are (1) simpleness, (2) extensibility, (3) easiness of implementation, (4) practicality, and (5) robustness.

We believe that an open integrated system is a future of mathematical software systems. However, it might be a dream without realizability. We want to build a prototype of such an open system by using existing standards, technologies and several mathematical software systems. We want to see how far we can go with this approach.

It is not an obvious problem to consider how mathematical objects are represented and communicated. It may be similar to trying to create new mathematical symbols. We have the decimal notation to represent numbers, the symbol $dx$ to represent a differential, and $ \longrightarrow $ to represent a mapping. One should imagine how we are benefited from these notations.

In OpenXM, communication is an exchange of messages. The messages are classified into three types: DATA, COMMAND, and SPECIAL. They are called OX (OpenXM) messages. Among the three types, OX data messages wrap mathematical data. We use standards of mathematical data formats such as OpenMath and MP as well as our own data format CMO (Common Mathematical Object format). Servers, which provide services to other processes, are stack machines. The stack machine is called the OX stack machine. Existing mathematical software systems are wrapped with this stack machine. OX stack machines work in the asynchronous mode like X servers. OpenXM servers try to be as quiet as possible. OpenXM server does not send messages to the client unless it is requested to send them.

Our stackmachine architecutre can be used as the lowest level layer to implement other protocols. Emulating RPC or constructing a web server like MCP [9] on our asynchronous OX stack machines are possible.

Our datatype definition is compliant to XML architecture. OX messages can be defined by DTD and can be expressed by XML. We call it OpenXM/XML.

A system xxx complient to the OpenXM protocol is called open xxx. For example Asir complient to the OpenXM protocol is called open Asir, and kan/sm1 complient to the OpenXM protocol is called open sm1.


next up previous contents
: CMO Primitive object : Design and Implementation of : 目次   目次
Nobuki Takayama 平成15年5月13日