(57)【特許請求の範囲】
【請求項１】
順序木のノードを表す識別子と、１つの親ノードに相当する識別子と１以上の子ノードに相当する識別子の集合とを結合する第１の演算子と、複数の兄弟ノードを結合する第２の演算子とを用いて記述される対象情報について、少なくとも一部のノードに関する変更前に係る前記対象情報と、変更後に係る前記対象情報とを記憶する記憶部と、
前記記憶部の前記対象情報を読み出して処理する処理部と、
を備え、
前記処理部は、
前記記憶部から前記変更前に係る対象情報と前記変更後に係る対象情報とを読み出すと共に、当該対象情報に含まれる識別子に、木構造におけるルートノードからの階層の深さと兄弟ノード内における順位とを用いて表される位置情報を付し、
前記変更前に係る対象情報と前記変更後に係る対象情報とについて、対応する位置情報が付された識別子を比較して変更の有無を判断し、
変更があると判断された識別子を出力し、
前記順序木は、
ノードを追加する場合、兄弟ノードの最後方に追加され、
ノードを削除する場合、空を示す記号に置き換えられる
情報処理装置。
【請求項２】
前記対象情報は、前記識別子に対応付けられた数値をさらに含み、
前記処理部は、前記変更前に係る対象情報と前記変更後に係る対象情報とについて、当該数値についても変更の有無を判断し、
変更があると判断された数値を出力する
請求項１に記載の情報処理装置。
【請求項３】
前記対象情報は、前記識別子に対応付けられた数値を複数含み、
前記処理部は、
当該複数の数値を用いて算術演算をさらに実行し、
算術演算の結果を出力する
請求項２に記載の情報処理装置。
【請求項４】
前記対象情報は、前記記憶部において、前記識別子をキーとし、当該識別子に係るノードを含むルートノードからリーフノードまでの部分木を示す情報をバリューとして、キーバリュー形式で記憶される
請求項１から３のいずれか一項に記載の情報処理装置。
【請求項５】
順序木のノードを表す識別子と、１つの親ノードに相当する識別子と１以上の子ノードに相当する識別子の集合とを結合する第１の演算子と、複数の兄弟ノードを結合する第２の演算子とを用いて記述される対象情報について、少なくとも一部のノードに関する変更前に係る前記対象情報と、変更後に係る前記対象情報とを記憶する記憶部と、
前記記憶部の前記対象情報を読み出して処理する処理部と、
を備える情報処理装置が実行する情報処理方法であって、
前記処理部が、
前記記憶部から前記変更前に係る対象情報と前記変更後に係る対象情報とを読み出すと共に、当該対象情報に含まれる識別子に、木構造におけるルートノードからの階層の深さと兄弟ノード内における順位とを用いて表される位置情報を付し、
前記変更前に係る対象情報と前記変更後に係る対象情報とについて、対応する位置情報が付された識別子を比較して変更の有無を判断し、
変更があると判断された識別子を出力し、
前記順序木は、
ノードを追加する場合、兄弟ノードの最後方に追加され、
ノードを削除する場合、空を示す記号に置き換えられる
情報処理方法。
【請求項６】
順序木のノードを表す識別子と、１つの親ノードに相当する識別子と１以上の子ノードに相当する識別子の集合とを結合する第１の演算子と、複数の兄弟ノードを結合する第２の演算子とを用いて記述される対象情報について、少なくとも一部のノードに関する変更前に係る前記対象情報と、変更後に係る前記対象情報とを記憶する記憶部と、
前記記憶部の前記対象情報を読み出して処理する処理部と、
を備えるコンピュータに実行させるプログラムであって、
前記処理部に、
前記記憶部から前記変更前に係る対象情報と前記変更後に係る対象情報とを読み出すと共に、当該対象情報に含まれる識別子に、木構造におけるルートノードからの階層の深さと兄弟ノード内における順位とを用いて表される位置情報を付すステップと、
前記変更前に係る対象情報と前記変更後に係る対象情報とについて、対応する位置情報が付された識別子を比較して変更の有無を判断するステップと、
変更があると判断された識別子を出力するステップと、
を実行させ、
前記順序木は、
ノードを追加する場合、兄弟ノードの最後方に追加され、
ノードを削除する場合、空を示す記号に置き換えられる
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
従来、コンピュータが取り扱うデータ構造としては、例えば、リレーショナルデータベースの表形式の構造、オブジェクト指向データベースのオブジェクト、知識データベースのフレームあるいはルール等が知られている。
【０００３】
しかし、従来、提案されていたデータベースは、定義済みのデータ構造に、新たな構造を追加することができないという、変更に対する柔軟性の点で問題があった。例えば、リレーショナルデータベースの運用を開始後、１つの表に新たな属性を追加する場合には、既存のデータ構造と、データ構造を処理するアプリケーションプログラムの改造とが伴い、改造の工数は、コンピュータの利用者、管理者、あるいはアプリケーションプログラムの開発者には負担であった。また、従来のリレーショナルデータベースでは、情報を階層的に記述すること、例えば、１つの表の１つの属性中に、さらに表を定義することはできなかった。一方、オブジェクト指向のデータベース、あるいは、フレームでは、オブジェクト間の関係、あるいはフレーム間の関係にいわゆる親子関係を定義できるが、逆に、属性と属性値との関係を単純に処理したいという要請には不向きである場合があった。
【０００４】
そこで、本出願人は、利用者が取り扱う事物、組織、人などに関する情報、あるいは利用者が取り扱う概念などを情報処理装置が取り扱うために、情報を記述する新たなデータ構造と、そのデータ構造で記憶された情報を処理する手順とを提案した（特許文献１から４参照）。この提案では、情報を式表現、例えば、識別子と識別子の和、識別子と識別子の積、識別子と識別子の積の和などで表現する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第５１１３７７９号公報
【特許文献２】特許第５３５７２８６号公報
【特許文献３】特許第５３５７３１３号公報
【特許文献４】特許第５７６４２２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、データの変更内容に係る履歴を抽出できると便利な場面がある。本発明は、上述した式表現で表される対象情報の変遷に係る２世代以上にわたって保持している場合に、変更前後に係る差分を抽出する技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る情報処理装置は、順序木のノードを表す識別子と、１つの親ノードに相当する識別子と１以上の子ノードに相当する識別子の集合とを結合する第１の演算子と、複数の兄弟ノードを結合する第２の演算子とを用いて記述される対象情報について、少なくとも一部のノードに関する変更前に係る対象情報と、変更後に係る対象情報とを記憶する記憶部と、記憶部の対象情報を読み出して処理する処理部とを備える。そして、処理部は、記憶部から変更前に係る対象情報と変更後に係る対象情報とを読み出すと共に、当該対象情報に含まれる識別子に、木構造におけるルートノードからの階層の深さと兄弟ノード内における順位とを用いて表される位置情報を付し、変更前に係る対象情報と変更後に係
る対象情
報とについて、対応する位置情報が付された識別子を比較して変更の有無を判断し、変更があると判断された識別子を出力する。
【０００８】
このようにすれば、位置情報を基準として変更前後に係る対象情報を比較し、差分を抽出することができるようになる。
【０００９】
また、対象情報は、識別子に対応付けられた数値をさらに含み、処理部は、変更前に係る対象情報と変更後に係る対象情報とについて、当該数値についても変更の有無を判断し、変更があると判断された数値を出力するようにしてもよい。このようにすれば、例えばツリー構造で表された部品表や見積もり書について、数値の変更についても抽出することができる。
【００１０】
また、対象情報は、識別子に対応付けられた数値を複数含み、処理部は当該複数の数値を用いて算術演算をさらに実行するようにしてもよい。このようにすれば、例えば部品表や見積書について、数値の集計ができるようになる。また、例えば、数値の変更前後における合計金額の違いを求めることもできるようになる。
【００１１】
また、順序木は、ノードの追加する場合、兄弟ノードの最後方に追加され、ノードを削除する場合、空を示す記号に置き換えられるものであってもよい。このようにすれば、変更の前後において上述した位置情報が変わらないため、識別子の変更の有無が判断できる。
【００１２】
また、対象情報は、記憶部において、識別子をキーとし、当該識別子に係るノードを含むルートノードからリーフノードまでの部分木を示す情報をバリューとして、キーバリュー形式で記憶されるようにしてもよい。このようにすれば、前記処理部が前記記憶部へアクセスする際に、適切なキーを選択することで読み出しにかかる時間を低減させることができる。
【００１３】
上記課題を解決するための手段の内容は、本発明の課題や技術的思想を逸脱しない範囲で可能な限り組み合わせることができる。また、上記手段を情報処理装置が実行する方法や、コンピュータに実行させるプログラムを提供するようにしてもよい。また、プログラムは、コンピュータが読み取り可能な記録媒体に記録して提供するようにしてもよい。コンピュータが読み取り可能な記録媒体とは、情報を電気的、磁気的、光学的、機械的、又は化学的作用によって蓄積し、コンピュータによって読み取ることができる記録媒体をいう。このような記録媒体のうち、コンピュータから取り外し可能なものとしては、例えば光ディスク、光磁気ディスク、フレキシブルディスク、磁気テープ、メモリカード等がある。また、コンピュータに固定された記録媒体としてＨＤＤ（Hard Disk Drive）、ＳＳ
Ｄ（Solid State Drive）、ＲＯＭ（Read Only Memory）等がある。
【発明の効果】
【００１４】
式表現で表される対象情報を変更前後に係る２世代以上にわたって保持している場合に、変更前後に係る差分を抽出することができる。
【図面の簡単な説明】
【００１５】
【図１】式表現を説明するための図である。
【図２】セル空間情報の第一のデータ構造例を示す図である。
【図３】セル空間情報の第二のデータ構造例を示す図である。
【図４】第三のデータ構造例を示す図である。
【図５】模式的な位置表現式を格納した表を例示する図である。
【図６Ａ】ツリー構造で表現された乗用車の模式的なＢＯＭの一例を示す図である。
【図６Ｂ】模式的なＢＯＭの１つの部品を詳細化した例を示す図である。
【図６Ｃ】模式的なＢＯＭの部品を変更、削除及び追加した例を示す図である。
【図７Ａ】ツリー構造のノードとして表された因子の各々に絶対位置情報を付した図である。
【図７Ｂ】ツリー構造のノードとして表された因子の各々に絶対位置情報を付した図である。
【図７Ｃ】ツリー構造のノードとして表された因子の各々に絶対位置情報を付した図である。
【図８】情報処理装置の構成を例示すブロック図である。
【図９】変更履歴出力処理の一例を示す処理フロー図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明を実施するための形態（「実施形態」とも呼ぶ）に係る情報処理装置について説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成には限定されない。
【００１７】
本実施形態では、事物、組織、人などに関する情報を情報処理装置が取り扱う。これらの情報を本実施形態に係る情報処理装置が処理可能な形式で表現したものを、「対象情報」と呼ぶ。以下、対象情報を記述するためのデータ構造、及び当該データ構造で記述された対象情報を処理する手順を示す。
【００１８】
（データ構造）
データ構造とは、対象情報を記述するための構造をいう。なお、対象情報は、プロセッサと記憶装置とを備える情報処理装置によって、生成、記憶、読み出し、更新（「演算」とも呼ぶ）、削除等される。
【００１９】
（１）対象情報の構成要素
情報処理装置は、対象情報を式の形式で保持する。本実施形態に係る式を用いた表現方法は、従来出願人が提案した式表現の定義を拡張するものであり、当該表現方法を、「拡張式表現」とも呼ぶ。図１は、式の一例を示す図である。式は、構成要素の最小単位である識別子（基本要素とも呼ぶ）を１つ以上含む。本実施形態に係る識別子は、データを一意に特定できる情報とは限らない。さらに、式は、所定の記号を用いて記述される。所定の記号には、演算子と区切記号とが用いられる。具体的には、和演算子“＋”、積演算子“×（図１のように省略してもよい）”、第１の括弧（丸括弧）“（”及び“）”、第２の括弧（波括弧）“｛”及び“｝”、並びに第３の括弧（角括弧，ブラケット）“［”及び“］”が用いられる。なお、便宜上、演算子や約物（例えば括弧）を用いているが、他の記号を用いてもよい。例えば、和演算子“＋”の代わりに“，”（カンマ）を、積演算子“×”の代わりに“＿”（アンダーバー）を用いるようにしてもよい。上述した演算子や約物は、他の識別子と区別できる所定の記号であればよく、例えばエスケープシーケンスや、マークアップ言語におけるタグ等であってもよい。なお、積演算子は、本発明に係る「第１の演算子」に相当し、和演算子は、本発明に係る「第２の演算子」に相当する。
【００２０】
また、識別子は、対象情報を構成する最小単位であり、記号によって表現される。記号とは、英数字等の文字列及び特殊文字（ただし、和演算子“＋”、積演算子“×”、第１の括弧“（”及び“）”、第２の括弧“｛”及び“｝”、並びに第３の括弧“［”及び“］”を除く）をいうものとする。
【００２１】
本実施形態では、特殊文字として、“Φ（φ）”および“ε”を用いる。Φは、値ゼロ、和演算子において演算結果を変化させない値、または空集合を示す識別子である。本実
施形態では、Φを「零元」とも呼ぶ。また、εは、値１、または積演算子において演算結果を変化させない値である。本実施形態では、εを「単位元」と呼ぶ。なお、Φを和演算の単位元と呼ぶ場合もあるが、本実施形態では、Φを零元と呼ぶことにする。
【００２２】
また、図１に示すように、識別子及び所定の記号によって記述される部分（全体であってもよい）を「因子」と呼ぶ。そして、因子の積によって記述される部分を「項」と呼ぶ。さらに、項の和によって記述される部分が式である。換言すれば、式は和演算子で接続された１以上の項を含む。また、項は、積演算子で接続された１以上の因子を含む。さらに、因子は、入れ子状に式として記述されることもある。なお、図１の「ａ」、「ｂ１」、「ｃ１」等が識別子であり、対象情報を構成する最小単位にあたる。
【００２３】
本実施形態では、以下の規則（ａ）〜（ｄ）に基づいて、対象情報を表現する式が生成される。
（ａ）識別子、単位元及び零元はいずれも式（式表現）である。
（ｂ）ｒとｓとが共に式である場合、ｒ＋ｓも式である。
（ｃ）ｒとｓとが共に式である場合、ｒ×ｓも式である。このとき、演算の結合の強さは、一般的な代数と同様に、ｒ×ｓの方が、ｒ＋ｓよりも強い。
（ｄ）ｒが式である場合、（ｒ）、｛ｒ｝、［ｒ］も式である。
なお、第３の括弧“［”及び“］”で括られた内容は、例外的に式として解釈せず、ひとつの識別子として扱う。すなわち、第３の括弧内に和演算子や積演算子で結合された識別子等が存在しても、一体の記号として扱う。第３の括弧“［”及び“］”は、式を非構造化するともいうものとする。従来の式表現に、第３の括弧に係る定義を追加した表現方法を、本実施形態では、便宜上「拡張式表現」と呼ぶ。
【００２４】
（２）拡張式表現の代数的構造
本実施形態において、式ｒ、ｓ、ｔは、次の代数の性質（ａ）〜（ｆ）を有する。
（ａ）  結合律
ｒ＋（ｓ＋ｔ）＝（ｒ＋ｓ）＋ｔ；
ｒ×（ｓ×ｔ）＝（ｒ×ｓ）×ｔ；
（ｂ）  可換律
ｒ＋ｓ＝ｓ＋ｒ；
なお、拡張式表現において、積演算子の可換律は成立しない。したがって、積演算子で複数の因子が結合されている場合に、個々の因子位置が情報（あるいは意味）を持つ。すなわち、因子は、いわゆる位置を指定してされた位置パラメータとしての機能を有する。「積演算子の可換律は成立しない」ことは、本発明の積演算子が「順序を持つ因子の列として複数の識別子を結合する」ことに相当する。
（ｃ）  積演算の単位元
ｒ×ε＝ε×ｒ＝ｒ；
（ｄ）積演算、和演算の零元
ｒ×Φ＝Φ×ｒ＝Φ；
ｒ＋Φ＝ｒ；
（ｅ）  分配率
ｒ×（ｓ＋ｔ）＝ｒ×ｓ＋ｒ×ｔ；
（ｒ＋ｓ）×ｔ＝ｒ×ｔ＋ｓ×ｔ；
（ｆ）  ｛ｒ＋ｓ｝×｛ｔ＋ｕ｝＝｛ｒ×ｔ＋ｓ×ｕ｝；
【００２５】
また、式で表現された対象情報は、抽象度の異なる複数のレベルで表現することができる。例えばプロセッサが本発明に係る所定のプログラムを実行することにより、対象情報の表現のレベルを変更することができる。複数のレベルは、例えば、対象情報の抽象度が最も高く表現される集合レベルと、集合レベルよりも対象情報の抽象度が低く、対象情報
が部分集合を要素として表現されるトポロジー空間レベルと、トポロジー空間レベルよりも対象情報の抽象度が低く、トポロジー空間レベルにおける対象情報同士が接着される接着空間レベルと、接着空間レベルよりも対象情報の抽象度が低く、トポロジー空間における対象情報が所定の属性をもって表現されるセル空間レベルとを含む。
【００２６】
（３）集合情報
集合情報は、項の組み合わせ、又は項の和として定義される。ここで、それぞれの項は集合ＩＤとなる識別子と値となる識別子の積、すなわち、集合ＩＤ×値として定義される。ただし、値は、複数の識別子の積であってもよい。集合の情報の式は、典型的には次のようになる。
（例）
集合ＩＤ×値１＋集合ＩＤ×値２＋・・・
【００２７】
上述のように、本実施形態のデータ構造では、和演算子に可換律が成立することから、集合情報は、順序のない項の組み合わせということができる。一方、項を構成する因子間の位置関係は維持されることになる。図１に示した例では、例えば、項１及び項２に含まれる因子１が集合ＩＤに相当する。
【００２８】
このような因子間の位置関係の維持機能は、コンピュータ上で事物、あるいは概念を表現する場合に、極めて大きな効果を発揮する。一般的に、事物、あるいは概念を記述する修飾関係には、可換律が成立しない。例えば、「児玉の机」は、「机の児玉」と意味が異なる。本実施形態の因子と積演算子によれば、このような修飾関係を単純化して、記述することができる。さらに、そのような修飾関係で記述された項を和演算子によって組み合わせることで、事物の集合、あるいは概念の集合を記述し、単純な形式のデータベースを構築できる。さらに、管理対象の事物あるいは概念を項の集合として管理する場合に、項における因子の位置関係に意味を付与することもできる。
【００２９】
また、項を構成する因子は、それぞれ、いわゆる位置パラメータとしての意義を有するということもできる。例えば、下記のような集合情報を考える。
（例）
果物×任意形状×任意色×バナナ＋果物×任意形状×任意色×りんご＋果物×細長×黄色×バナナ＋果物×丸×赤×リンゴ
この場合、各項の第１因子は、集合ＩＤである果物であり、第２因子は形状を示し、第３因子は色を示し、第４因子は名称を示す。このように、それぞれの因子の位置に意味上の制限を加えて使用することで、属性と属性値との関係を集合レベルでも処理できる。集合情報は、このような順序が維持された因子によって事物の属性を自在に定義することができる。
【００３０】
また、そのような因子を含む項の組み合わせによって、事物、人の集合など、あらゆる情報がコンピュータ上に表現される。
（例）
Ａ×ａ１＋Ａ×ａ２＋Ａ×ａ３、ｂ１×Ｂ＋ｂ２×Ｂ×Ｂ、果物×リンゴ＋果物×バナナ＋果物×ミカン、野菜×キャベツ＋野菜×キュウリ＋野菜×ゴボウ、社員×Ａ＋社員×Ｂ＋社員×Ｃ
すなわち、集合情報は、集合ＩＤで識別される集合に所属する項の組み合わせを記述する。上述の例において、社員Ｃが退職した場合、「社員×Ｃ」が和演算子とともに削除される。さらに、社員Ｄ及び社員Ｅが入社した場合には、「社員×Ｄ＋社員×Ｅ」がさらに和演算子で接続される。
【００３１】
（４）トポロジー空間情報
トポロジー空間情報は、トポロジーＩＤとなる識別子と部分集合の和との積によって記述される。すなわち、トポロジーＩＤ×（部分集合の和）である。ここで、部分集合は、部分集合を識別する部分集合ＩＤと、その部分集合に含まれる項の和との積で表現される。すなわち、部分集合ＩＤ×（項の和）である。ただし、項には、さらに項の和を第１の括弧“（）”、若しくは第２の括弧“｛｝”で組み合わせたもの、又はこれらの積が含まれてもよい。図１の例では、例えば、項２の因子２がトポロジーＩＤに相当する。また、項２の因子３に含まれる因子「１」、因子「２」が部分集合ＩＤに相当する。
【００３２】
トポロジー空間情報の例を以下に示す（下記の例で、読点“、”は、式の構成要素ではなく、例の区切りである）。
（例）
Ｔ×（ＡＢＣ×（ａｂ１＋ａｃ２＋ｂｃ３）＋Ａ×（ａｂ１＋ａｃ２）＋Ｂ×（ａｂ１＋ｂｃ３）＋Ｃ（ａｃ２＋ｂｃ３））、
果物×（全種×（リンゴ＋バナナ＋ミカン）＋赤×リンゴ＋黄×（バナナ＋ミカン））、果物×（全種×（リンゴ＋バナナ＋ミカン）＋丸×（リンゴ＋ミカン）＋細長×バナナ）、
野菜×（全種×（大根＋キュウリ＋ゴボウ）＋太×大根＋細×（キュウリ＋ゴボウ））、会社×（社員×（社員１＋社員２＋社員３＋社員４）＋営業×（社員１＋社員２）＋経理×（社員３＋社員４））、
この場合に、最後（５番目）の例について、例えば、総務が新設され、社員５が採用され、且つ総務に配属された場合には、次のように更新される。
（例）
会社×（社員×（社員１＋社員２＋社員３＋社員４＋社員５）＋営業×（社員１＋社員２）＋経理×（社員３＋社員４）＋総務×社員５）
【００３３】
（５）接着空間情報
接着空間情報は、トポロジー空間情報に含まれる２つの部分集合Ｘと部分集合Ｙに対して、それぞれの部分に含まれる部分集合を関係付けることで構成される。本実施形態では、この関係付けによって発生する関係を同値関係という。
【００３４】
ここで、トポロジー空間情報Ｔ（トポロジーＩＤは、Ｔｉｄ）およびトポロジー空間情報Ｕ（トポロジーＩＤは、Ｕｉｄ）が、トポロジー空間情報Ｔｉｄ×（Ｔに属する部分集合の和）＋トポロジー空間情報Ｕｉｄ×（Ｕに属する部分集合の和）として記憶されているとする。また、Ｔに属する部分集合の和＝部分集合Ｔ０＋部分集合Ｔ−Ｔ０と２つの部分集合に分離できるとする。
【００３５】
この場合、トポロジー空間情報Ｔとトポロジー空間情報Ｕとを関連づけるトポロジー空間情報Ｔの因子ｐと、トポロジー空間情報Ｕの因子ｑが指定される。そして、トポロジー空間情報Ｔが、因子ｐを含む部分集合Ｔ０と、因子ｐを含まない部分集合Ｔ−Ｔ０に分離される。ここで、Ｔ−Ｔ０は、集合Ｔから集合Ｔ０を削除した差集合である。また、トポロジー空間情報Ｕが、因子ｑを含む部分集合Ｕ０と、因子ｑを含まない部分集合Ｕ−Ｕ０に分離される。ここで、Ｕ−Ｕ０は、集合Ｕから集合Ｕ０を削除した差集合である。
【００３６】
上記２つのトポロジー空間情報ＴとＵの和は次のように表現される。
（例）
トポロジー空間情報Ｔｉｄ×（部分集合Ｔ０）＋トポロジー空間情報Ｔｉｄ×（部分集合Ｔ−Ｔ０）＋トポロジー空間情報Ｕｉｄ×（部分集合Ｕ０）＋トポロジー空間情報Ｕｉｄ×（部分集合Ｕ−Ｕ０）
このように、集合から特定の因子ｐを含む部分集合を取り出した場合に、これを商と呼ぶ。また、その商を除く部分集合を剰余と呼ぶ。
【００３７】
さらに、部分集合Ｔ０＝Ｔ０ｉｄ×（Ｔ０の項の和）、部分集合Ｕ０＝Ｕ０ｉｄ×（Ｕ０の項の和）と記述されているとする。この場合に、部分集合Ｔ０と部分集合Ｕ０とを関係付けることによって、以下の接着空間情報を構成できる。すなわち、この場合の接着空間情報は、｛部分集合Ｔ０におけるｐの左因子＋部分集合Ｕ０におけるqの左因子｝｛p+q｝｛部分集合Ｔ０におけるｐの右因子＋部分集合Ｕ０におけるqの右因子｝＋トポロジー
空間情報Ｔｉｄ×（部分集合Ｔ−Ｔ０）＋トポロジー空間情報Ｕｉｄ×（部分集合Ｕ−Ｕ０）、である。
【００３８】
なお、ここでは、トポロジー空間レベルの情報を接着する場合を説明したが、トポロジー空間レベルの情報に、属性と属性値が定義されて構成されるセル空間レベルの情報、および、項の組み合わせである集合レベルの集合情報に対しても、接着空間情報が定義できる。また、トポロジー空間、セル空間、集合空間のうち、一のレベルの情報と、他のレベルの情報とについて接着空間情報を定義できる。
【００３９】
ここで、以下のような果物のトポロジー空間情報と、野菜のトポロジー空間情報の和が記憶されているものとする。
（例）
果物×（全種×（リンゴ＋バナナ＋ミカン）＋丸×（リンゴ＋ミカン）＋細長×バナナ）＋野菜×（全種×（大根＋キュウリ＋ゴボウ）＋太×大根＋細×（キュウリ＋ゴボウ））
【００４０】
ここで、果物のトポロジー空間情報の因子である細長と、野菜のトポロジー空間情報の部分集合である因子細との関連づけが指定され、同値関係にあるとする。この場合に、２つのトポロジー空間情報は、それぞれ次のように商と剰余とに分離される。すなわち、それぞれの集合情報が商と剰余に分離されたトポロジー空間情報は、果物×細長×バナナ＋果物×（全種×（リンゴ＋バナナ＋ミカン）＋丸×（リンゴ＋ミカン））＋野菜×細×（キュウリ＋ゴボウ）＋野菜×（全種×（大根＋キュウリ＋ゴボウ）＋太×大根）となる。
【００４１】
そして、同値関係が指定された細長と、野菜のトポロジー空間情報の部分集合である細とによって、接着空間情報が｛果物＋野菜｝×｛細長＋細｝｛バナナ＋（キュウリ＋ゴボウ）｝＋果物×（全種×（リンゴ＋バナナ＋ミカン）＋丸×（リンゴ＋ミカン））＋野菜×（全種×（大根＋キュウリ＋ゴボウ）＋太×大根）、のように構成される。
【００４２】
このようにして、接着空間情報は、２つのトポロジー空間情報の構造を維持した状態で、関係付けが指定された同値関係にある因子を基に結合されている。接着空間情報より、“細”と“細長”に同値関係が認められれば、右の因子“バナナ”と“（キュウリ＋ゴボウ）”を｛バナナ＋（キュウリ＋ゴボウ）｝として関連づけて出力できる。
【００４３】
また、 伝票ＩＤ１枚目（Ａ｛ε＋Ｂ＋Ｃ｛Ｃ１＋Ｃ２｝＋Ｄ＋Ｅ｛Ｅ１＋Ｅ２｝｝（
ａ｛ε＋ｂ＋ｃ｛ｃ１＋ｃ２｝＋ｄ＋ｅ｛ｅ１＋ｅ２｝｝＋位置（右上＋右下）））＋伝票ＩＤ２枚目（Ａ｛ε＋Ｂ＋Ｃ｛Ｃ１＋Ｃ２｝＋Ｄ＋Ｅ｛Ｅ１＋Ｅ２｝｝（ａ｛ε＋ｂ＋ｃ｛ｃ１＋ｃ２｝＋ｄ＋ｅ｛ｅ１＋ｅ２｝｝））＋MEMO（１（あいう）＋２（ABC））＋
・・・という伝票の束、およびメモＭＥＭＯを記述する情報が記憶されていた場合を考える。ここで、ＭＥＭＯを１枚目の伝票の右上に、位置を指定して張り付ける例を示す。
【００４４】
この例で、MEMOの１を１枚目の伝票の右上に張り付けるには、まず、ＭＥＭＯ情報の因子“１”、伝票１枚目の情報の因子“右上”でそれぞれ商空間が作成される。伝票ＩＤ１枚目（Ａ｛ε＋Ｂ＋Ｃ｛Ｃ１＋Ｃ２｝＋Ｄ＋Ｅ｛Ｅ１＋Ｅ２｝｝（ａ｛ε＋ｂ＋ｃ｛ｃ１＋ｃ２｝＋ｄ＋ｅ｛ｅ１＋ｅ２｝｝＋位置（右下）））＋伝票ＩＤ１枚目×位置（右上）＋伝票ＩＤ２枚目（Ａ｛ε＋Ｂ＋Ｃ｛Ｃ１＋Ｃ２｝＋Ｄ＋Ｅ｛Ｅ１＋Ｅ２｝｝（ａ｛ε＋
ｂ＋ｃ｛ｃ１＋ｃ２｝＋ｄ＋ｅ｛ｅ１＋ｅ２｝｝））＋MEMO（２（ABC））＋MEMO（１（
あいう））＋・・・
ここで、“１”と“右上”の関係付けを指定し接着すると、接着情報は、｛伝票ＩＤ１枚目×位置＋MEMO｝｛右上＋１｝｛ε＋（あいう）｝＋剰余の部分集合を含む情報、として構成される。このように、接着情報は、相互に構造上の共通性がない２つの対象情報について、それぞれの接着前の構造を維持した状態で、２つの対象情報結合し、記憶することができる。
【００４５】
（６）セル空間情報
セル空間情報は、事物、組織、人などに関する属性、あるいは人が取り扱う概念の属性と、その属性に対応する属性値とを有する情報である。属性は、キー属性とその他の属性とに分かれる。キー属性は属性値によって情報が識別できる属性であり、データベースの検索においてキーとして使用できる値に対応する。セル空間情報では、属性値（または複数の属性値を結合した列）をインスタンスと呼ぶ。インスタンスは、従来のデータベースのテーブルに格納されるレコードに相当する。それぞれのインスタンスは、インスタンスＩＤと呼ぶ識別情報を有する。また、キー属性、あるいは、その他の属性が複数個ある場合には、キー属性、あるいは、その他の属性は、第２の括弧“｛”と“｝”とによって順序が維持された因子の形式で記述される。すなわち、いわゆるベクトル形式にて属性とその対応する属性値が記述される。
【００４６】
セル空間情報は、セル空間ＩＤと、キー属性の因子と、単位元およびキー属性以外の属性を有する因子と、インスタンスの集合を有する因子とを含む。セル空間情報は、セル空間ＩＤ×（キー属性×｛ε＋（その他の属性の和）｝×（（インスタンスＩＤ×｛ε＋（値の和）｝）の和））で構成される。
【００４７】
このキー属性の因子と単位元およびキー属性以外の属性を有する因子とが、本発明の属性因子に相当する。また、｛ε＋（その他の属性の和）｝の中のいずれかの属性が複数の識別子の積からなる場合に、そのような識別子の積からなる属性が、本発明の属性の順序列に相当する。また、そのような属性が、第２の括弧“｛｝”で括られた因子である場合に、その第２の括弧で括られた属性が、本発明の属性の順序因子に相当する。
【００４８】
また、そのような属性に対応して、インスタンスの｛ε＋（値の和）｝中の値が、識別子の積からなるときに、その値が、本発明の値列に相当する。また、値が、第２の括弧“｛｝”で括られた因子である場合に、その第２の括弧で括られた値が、本発明の値の順序因子に相当する。
【００４９】
セル空間情報の例は、以下のように示すことができる。
（例）
果物ｉｄ×（名前｛ε＋形＋色｝（リンゴ｛ε＋丸＋赤｝＋ミカン｛ε＋丸＋黄｝＋バナナ｛ε＋細長＋黄｝））＋野菜ｉｄ×（名前｛ε＋形状＋色｝（大根｛ε＋太＋白｝＋キュウリ｛ε＋細＋緑｝＋ゴボウ｛ε＋細＋茶｝））
この例では、従来のリレーショナルモデルで、果物テーブル、野菜テーブルとして記述されていたような情報を、式で記述する。なお、この例は、２つのセル空間情報（果物と野菜）を含むことから、統合セル空間情報とも呼ばれる。
【００５０】
この統合セル空間情報の処理例を示す。まず、果物のインスタンスのうち、属性“形”が“細長”の値を持つインスタンスとの部分集合（商という）と、その他のインスタンスの部分集合（剰余という）とを作成する。また、まず、野菜のインスタンスのうち、属性“形状”が“細”の値を持つインスタンス（商という）と、その他のインスタンス（剰余という）とに分離する。この場合、結合セル空間情報は、次のようになる。
果物ｉｄ×バナナ×形×細長＋野菜ｉｄ×形状×（キュウリ＋ゴボウ）細＋果物ｉｄ×（名前｛ε＋形＋色｝（リンゴ｛ε＋丸＋赤｝＋ミカン｛ε＋丸＋黄｝＋バナナ｛ε＋黄｝））＋野菜ｉｄ×（名前｛ε＋形状＋色｝（大根｛ε＋太＋白｝＋キュウリ｛ε＋緑｝＋ゴボウ｛ε＋茶｝））
次に、果物のうちの属性“形”が値“細長”を有する部分集合と、野菜のうちの属性“形状”が値“細”を有する部分集合との関係付けを指定し、同値関係を設定する。そして、この同値関係によって接着空間情報を作成すると、次のようになる。
｛果物ｉｄ×形×バナナ＋野菜ｉｄ×形状×（キュウリ＋ゴボウ）｝｛細長＋細｝｛ε＋ε｝＋果物ｉｄ×（名前｛ε＋形＋色｝（リンゴ｛ε＋丸＋赤｝＋ミカン｛ε＋丸＋黄｝＋バナナ｛ε＋黄｝））＋野菜ｉｄ×（名前｛ε＋形状＋色｝（大根｛ε＋太＋白｝＋キュウリ｛ε＋緑｝＋ゴボウ｛ε＋茶｝））
【００５１】
（記述例）以下、従来のデータ構造である表およびツリー構造が、本実施形態のデータ構造でどのように記述できるかを示す。
【００５２】
図２は、第１の実施形態に係るセル空間情報の第一のデータ構造例を示す。同図に示すように、第１の実施形態では、従来正規化表構造として表形式で表現される対象情報は、表現形式１の状態で記憶装置に格納することができる。表現形式１で、Ａは、キー属性（例えば社員番号等）、Ｂ、Ｃ、Ｄ、Ｅ等は、その他の属性（例えば、氏名、性別、入社年、所属部署等）である。
【００５３】
図３は、第１の実施形態に係るセル空間情報の第二のデータ構造例を示す。同図に示すように、第１の実施形態では、従来ツリー構造として表現される対象情報は、表現形式２または３で記憶装置に格納することができる。そして、同図に示すように有向グラフの一部としてのツリー構造について対応可能である。表現形式２で、ａは、例えば、動物、ｂはほ乳類、ｃは魚類、ｄは人、ｅは鯨、ｆはマグロ、ｇは鯉等である。この場合、ｂ（ほ乳類）およびｃ（魚類）は、ａ（動物）の属性、例えば、食する、呼吸する等を継承する。ｂ（ほ乳類）およびｃ（魚類）の共通の属性は、ａ（動物）に定義される。
【００５４】
したがって、式によって、フレーム等の知識ベース、あるいは、オブジェクト指向データベース等を記述し、記憶装置に格納できる。本実施形態に係る情報処理装置は、これらに対応する事物に関する情報の入力を受け、対応する情報を生成して記憶装置に格納し、さらにその一部又は全部を読み出して出力できる。
【００５５】
また、逆ツリー構造で表現される対象情報についても、表現形式３のように記憶装置に格納することができる。逆ツリー情報は、基本的な情報からより複雑な情報を構成する場合に適用できる。表現形式３では、例えば、ａはＣＰＵであり、ｂはインターフェースであり、ｃは外部記憶装置の駆動部であり、ｄはＣＰＵボードであり、ｅは外部記憶装置であり、ｆはパーソナルコンピュータである。
【００５６】
このように逆ツリー構造は、製品の設計書、事業の工程管理図等、基本情報からより複雑な情報を組み上げて管理することができる。したがって、式によって、製品の設計情報、事業の工程等を記述することができる。
【００５７】
図４は、第１の実施形態に係る第三のデータ構造例を示す。同図に示すように、非正規化表構造と属性のない対象情報についても表現形式４の状態で保持することができる。ここで、非正規化表構造と属性のない対象情報とは、図４に示すように伝票を示す対象情報と、その対象情報に追加される付箋メモに相当する対象情報とが例示できる。接着空間を作成することで、コンピュータ上で伝票に付箋メモの内容を添付することと同等の処理が実現される。
【００５８】
なお、形式が同一の伝票ごとにテーブルに格納する場合には、リレーショナルモデルによって従来のデータベースで情報を管理できる。しかしながら、伝票の種類数が変動する場合、既存の伝票の構成が変更された場合には、リレーショナルモデルでは、対応できない。
【００５９】
ここで、拡張式表現について、より詳細に上記表現形式４に基づいて説明する。ＩＤまたはｉｄ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）は、格納される対象情報を識別するものである。そしてこの対象情報は、識別子Ａ〜Ｅ２、ａ〜ｅ２と、演算時の結合強さが異なる第一の括弧（）および第二の括弧｛｝と、これらにより表現される因子｛Ｃ１＋Ｃ２｝、｛Ｅ１＋Ｅ２｝等と、これら因子の積によって表現される項Ｅ×｛Ｅ１＋Ｅ２｝等と、前記項の和によって表現される式と、により構成される。なお、本実施形態では、項を要素ともいう。また、すでに述べたように、単位元εは、所定の処理を実行した場合に１として処理される記号である。上記以外の特別な記号として、所定の処理を実行した場合に０として処理される零元Φが存在する。このような前提のもと、格納された対象情報は、所定のプログラムを実行することによって、入力された伝票データにしたがって生成され、記憶装置に格納され、部分集合に分離され、他の部分集合と接着され、あるいは検索されることになる。
【００６０】
図４の例では、インスタンスとして、伝票ＩＤ１で示される１枚目の伝票、伝票ＩＤ２で示される２枚目の伝票、およびＭＥＭＯで示されるメモが例示されている。また、この場合に、１枚目の伝票と２枚目以降の伝票で、項目の構成が異なっても構わない。本情報処理装置１００は、対象情報を構成する識別子、あるいは項に、個々に属性を付与できるので、異なる属性の並びを有する異なる識別子、あるいは項を自在に記憶し、検索し、変更できる。また、｛｝内に、＋識別子の形式で追加するとともに、属性に対応する値を追加すれば、データベースとして運用中においても、自在に属性と属性値とを追加、変更、削除できる。したがって、本実施形態によれば、厳密、詳細なファイル設計を行うことなく、取り扱うデータの構造を柔軟に変更できるようになる。
【００６１】
（７）数値計算処理
数値を明示的に示す式では、数値以外の識別子による因子と、数値識別子による因子の間は、拡張式表現の代数的構造で示した可換律が適用される。例えば、ａ×‘ｎ'＝‘ｎ'×ａである。
（７−１）明示的な数値表現
ｎを数値とし、ａを数値以外の記号あるいは記号列とする。例えば、ｎは、整数を示す記号または記号の列である。また、ａは、文字等を示す記号または記号の列である。式において、数値ｎと数値以外の記号ａとが、ｎａと記述された場合、ｎａは、整数などの数値を示す記号と数値以外の記号とを組み合わせた識別子ということができる。
【００６２】
本実施形態では、情報処理装置は、このような数値を示す記号（列）と数値以外の記号（列）とを含む識別子“ｎａ”について、識別子ａがｎ個あるものとして取り扱う。ただし、このような記述に代えて、識別子”ａｎ”について、識別子ａがｎ個あるものとして取り扱う、と定義してもよい。なお、ｎは、負の数値も含む。また、数値を示す記号は、小数等の実数を示すものでもよい。例えば、識別子”ａｎ．ｍ”、例えば、a1.005、b12345678.9については、情報処理装置は、ａの量が1.005、ｂの量が12345678.9であるとして取り扱う。
【００６３】
さらに、ａがｎ個あることを明示的に示す式として、ａ×‘ｎ'と記述することにする
。さらにまた、ｎが負数である場合、例えば、−ｍ（ｍは正数）の場合は、ａ×‘−ｍ’のように例示される。なお、×は積演算子である。ここで、ｎを挟む‘'は、数値ｎを明
示的に示す演算子であり、数値演算子と呼ぶ。また、数値演算子によって数値であることが明示された識別子'ｎ'を数値識別子と呼ぶ。積演算子が数値演算子によって数値として明示された識別子に適用された場合、積演算子は乗算を示す。
【００６４】
ただし、数値を明示的に示す数値演算子は、‘'に限定されない。情報処理装置上で使
用可能な記号から、他の演算子等と重複のないものを数値演算子として定義すればよい。例えば、数値をｎ！のように明示してもよい。また、数値を＄ｎのように明示してもよい。
【００６５】
また、数値を示す記号等を含まない識別子ａだけを含む式についは、ａが１個あることを明示的に示す式として、ａ×‘１’と記述するものとする。同様に、式（ａ＋ａ＋ａ）は、数値を明示的に示す式として、（ａ×‘1’＋ａ×‘1’＋ａ×‘1’）と記述する。
同様に、式｛ａ＋ａ＋ａ｝は、数値を明示的に示す式として、｛ａ×‘1’＋ａ×‘1’＋ａ×‘1’｝と記述する。
【００６６】
さらに、例えば、式２ａ（３ｂ＋ｃ（２ｄ＋３ｅ＋４ｆ＋ｅ））は、数値を明示的に示す式として、ａ×‘２’×（ｂ×‘３’＋ｃ×‘１’×（ｄ×‘２’＋ｅ×‘３’＋ｆ×‘４’＋ｅ×‘１’））のように記述される。ただし、×‘1’は、省略してもよい。つ
まり、識別子ａは、明示的にａが１個あるものとして０取り扱うことができる。
【００６７】
数値を明示的に示す式では、数値以外の識別子による因子と、数値識別子による因子の間は、拡張式表現の代数的構造で示した可換律が適用される。例えば、ａ×‘ｎ’＝‘ｎ’×ａである。
【００６８】
数値を明示的に示す式において、四則演算、べき乗等の演算は、以下のように処理される。以下、数値を明示的に示す式を代数演算式と呼ぶ。
【００６９】
（７−２）乗算
積演算子で結合される複数の因子中の２以上の因子が数値演算子によって数値として明示されている式を考える。このような式については、本情報処理装置は、数値演算子によって数値として明示されている因子間の乗算を実行する。例えば、ａ×'１'×ｂ×'ｍ'＝ａ×ｂ×'１×ｍ'となる。ここで、'１×ｍ'は、数１と数ｍを乗算した積である。具体的には、ａ×'２'×ｂ×'４'＝ａ×ｂ×'８'である。また、例えば、ａ×'０'＝φである。
【００７０】
（７−３）べき乗と除算
以下にべき乗と除算を例示する。べき乗は、同一の数を複数回掛ける演算、あるいは、その演算結果をいう。本情報処理装置では、べき乗は、”底を示す識別子Ｍ×＾指数を示す識別子ｎ”という形式で記述する。例えば、ａ×ａ×ａ＝ａ×＾'３'である。識別子ａのｎ乗は、ａ×＾'ｎ'で表す。つまり、この場合には、”×＾”がべき乗を示す予約語となる。ただし、べき乗が、このような記述形式に限定されるわけではない。この例では、”×＾”が指数演算子に相当する。なお、べき乗の底（上記識別子Ｍ）および指数部分（上記識別子ｎ）の一方または両方が、小数等の実数であってもよい。
【００７１】
例えば、識別子ａのｎ乗をａ＊＊'ｎ'のように表してもよい。この場合には、”＊＊”がべき乗を示す予約語となる。また、識別子ａのｎ乗をａ×Ｅ'ｎ'のように表してもよい。この場合には、”×Ｅ”がべき乗を示す予約語となる。以下、べき乗の記述例、およびべき乗を含む除算を例示する。
ａ×＾'０'＝'１'
（ａ×ｂ）×＾'０'＝'１'
／（ａ×ａ×ａ）＝ａ×＾'−３'
同様に、ａのマイナスｎ乗は、ａ×＾'−ｎ'で表す。一方、／'０'はエラーである。さらに、除算記号で、分母分子として関係付けられる２つの式中で、互いに共通の因子（識別子）は削除可能である。この場合の共通の因子（識別子）については、いわゆる約分が実行される。識別子の削除は、例えば、ａ×ｃ／ａ＝ｃのように示される。
【００７２】
（７−４）加算
和演算子で構成される項の組み合わせ中に、数値演算子で数値として明示されている因子以外の因子が共通する複数の項については、本情報処理装置は、数値演算子で数値として明示されている因子を加算する。以下に、演算結果を例示する。
（ａ×'１'＋ａ×'ｍ'）＝ａ×'（１＋ｍ）'
（ａ×'２'＋ａ×'４'）＝ａ×'６'
（ａ×'１'＋ｂ×'ｍ'）は、これ以上加算できない。
（ａ＋ａ＋ｃ）＝（ａ×'１'＋ａ×'１'＋ｃ×'１'）＝（ａ×'２'＋ｃ×'１'）
なお、第２の括弧”｛｝”内の複数の式同士は、加算できない。例えば、｛ａ＋ａ＋ｃ｝の｛｝内のａとａの加算はできない。ただし、第２の括弧”｛｝”を和演算子で組み合わせた式において、｛｝内の位置が同一位置の式同士の加算は可能である。例えば、｛ａ＋ａ＋ｃ｝＋｛ａ＋ｂ＋ｃ｝＝｛（ａ＋ａ）＋（ａ＋ｂ）＋（ｃ＋ｃ）｝＝｛（ａ×'１'＋ａ×'１'）＋（ａ×'１'＋ｂ×'１'）＋（ｃ×'１'＋ｃ×'１'）｝＝｛ａ×'２'＋（ａ×'１'＋ｂ×'１'）＋ｃ×'２'｝
さらに、減算は、数値に負数を用いることで、加算を用いて、実現できる。以下に負の数値の加算を例示する。
（ａ×'１'＋ａ×'−ｍ'）＝ａ×'（１−ｍ）'
（ａ×'２'＋ａ×'−４'）＝ａ×'−２'
（ａ＋ａ×−１＋ｃ）＝（ａ×'１'＋ａ×'−１'＋ｃ×'１'）＝ｃ×'１'
【００７３】
（８）位置表現式
位置表現式は、式における識別子の位置を示す位置情報を含む表現形式である。位置情報を、絶対位置情報とも呼ぶ。式としては、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される情報を例示できる。したがって、識別子の位置、すなわち、位置表現式は、式中でのそれぞれの識別子が含まれる項の位置と、項の中でのそれぞれの識別子が含まれる因子の位置とによって記述できる。なお、本実施形態に係る処理の対象という意味で、位置表現式も対象情報と呼べる。本例では、識別子の左側に識別子の位置を示す位置情報を付加した表現形式を例示する。ただし、位置情報は、識別子の右側に付加するようにしてもよい。
【００７４】
位置表現式中の位置情報は、＜項の位置×因子の位置＞で定義される。したがって、本実施形態で位置表現式は、＜項の位置×因子の位置＞識別子という形式を取る。
【００７５】
（例）
例えば、識別子Ａ、Ｂ、Ｃを含む式Ａ＋Ｂ＋Ｃは、位置表現式では、＜１×１＞Ａ＋＜２×１＞Ｂ＋＜３×１＞Ｃである。すなわち、＜１×１＞Ａは、第１の項の第１の因子に相当する識別子がＡであることを示す。また、＜２×１＞Ｂは、第２の項の第１の因子に相当する識別子がＢであることを示す。
【００７６】
また、例えば、識別子Ａ、Ｂ、Ｃを含む式Ａ＋Ａ×Ｂ＋Ａ×Ｂ×Ｃは、位置表現では、＜１×１＞Ａ＋＜２×１＞Ａ＋＜２×２＞Ｂ＋＜３×１＞Ａ＋＜３×２＞Ｂ＋＜３×３＞Ｃである。以上のように、第１の括弧“（”、および“）”を含まない式では、式中の第ｉ番目の項中の第ｊ番目の因子となっている識別子Ｚは、＜ｉ×ｊ＞Ｚで記述される。また、複数の項を含む式全体の位置表現式は、それぞれの識別子の位置表現式をプラス（＋
）などの区切り記号で区切って並べたものとなる。
【００７７】
なお、“＜”、および“＞”は、説明のための区切り記号であり、コンピュータ上では、“＜”、および“＞”で括る必要はない。例えば、位置表現を示す文字＆を導入し、＆項の位置×因子の位置のように記述してもよい。同様に、“位置×因子”の間の記号は、“×”である必要はない。例えば、アンダーバー“＿”を用いていてもよい。さらに、複数の項に対応する位置表現で、＜ｉ×ｊ＞Ｚをプラス（＋）で区切って並べる代わりに、他の区切り記号、例えば、他の点を示す記号、カンマ（，）、コロン（：）、セミコロン（；）、スペース、タブなどで区切って並べてもよい。
【００７８】
第１の括弧“（”、および“）”を含む式では、情報が識別子を用いて階層的に記述される。このため、第１の括弧“（”、および“）”を含む式に対応する位置表現に対しては、階層の深さと、どの位置で階層が深くなったか（第１の括弧の中に入ったか）を示す情報が導入される。
【００７９】
式Ａ×（Ｂ＋Ｃ×（Ｄ＋Ｅ））＋Ｆ×（Ｇ＋Ｈ）を位置表現式に変換すると以下のようになる。
（例）
＜１×１＞Ａ＋（１×２）＜１×１＞Ｂ＋（１×２）＜２×１＞Ｃ＋（１×２）（２×２）＜１×１＞Ｄ＋（１×２）（２×２）＜２×１＞Ｅ＋＜２×１＞Ｆ＋（２×２）＜１×１＞Ｇ＋（２×２）＜２×１＞Ｈ
【００８０】
上記例の式で、識別子Ｂは、第１項中の第２因子中にある。また、第２因子は、第１の括弧“（”と“）”とで囲まれている。そこで、識別子Ｂの位置表現は、まず、（１×２）を含む。そして、識別子Ｂは、第２因子中の（）内で、第１の項の第１の因子となっている。そこで、識別子Ｂの位置表現は、（１×２）＜１×１＞Ｂとなる。
【００８１】
同様に、上記例の式で、識別子Ｃは、第１項中の第２因子中の第２項の第１因子となっている。そこで、識別子Ｃの位置表現は、（１×２）＜２×１＞Ｃとなる。さらに、上記例の式で、識別子Ｄは、第１項中の第２因子中の第２項の第２因子中にある。そこでまず、識別子Ｄの位置情報として、（１×２）（２×２）が明示される。さらに、識別子Ｄは、第１項中の第２因子中の第２項の第２因子中で、（）内の第１の項の第１の因子となっている。そこで、識別子Ｄの位置表現は、最終的には、（１×２）（２×２）＜１×１＞Ｄとなっている。
【００８２】
上記例のように、識別子Ｚが（）で囲まれた因子中にある場合、その識別子Ｚが含まれている項の位置を示す情報と、その項中の因子の位置を示す情報として、（ｉ×ｊ）が用いられる。（ｉ×ｊ）は、第ｉ番目の項中の第ｊ番目の因子中にあって、かつ、第ｊ番目の因子が第１の括弧で囲まれた因子（集合因子）であることを示している。上記例のような式の位置表現は、（ｉ×ｊ）という第１の括弧の存在示す情報と、＜ｋ×ｌ＞のような（）型の因子を含まない項の位置と因子の位置とを表す情報の組み合わせで記述される。したがって、因子が複数の（）で２階層以上に深くなる場合には、（ｉ１×ｊ１）（ｉ２×ｊ２）のように第１の括弧の存在を示す情報が列記される。第１の括弧の存在を示す情報が列記された個数によって、第１の括弧による階層の深さが明示される。
【００８３】
図５に、式から得られる位置表現式と、識別子との関係をデータベースのテーブル（表）に格納した例を示す。ただし、図５では、位置表現式は、絶対位置情報で示されている。図５は、上記例の式から得られる位置表現式と、識別子との関係を表に記述している。この例のように、実施形態１によれば、第１の項の第１の因子はＡ、第１の項の第２の因子中の第１の項はＢ、第１の項の第２の因子中の第２の項の第１の因子はＣ、第１の項の
第２の因子中の第２の因子中のさらに第１の項はＤなどのように、位置表現式と、識別子との関係を表形式で格納できる。
【００８４】
さらに、例えば、値としてＣを見出したときに、その位置表現式（１×２）＜２×１＞から、＜２×１＞を除外し、位置表現式（１×２）を検索することによって、識別子Ｃに関連する識別子を取得できる。例えば、位置表現式（１×２）（ｉ×ｊ）を含む属性に対応する値を取得することで、因子Ｃを含む項を取得できる。ここで、ｉとｊは任意の整数である。このような位置表現式（１×２）（ｉ×ｊ）は、本例では、（１×２）＊のように記述するものとする。
【００８５】
すなわち、式から位置表現式に変換し、それぞれの識別子について、図５のように、位置表現式と識別子との関連付けを生成することで、式を既存リレーショナルデータベースのデータに変換できる。したがって、既存のリレーショナルベースの管理システム等の機能を用いて、式を処理できるようになる。
【００８６】
第２の括弧”｛”、および”｝”を含む式の場合にも、対応する位置表現を、第１の括弧”（”、および”）”を含む式と同様に生成することができる。例えば、式Ａ×（Ｂ＋Ｃ×｛Ｄ＋Ｅ｝）＋Ｆ×｛Ｇ＋Ｈ｝を位置表現式に変換すると、以下のようになる。
＜１×１＞Ａ＋（１×２）＜１×１＞Ｂ＋（１×２）＜２×１＞Ｃ＋（１×２）｛２×２｝＜１×１＞Ｄ＋（１×２）｛２×２｝＜２×１＞Ｅ＋＜２×１＞Ｆ＋｛２×２｝＜１×１＞Ｇ＋｛２×２｝＜２×１＞Ｈ
【００８７】
このようにして、第１の括弧と第２の括弧とを組み合わせて位置情報を作成することによって、項の因子が第１の括弧と第２の括弧の組み合わせによる階層的な式を含む場合も、一意的に、式中の識別子の位置を記述できる。
【００８８】
ここで、絶対位置情報の括弧で区画された各々は、当該識別子を含む項の式内における出現順位と、当該識別子を含む因子の当該識別子を含む項内における出現順位とを中置記法によって積演算子で接続したものといえる。例えば、図５の２行目において、値「Ａ」に対応付けられている絶対位置情報＜１×１＞は、式Ａ×（Ｂ＋Ｃ×｛Ｄ＋Ｅ｝）＋Ｆ×｛Ｇ＋Ｈ｝のうち、１番目の項Ａ×（Ｂ＋Ｃ×｛Ｄ＋Ｅ｝）における１番目の因子Ａを示している。
【００８９】
また、絶対位置情報における複数の括弧の積は、式における入れ子状の階層構造を表している。例えば、図５の３行目において、値「Ｂ」に対応付けられている絶対位置情報のうち１つめの括弧（１×２）は、式Ａ×（Ｂ＋Ｃ×｛Ｄ＋Ｅ｝）＋Ｆ×｛Ｇ＋Ｈ｝のうち、１番目の項Ａ×（Ｂ＋Ｃ×｛Ｄ＋Ｅ｝）における２番目の因子（Ｂ＋Ｃ×｛Ｄ＋Ｅ｝）を示している。また、２つ目の括弧＜１×１＞は、式（Ｂ＋Ｃ×｛Ｄ＋Ｅ｝）のうち、１番目の項Ｂにおける１番目の因子Ｂを示している。なお、本実施形態では、より多くの括弧でくくられるほど下位の階層または階層が深いと表現するものとする。
【００９０】
また、絶対位置情報の括弧のうち、第１の括弧“（”及び“）”は、式において第１の括弧で区画された階層を示している。一方、第２の括弧“｛”及び“｝”は、式において第２の括弧で区画された階層を示している。
【００９１】
以上のように、位置表現式によれば、式で記述される情報を、各識別子の位置が一意に特定可能な情報を付加した形式で表すことができる。また、式における式と位置表現式とは、相互に変換することができる。
【００９２】
なお、式に含まれる式に対して位置情報を付加するようにしてもよい。例えば、式に含
まれるすべての項（式の部分集合）に対し、各項に含まれる少なくともいずれかの因子に位置情報を付加する。式Ａ×（Ｂ＋Ｃ×（Ｄ＋Ｅ））＋Ｆ×（Ｇ＋Ｈ）は、２つの項Ａ×（Ｂ＋Ｃ×（Ｄ＋Ｅ））及びＦ×（Ｇ＋Ｈ）を含んでいる。このとき、各項の先頭の因子Ａ及びＦに位置情報を付加すると、当初の式は、＜１×１＞Ａ×（Ｂ＋Ｃ×（Ｄ＋Ｅ））＋＜２×１＞Ｆ×（Ｇ＋Ｈ）という位置表現式で表すことができる。そして、当該位置表現式は、２つの部分＜１×１＞Ａ×（Ｂ＋Ｃ×（Ｄ＋Ｅ））及び＜２×１＞Ｆ×（Ｇ＋Ｈ）に分割したり、位置情報に基づいて分割後の部分を結合してもとの位置表現式に戻したりすることができる。
【００９３】
また、上述した結合律が示す通り、和演算子で結合された式の一部は、任意の位置で部分集合（丸括弧で区画される式の部分）に分けることができる。例えば、Ａ＋Ｂ＋Ｃという式は、Ａ＋（Ｂ＋Ｃ）又は（Ａ＋Ｂ）＋Ｃと表現することができる。このように、式を項の部分集合に分割し、各項に位置情報を付加すれば、位置情報に基づいて項を結合し、もとの式に戻すことができる。よって、上述の式は、＜１×１＞Ａ＋＜２×１＞Ｂ＋＜３×１＞Ｃという位置表現式のほか、＜１×１＞Ａ＋＜２×１＞（Ｂ＋Ｃ）、又は＜１×１＞（Ａ＋Ｂ）＋＜２×１＞Ｃという位置表現式で表すこともできる。
【００９４】
図５は一般的な表を例示したが、テーブル設計や形式は特に限定されない。例えば、テーブル設計については、ソフトウェアの性能等を考慮して適切に正規化することができる。データベースの形式については、ＲＤＢＭＳ（Relational Database Management System）を採用するようにしてもよいし、いわゆるＮｏＳＱＬと呼ばれるような、キーバリュ
ー型等の管理システムを採用してもよい。
【００９５】
（変更履歴の記憶と変更箇所の抽出）
対象情報の少なくとも一部に変更があった場合、変更前後の対象情報を関連付けて記憶させるようにしてもよい。本実施形態では、ツリー構造で表現される対象情報を扱うものとする。以下では、ＢＯＭ（Bill of Materials：部品表）や、部品価格の見積表等を対
象情報とする例に基づいて説明する。なお、内容が変更された対象情報のバージョンの各々を、世代とも呼ぶものとする。
【００９６】
図６Ａは、ツリー構造で表現された乗用車の模式的なＢＯＭの一例を示す図である。図６Ａでは、名称「ＢＯＭ１」をルートとして、親子関係にある因子同士を実線で接続している。具体的には、ＢＯＭ１では、「乗用車Ａ」を親として、その部品「エンジン１」、「車体」、「ステアリング」、「ブレーキ」及び「ランプ」が接続されている。なお、「車体」、「ステアリング」、「ブレーキ」及び「ランプ」の子ノードにはそれぞれさらに詳細な部品が接続されているが、記載を省略している。なお、図３の表現形式２に示したものとは異なり、本ツリー構造では、子ノード（兄弟ノード）間の順序を維持して記憶させるものとする。すなわち、本実施形態に係るツリーは順序木である。ＢＯＭ１のツリー構造は以下の式で表すことができる。
（例）
ＢＯＭ１（乗用車Ａ｛エンジン１＋車体｛・・・｝＋ステアリング｛・・・｝＋ブレーキ｛・・・｝＋ランプ｛・・・｝｝
【００９７】
図６Ｂは、模式的なＢＯＭの１つの部品を詳細化した例を示す図である。図６ＢのＢＯＭ２では、ＢＯＭ１に示したツリー構造に対して「エンジン１」を親として、その部品「ピストン１」、「クランクシャフト」、「キャブレター」、「コネクティングロッド」が追加されている。ＢＯＭ２のツリー構造は以下の式で表すことができる。
（例）
ＢＯＭ２（乗用車Ａ｛エンジン１｛ピストン１＋クランクシャフト＋キャブレター＋コネクティングロッド｝＋車体｛・・・｝＋ステアリング｛・・・｝＋ブレーキ｛・・・｝＋
ランプ｛・・・｝｝
【００９８】
図６Ｃは、模式的なＢＯＭの部品を変更、削除及び追加した例を示す図である。図６ＣのＢＯＭ３では、ＢＯＭ２に示したツリー構造に対して「エンジン１」の子ノードに接続された部品「ピストン１」が「ピストン２」に変更されている。また、ＢＯＭ２の「キャブレター」は削除され、空集合「φ」に変更されている。また、「エンジン１」の子ノードに「シリンダ」が追加されている。図６Ｃのツリー構造は以下の式で表すことができる。
（例）
ＢＯＭ３（乗用車Ａ｛エンジン１｛ピストン２＋クランクシャフト＋φ＋コネクティングロッド＋シリンダ｝＋車体｛・・・｝＋ステアリング｛・・・｝＋ブレーキ｛・・・｝＋ランプ｛・・・｝｝
【００９９】
図６Ａ〜図６Ｃに示したように、本実施形態におけるツリー構造で表された対象情報の変更では、子ノード（兄弟ノード）間の順序を維持して記憶する。また、因子を追加する場合は兄弟ノードの最後方に追加する。そして、因子を削除する場合には、φに置き換える。このような規則により、本実施形態に係るツリー構造は、既存のノード（因子）の絶対位置情報が変わらないようになっている。なお、親子ノード間に新たな因子を追加する操作は基本的に発生しないものとして説明するが、当該操作は、既存の子ノード以下をすべて削除し、新たな因子及びもとの子ノード以下の部分木を追加する（置き換える）操作として実行することができる。また、上述した第３の括弧“［］”で括ることにより、位置情報を維持したまま任意のノードに付加的な情報を追加するようにしてもよい。例えば、図６ＣのＢＯＭ３において、「乗用車Ａ」に「日本製」という情報を付加する場合、第３の括弧で括った［乗用車Ａ×日本製］という表現にする。このようにすれば、親ノードと子ノードとの間に、疑似的に情報を追加することができると共に、［乗用車Ａ×日本製］はひとつの識別子として扱われるため、ツリー構造における各ノードの絶対位置情報は維持される。
【０１００】
図７Ａ〜図７Ｃは、ツリー構造のノードとして表された因子の各々に絶対位置情報を付した図である。上述したように、本実施形態に係るツリー構造は、既存のノード（因子）の絶対位置情報が変わらないようになっているため、変更前後に係る式において、絶対位置情報が同一の因子を比較することにより、各因子に対する変更の有無を判断することができる。なお、絶対位置情報は、括弧内における積演算子で結合された２つ目の数値、及び括弧で括られ積演算子で結合された数値の組の数は、木構造におけるルートノードからの階層の深さを示している。また、積演算子で結合された１つ目の数値は、兄弟ノード内における順位を示している。
【０１０１】
図７Ａ〜図７Ｃにおいて、絶対位置情報が同一の因子を比較すると、ＢＯＭ２には、ＢＯＭ１に存在しなかった（１×３）（１×２）＜１×１＞ピストン１から、（１×３）（１×２）＜４×１＞コネクティングロッドまでが追加されていることがわかる。また、ＢＯＭ３では、ＢＯＭ２の（１×３）（１×２）＜１×１＞ピストン１が、（１×３）（１×２）＜１×１＞ピストン２に変更されていることがわかる。同様に、ＢＯＭ３では、ＣＯＭ２の（１×３）（１×２）＜３×１＞キャブレターが、（１×３）（１×２）＜１×１＞φに変更され、削除されたことがわかる。また、ＢＯＭ３には、ＢＯＭ２に存在しなかった（１×３）（１×２）＜５×１＞シリンダが追加されている。このような位置情報は、式から一意に定まる。したがって、例えばコンピュータで本実施形態に係るツリー構造を処理する場合、位置情報を含まない式を補助記憶装置（外部記憶装置）に記憶させておき、主記憶装置（いわゆるメモリ）に読み出す際に位置情報を付すようにしてもよい。
【０１０２】
また、図６Ａ〜図６Ｃに示した変更前後のツリー構造を記憶させる際、本実施形態では
例えば式を和演算子で接続するものとする。すなわち、各項が変更の各過程におけるツリー構造を表すものとなり、式全体は変更の過程を記憶したツリー構造といえる。変更の過程を記憶したツリー構造は、以下の式で表すことができる。なお、変更の順序を維持して記憶させるため、第２の括弧“｛｝”で全体を括るようにしてもよい。
（例）
ＢＯＭ１（乗用車Ａ｛エンジン１＋車体｛・・・｝＋ステアリング｛・・・｝＋ブレーキ｛・・・｝＋ランプ｛・・・｝｝＋ＢＯＭ２（乗用車Ａ｛エンジン１｛ピストン１＋クランクシャフト＋キャブレター＋コネクティングロッド｝＋車体｛・・・｝＋ステアリング｛・・・｝＋ブレーキ｛・・・｝＋ランプ｛・・・｝｝＋ＢＯＭ３（乗用車Ａ｛エンジン１｛ピストン２＋クランクシャフト＋φ＋コネクティングロッド＋シリンダ｝＋車体｛・・・｝＋ステアリング｛・・・｝＋ブレーキ｛・・・｝＋ランプ｛・・・｝｝
【０１０３】
（情報処理装置の装置構成）
図８は、実施例１に係る情報処理装置１００の構成を例示すブロック図である。同図に示すように、第１の実施形態に係る情報処理装置１００は、対象情報を入力するキーボード、ポインティングデバイス等の入力手段１１と、入力された対象情報を格納するメモリ１２（本発明の記憶部に相当）と、対象情報を所定のプログラムに基づいて処理するＣＰＵ１３と、入力された対象情報や処理後の対象情報を出力するディスプレイ等の出力手段１４と、ＣＰＵ１３と入力手段１１との間を接続するインターフェース１５と、ＣＰＵ１３と出力手段１４との間を接続するインターフェース１６とを備える。
【０１０４】
インターフェース１５は、例えば、ＵＳＢ（Universal Serial Bus）等のシリアルインターフェースである。また、インターフェース１６は、例えば、ＲＧＢ（赤、緑、青）の画像信号および同期クロックの出力インターフェースである。
【０１０５】
ただし、図８において点線で例示されているように、情報処理装置１００は、インターフェースを介して、外部記憶装置、着脱可能な記憶媒体の駆動装置、通信部等と接続されるようにしてもよい。ここで、外部記憶装置は、例えば、ＨＤＤ（Hard Disk Drive）、
ＳＳＤ（Solid State Drive）等である。また、着脱可能な記憶媒体は、例えば、光ディ
スク、フラッシュメモリカード等である。また、通信部は、ネットワークにアクセスし他の情報処理装置と通信する装置であり、例えば、ＮＩＣ（Network Interface Card）等である。
【０１０６】
情報処理装置１００は、典型的には、パーソナルコンピュータ、サーバ等のコンピュータである。ただし、情報処理装置１００は、そのようなコンピュータに限定されるものではなく、例えば、携帯情報端末、携帯電話、ＰＨＳ（Personal Handyphone System）、スマートウォッチやスマートグラス等のウェアラブル装置、デジタルテレビ、デジタルテレビのチューナあるいはセットトップボックス、ハードディスクを含むテレビジョンの録画装置、車載用の端末等として実現できる。また、メモリ１２は、揮発性のＤＲＡＭ（Dynamic Random Access Memory）、不揮発性のＥＰＲＯＭ（Erasable Programmable Read Only Memory）、ＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）、フラッシュメモリ等を含む。
【０１０７】
情報処理装置１００の機能は、ＣＰＵ１３がプログラムを実行することで実現される。このプログラムは、メモリ１２あるいは不図示の外部記憶装置にインストールされる。プログラムは、通信インターフェースを通じてネットワークから、あるいは、着脱可能な記憶媒体からインストールされる。したがって、このプログラムは、ネットワークあるいは着脱可能な記憶媒体等を通じて流通される。
【０１０８】
また、メモリ１２あるいは不図示の外部記憶装置に格納された対象情報は、ＣＰＵ１３
が所定のプログラムを実行することによって各レベルを移行する。なお、各レベルとは、前記対象情報の抽象度が最も高く表現される集合レベル１２２と、前記集合レベル１２２よりも前記対象情報の抽象度が低く表現され、該対象情報が部分集合を要素として表現されるトポロジー空間レベル１２３と、前記トポロジー空間レベルよりも前記対象情報の抽象度が低く表現され、該トポロジー空間レベルにおける前記対象情報同士が接着される接着空間レベル１２４と、前記トポロジー空間における前記対象情報が所定の属性をもって表現されるセル空間レベル１２５とによって例示される。また、各レベルで表現される対象情報は、位置情報を付加した位置表現式として表すこともできる。上述の通り、位置情報を含まない式を補助記憶装置に記憶させておき、主記憶装置に読み出す際に位置情報を付すようにしてもよい。
【０１０９】
実施例１（変更履歴出力処理１）
図９は、実施例１に係る変更履歴出力処理の一例を示す処理フロー図である。情報処理装置１００は、メモリ１２に実行可能に展開されたコンピュータプログラムに基づいて、図９の処理を実行する。まず、情報処理装置１００のＣＰＵ１３は、対象情報を外部記憶装置からメモリ１２へ読み出す（図９：Ｈ１）。なお、外部規則装置には、次のような式でツリー構造のＢＯＭが記憶されているものとする。
（例）
ＢＯＭ１（乗用車Ａ｛エンジン１＋車体｛・・・｝＋ステアリング｛・・・｝＋ブレーキ｛・・・｝＋ランプ｛・・・｝｝＋ＢＯＭ２（乗用車Ａ｛エンジン１｛ピストン１＋クランクシャフト＋キャブレター＋コネクティングロッド｝＋車体｛・・・｝＋ステアリング｛・・・｝＋ブレーキ｛・・・｝＋ランプ｛・・・｝｝＋ＢＯＭ３（乗用車Ａ｛エンジン１｛ピストン２＋クランクシャフト＋φ＋コネクティングロッド＋シリンダ｝＋車体｛・・・｝＋ステアリング｛・・・｝＋ブレーキ｛・・・｝＋ランプ｛・・・｝｝
ＣＰＵ１３は、上記のようなＢＯＭを文字列としてシーケンシャルに読み出し、メモリ１２上には、例えば図７Ａ〜図７Ｃに示したように位置情報と対応付けられた因子が保持される。なお、ＢＯＭ１、ＢＯＭ２及びＢＯＭ３が和演算子で接続され、１つの式に結合されているため、図７ＢのＢＯＭ２の位置情報は＜２×１＞になり、子ノードの位置情報の１番目の括弧内は、（２×・・・）となる。同様に、図７ＣのＢＯＭ３の位置情報は＜３×１＞になり、子ノードの位置情報の１番目の括弧内は、（３×・・・）となる。また、各項は、ツリー構造の変更の過程（段階）として扱われ、比較の対象となる。
【０１１０】
次に、ＣＰＵ１３は、ツリー構造の変更の過程において対応する位置情報の因子に変化があるか比較する（Ｈ２）。すなわち、位置情報における１つ目の括弧を除き、それ以降の位置情報が同一の因子の各々について差異があるか判断する。比較は、例えば最新のツリー構造であるＢＯＭ３を基準として行われる。なお、本ステップは、ユーザから着目する因子の入力を受け、当該因子について変化の有無を判断するようにしてもよい。
【０１１１】
ＢＯＭ３の各因子について、式に出現する順にＢＯＭ２及びＢＯＭ１と比較すると、まず、ＢＯＭ３の（３×３）（１×２）＜１×１＞ピストン２は、ＢＯＭ２において（２×３）（１×２）＜１×１＞ピストン１であり、ＢＯＭ１には対応する位置情報の因子が存在しなかったことがわかる。次に、ＢＯＭ３の（３×３）（１×２）＜２×１＞クランクシャフトは、ＢＯＭ２からは変更されていないが、ＢＯＭ１には存在しなかったことがわかる。また、ＢＯＭ３においてすでに削除されている（１×３）（１×２）＜３×１＞φは、ＢＯＭ２において（２×３）（１×２）＜３×１＞キャブレターであり、ＢＯＭ１においては存在しなかったことがわかる。また、ＢＯＭ３の（３×３）（１×２）＜４×１＞コネクティングロッドは、ＢＯＭ２からは変更されていないが、ＢＯＭ１には存在しなかったことがわかる。そして、ＢＯＭ３の（３×３）（１×２）＜５×１＞シリンダは、ＢＯＭ２及びＢＯＭ１において存在しなかったことがわかる。なお、その他の部品については、差異はない。このように、Ｈ２において因子に変化があるか判断される。
【０１１２】
そして、ＣＰＵ１３は、差異のある因子について変更履歴を生成する（Ｈ３）。本ステップでは、Ｈ２において変化があると判断された因子について、例えば出力手段１４や通信部を介して接続された他の装置に出力するためのデータを生成する。ここでは、例えば、変更の過程（段階）における対象情報において、変更された因子の位置情報と、各段階における因子を示す情報を生成する。例えば、ＢＯＭ３のピストン２について、以下のような履歴情報を生成する。
（例）
（ＢＯＭ１，ＢＯＭ２，ＢＯＭ３）乗用車Ａ｛エンジン１（φ，ピストン１，ピストン２）｝
この例では、抽出された因子について、ツリー構造における階層の深さごとに、差異のある因子は変更の順にカンマで接続して表し、差異のない因子については１つの因子に集約して表し、階層の順に接続している。変更履歴を表すデータの形式は、このような例には限られない。また、履歴情報は、変化のあった因子の各々について求めるようにしてもよい。
【０１１３】
また、ＣＰＵ１３は、生成した変更履歴を、例えば出力手段１４や通信部を介して接続された他の装置へ出力する（Ｈ４）。例えば例示したような履歴情報が出力手段１４に出力され、ユーザは、ＢＯＭ１、ＢＯＭ２及びＢＯＭ３において、乗用車Ａのエンジン１に用いられる当初未定であった部品がまずピストン１になり、その後ピストン２に変更されたことがわかる。
【０１１４】
このように、実施例１に係る変更履歴出力処理によれば、例えば製品の製造過程において設計変更された部品を抽出し、出力することができる。設計段階のＢＯＭと生産段階のＢＯＭとを異なる担当者が変更するような場合でも、変更履歴の一覧を生成することができる。
【０１１５】
実施例２（変更履歴出力処理２）
次に、実施例２に係る変更履歴出力処理を説明する。実施例２の対象情報は、例えばＢＯＭの部品に対する単価及び数量といった数値を含む。対象情報は、例えば以下の例のようになる。
（例）
ＢＯＭ１（乗用車Ａ｛エンジン１＋車体・・・＋ステアリング・・・＋ブレーキ・・・＋ランプ・・・｝＋ＢＯＭ２（乗用車Ａ｛エンジン１｛ピストン１＋クランクシャフト＋キャブレター＋コネクティングロッド｝｛１０＋２０＋３０＋４０｝｛１＋２＋３＋４｝１０＋車体・・・＋ステアリング・・・＋ブレーキ・・・＋ランプ・・・｝＋ＢＯＭ３（乗用車Ａ｛エンジン１｛ピストン２＋クランクシャフト＋φ＋コネクティングロッド＋シリンダ｝｛１０＋２２＋φ＋４０＋５０｝｛１＋２＋φ＋４＋５｝１０＋車体・・・＋ステアリング・・・＋ブレーキ・・・＋ランプ・・・｝
式においては、（２）拡張式表現の代数的構造の（ｆ）｛ｒ＋ｓ｝×｛ｔ＋ｕ｝＝｛ｒ×ｔ＋ｓ×ｕ｝；に示した通り、ある第２の括弧内の値と他の第２の括弧内の値は、対応する記載順位の値同士が対応関係にあることを示している。この例では、例えばＢＯＭ３において、ピストン２、クランクシャフト、コネクティングロッド、及びシリンダといった部品に対し、第２の括弧で括られた複数の数値（すなわち、順序を維持した複数の数値）によって表される各部品の単価の列が積演算子で結合されている。具体的には、各部品の単価はそれぞれ１０、２０、４０及び５０である。そして、同様に第２の括弧で括られた複数の数値によって表される各部品の列の数量が積演算子で結合されている。具体的には、各部品の数量はそれぞれ１、２、４及び５である。また、部品、単価及び数量には、さらに上位部品の数量が積演算子で結合されている。具体的には、上記の例ではエンジン１の数量が１０とされている。
【０１１６】
なお、ツリー構造に係る親子関係も積演算子で接続されるため、単価や数量を結合する積演算子と識別する必要がある。このため、単価や数量を表す識別子は、予め、上述した数値演算子‘’で括ることにより、数値を明示的に示す式（因子）として登録するようにしてもよい。また、実施例２では、例えば所定の深さの階層には単価及び数量が結合されることがあらかじめ分かっているものとしてもよいし、１つの親ノードと積演算子で接続された因子が複数のノードを含んでいれば子ノードとして扱い、和演算子で結合された複数の識別子の集合と和演算子で結合された同数の識別子の集合とが積演算子で接続される場合は、親子関係でなく対応する識別子の数（例えば、単価又は数量）を示すものとして扱うようにしてもよい。
【０１１７】
このような例について、実施例２では、図９の処理フローと同様に、変更履歴を生成及び出力する。すなわち、単価や数量の各々は、位置情報が対応付けられ、変更過程における複数の対象情報の間で変更の有無が判断される。
【０１１８】
図９のＨ３では、例えば以下の例のような変更履歴が生成される。
（例）
（ＢＯＭ１，ＢＯＭ２，ＢＯＭ３）乗用車Ａ｛エンジン１（φ，クランクシャフト｛２０｝｛２｝１０，クランクシャフト｛２２｝｛２｝１０）｝
この例では、ＢＯＭ３において、クランクシャフトの単価が２０から２２に変更されたことがわかる。
【０１１９】
また、図９のＨ３において、変更された部品の単価若しくは数量、又は上位部品の数量に基づいて、全体としての金額の変動を求めるようにしてもよい。合計金額を求める処理は、上述した（７）数値計算処理における数値同士の積算のように、積演算子で結合された数値同士を、算術演算子で結合された場合と同様に乗じるものになる。したがって、ＢＯＭ２ではクランクシャフトのコストが全体で４００（２０×２×１０）だったところ、ＢＯＭ３では４４０（２２×２×１０）になっている。このような結果は、例えば以下のような変更履歴で表すようにしてもよい。
（例）
（ＢＯＭ１，ＢＯＭ２，ＢＯＭ３）乗用車Ａ｛エンジン１（φ，クランクシャフト×４００，クランクシャフト×４４０）｝
【０１２０】
実施例２によれば、設計変更された部品だけでなく、単価が変更された部品を変更履歴として抽出することができる。また、当該部品の全体に与える金額的な影響を算出することもできる。
【０１２１】
実施例３（データの格納形式）
実施例３においても、対象情報は、実施例１及び実施例２と同様にツリー構造で表されたデータとする。また、実施例３では、式で表された対象情報は、外部記憶装置において、キー（Ｋｅｙ）とこれに対応付けられたバリュー（Ｖａｌｕｅ）とで構成されるＫＶＳ（Key Value Store）形式で保持されるものとする。そして、キーには、上述したＢＯＭ
の例における部品名のように、ツリー構造におけるノードが登録される。そして、これに関連付けられるバリューには、例えば当該ノードを含むルートノード（根ノード）からリーフノード（葉ノード）までの部分木が登録される。すなわち、当該ノードを含む、最上位の親ノードを持たないノードから、下位の末端にある子ノードを持たないノードまでの部分木が登録される。
【０１２２】
例えば、図６Ｃに示したＢＯＭ３の場合、キーには「エンジン１」や「シリンダ」といった部品名が登録される。「エンジン１」の場合、バリューには、以下の例に示すような
、エンジン１を含むルートノードからリーフノードまでの部分木が登録される。
（例）
ＢＯＭ３（乗用車Ａ｛エンジン１｛ピストン２＋クランクシャフト＋φ＋コネクティングロッド＋シリンダ｝｝））
また、キーが「シリンダ」の場合、バリューには、以下の例に示すような、ルートノードからリーフノードである「シリンダ」までの部分木が登録される。
（例）
ＢＯＭ３（乗用車Ａ｛エンジン１｛シリンダ｝｝）
なお、部品名は一意になるように命名されているものとする。
【０１２３】
このようにすれば、部品名によって、例えばリレーショナルデータベースを用いる場合と比較して一般的に高速な検索が可能となる。また、図示していない単価や数量を含むデータをバリューに登録しておけば、例えばある部品の単価の変動や、ある上位部品として表されるサブシステム単位の見積もりを、高速に求めることができるようになる。
【０１２４】
（その他）
実施形態に示した情報処理装置１００の機能は、これまで提案されていなかった新たなデータベースのデータ構造と、データ処理の手順を例示している。したがって、実施形態の技術は、利用者が取り扱う事物、組織、人などに関する情報、あるいは利用者が取り扱う概念などのコンピュータ上での処理に適用できる。そのようなコンピュータ上の処理としては、例えば、事物、組織、人などに関する情報、あるいは概念をコンピュータ上の情報として記述し、メモリ等の主記憶装置、ハードディスクドライブ等の外部記憶装置に格納し、データベースを構築し、格納した情報を抽出し、更新し、管理する技術一般に適用できる。すなわち、実施形態に係る情報処理装置１００は、コンピュータ上の新たな情報の表現技術を例示する。
【符号の説明】
【０１２５】
１１    入力部
１２    メモリ
１３    ＣＰＵ
１４    出力部
１５、１６    インターフェース
１００    情報処理装置
【図１】
0006682754.tif 000002
【図２】
0006682754.tif 000003
【図３】
0006682754.tif 000004
【図４】
0006682754.tif 000005
【図５】
0006682754.tif 000006
【図６Ａ】
0006682754.tif 000007
【図６Ｂ】
0006682754.tif 000008
【図６Ｃ】
0006682754.tif 000009
【図７Ａ】
0006682754.tif 000010
【図７Ｂ】
0006682754.tif 000011
【図７Ｃ】
0006682754.tif 000012
【図８】
0006682754.tif 000013
【図９】
0006682754.tif 000014