
いま、列A、列B、列Cに、データがある。
列とデータの完全な重複は許可しない(私は、実際の仕事でも、5年前から、データ量の増加への物理的対応よりも、データの「質」を重視した抑制型XMLという方針でアプリケーションを設計してきている。これは別途どこかに書くつもりだ)。
データの重複のみは許可する(そうしなければ、例えば双生児の遺伝子の存在を否定することになってしまうからである)。
RDBと異なり、列A、列B、列Cを別テーブルとして存在させた場合でも、リレーションシップはない。
また、XMLと異なり、列A、列B、列Cに、親子関係や兄弟関係はない。Para-XMLは、単一レコードのセットというデータモデルで表現される【図1】。
これらのデータを記録して保存する処理では、A、B、Cが、各々、独立したノードセットとして扱われる。A、B、Cは、別個のファイルとして保存される【図2(左)】。
A、B、Cは、ただ、データとして、存在する。
活用に際して初めて、それらの関係の定義ファイルを、アプリケーション側で作成する【図2(右)】。
定義ファイルにより、A、B、Cは【図3(左)】のような関係を持ってもかまわないし、主従の関係は流動的であり、物理的に異なるサーバに存在してもかまわない【図3(右)】。
定義ファイルにより、例えば、【図4】のような関係を定義するとする。

定義ファイルに基づき、アプリケーションが処理を開始されて初めて、【図5】のように、ノードのリレーションシップが構築される。
まず、関係を定義されるノードセットの最大ノード数の仮想多角形が構築される。
これに最初のルートノード「A」が割り当てられる。
次に、関係を定義されるノードセットの構造により、最初のルートノード「A」が移動する(すべる)。
そして、関係を持つノード同士ノードが結合する。
そうなると、「A」のData3と「C」のDeta1が重なってしまうように見える。それは図5が、3次元にマッピングした形で表現しているからである。そのため、"N-Dimensions"という見方が必要になってくる。
もし、「A」のData3と「C」のルートノードが結合する構造が定義された場合は、パーサは、多角形の内側から走査を行う。各ノードへの到達時間は、同じである。文頭から末尾へと走査するためにXMLの処理には時間がかかるのであって、全てのノードに対して同じ距離からアクセスすれば、走査に時間はかからない。それが真のXMLデータの並列処理かもしれない。
定義ファイルのエレメントとしては、dislocation(転位~screw dislocation~)、bond(結合)、hybridization(混成)、glide(すべり)、splitting(分裂)、プロパティとして、mobility(移動度)、shear(ズレ)、tensile(引張り)等が考えられるかもしれない。(2006-11-24)