myGroup > myProject
 

Page for mappingSchema in general

English

mappingSchema とは?

mappingSchema は、データの構造とデコード・エンコードの処理の対応関係(マッピング) を規定する汎用的なスキーマ言語です。 このスキーマ言語とは、文書の集合を規定するための言語です。 たとえば、XML 文書のスキーマ言語のひとつとして RELAX NG が用いられています。

われわれは、RELAX NG を基に、テキスト形式やバイナリ形式の文書のためのスキーマ言語 UMS の規定を 進めています。 RELAX NG と UMS の仕様は、以下から入手することができます。

UMS とは?

UMS(Universal Mapping Schema)は、シーケンシャルデータデコード・エンコードの処理を規定する文法です。

プログラムは一般にデータを入出力します。 多くの場合データはシーケンシャルです。 入力ではデータを書式に従いデコードする必要があります。 出力ではデータを書式に従いエンコードする必要があります。 例えば、以下の図では 外側の箱がプログラムを、 内側の箱がシーケンシャルデータを示しています。 内側と外側の箱に挟まれた部分が、 デコード・エンコードの処理です。

シーケンシャルデータのデコードの例

シーケンシャルデータのエンコードの例

mapping definition とは?

mappingSchema の文法に従った記述を mapping definitionと呼んでいます。 mapping definitionは、XML で記述できます。 今のところ XML でしか記述できません。 mappingSchema の文法の全体はまだ明文化されていません。 文法のサブセット (umsCodeGenerator の処理系が処理できる範囲) は XML のスキーマ (RELAX NG) で記述され、処理系とともに配布されています。

mapping definitionシーケンシャルデータのスキーマ(書式の定義)と アプリケーションプログラムインターフェース を組み合わせたものです。 mapping definitionを どのように作り上げるかは、事例毎に選ぶことができます。 シーケンシャルデータのスキーマ を規定し、これを処理する プログラム を作るか、あるいは、逆に アプリケーションプログラムインターフェース に沿う形で シーケンシャルデータの書式を決めても構いません。 例えば二つのシステム間でデータをやり取りする場合には、まず、受け渡される シーケンシャルデータのスキーマを双方の合意の 下に規定し、次に、 アプリケーションプログラムインターフェース の部分を、別々に付与することで、それぞれの mapping definitionを得ることができます。

mapping definitionに従った デコード・エンコードの処理 プログラムを手作業で作ることができきます。 しかし、この手作業の手間を省きたい場合、あるいは、定義どおり間違えず処理を 作りこみたいのならば、umsCodegenerator のような mappingSchema の処理系に処理を任せる と良いでしょう。 mappingSchema の処理系には、幾つかのタイプが考えられます。 mapping definitionから ソースコードを生成するタイプのもの、あるいは mapping definitionを 動的に読み込む汎用なライブラリなどです。 ある mapping definition (デコード・エンコード) を実現するには多数の処理アルゴリズムが存在します。 将来、事例の特性に応じ使い分けられるようになると良いですね。

Required knowledge

Knowledge of XML and its name space is required for usage of mappingSchema since mappingSchema is a schema language described in XML (sorry, no description is available at this moment). mappingSchema shares philosophy and some definition with an XML schema language RELAX NG. Knowledge of RELAX NG is helpful to understand mappingSchema. Altough XML version of mappingSchema is very similar with that of RELAX NG, there is some difference (see difference).

How To

In troduction of software development with mappingSchema is found here (sorry in Japanese).

develop program with mappingSchema (sorry, in Japanese). Note: Mapping definition and tools used in this document is somewhat older than the recent implementation of umsCodeGenerator.

Development

is now on-going by myself (KM) and few members. To accelerate our development, any contribution or collaboration is welcome.

Mailing Lists

Please send mail Mailing List itself if you want to join.

  • Users ML: ums_users@plain.isas.jaxa.jp
  • Developpers ML: ums_devel@plain.isas.jaxa.jp

文法の設計ポリシー

  • ツールの実装を隠蔽せよ。実装が見えてしまう場合、 記述できていないパラメータが存在する。文法を再考せよ。 例えば、ツール固有な内部 API の存在を意識させてはいけない。
  • 極力自分たち (ums group) で考案しないこと。 可能なら要素の定義そのもの。 無理なら考え方を取り入れよ。
  • 可能な限り少ない要素で構成せよ。 利便性のための2次的なものは、 1次的な定義に帰着できるようにする。
  • 汎用なものを目指せ。文法がその分煩雑になって構わない。
  • Encode と decode の対称性に留意する。 XML - XML syntax はその実現を目指すが、 XML - language syntax はそもそも実現不能である。

(-KM-)

PDF版ドキュメントの制限事項

本ドキュメントは、Apache Forrestを利用して記述しています。 PDF版には以下の見苦しい点があります。ご了承下さい。

  • 箇条書きの記号が「?」に文字化けして表示されてしまいます。
  • 表中の文章の折り返しがずれることがあります。
  • 図が挿入されません。