【実施例1】
【0012】
(装置構成)
図1は、第1の実施形態(実施例1ともいう)に係る情報処理装置100の構成を例示すブロック図である。同図に示すように、第1の実施形態に係る情報処理装置100は、対象情報を入力するキーボード、ポインティングデバイス等の入力手段11と、入力された対象情報を格納するメモリ12(本発明の記憶部に相当)と、対象情報を所定のプログラムに基づいて処理するCPU13と、入力された対象情報や処理後の対象情報を出力するディスプレイ等の出力手段14と、CPU13と入力手段11との間を接続するインターフェース15と、CPU13と出力手段14との間を接続するインターフェース16とを備える。
【0013】
インターフェース15は、例えば、USB(Universal Serial Bus)等のシリアルインターフェースである。また、インターフェース16は、例えば、RGB(赤、緑、青)の画像信号および同期クロックの出力インターフェースである。
【0014】
ただし、
図1では、点線で例示されているように、情報処理装置100は、インターフェースを介して、外部記憶装置、着脱可能な記憶媒体の駆動装置、通信部等と接続されるようにしてもよい。ここで、外部記憶装置は、例えば、ハードディスク駆動装置、SSD(Solid State Drive)等である。また、着脱可能な記憶媒体は、例えば、CD(Compact
disc)、DVD(Digital Versatile Disk)、ブルーレイディスク、フラッシュメモリ
カード等である。また、通信部は、ネットワークにアクセスし他の情報処理装置と通信する装置であり、例えば、NIC(Network Interface Card)等である。
【0015】
情報処理装置100は、典型的には、パーソナルコンピュータ、サーバ等のコンピュータである。ただし、情報処理装置100は、そのようなコンピュータに限定されるものではなく、例えば、携帯情報端末、携帯電話、PHS(Personal Handyphone System)、デジタルテレビ、デジタルテレビのチューナあるいはセットトップボックス、ハードディスクを含むテレビジョンの録画装置、車載用の端末等として実現できる。また、メモリ12は、揮発性のDRAM(Dynamic Random Access Memory)、不揮発性のEPROM(Erasable Programmable Read Only Memory)、EEPROM(Electronically Erasable and Programmable Read Only Memory)、フラッシュメモリ等を含む。
【0016】
情報処理装置100の機能は、CPU13がプログラムを実行することで実現される。このプログラムは、メモリ12あるいは不図示の外部記憶装置にインストールされる。プログラムは、通信インターフェースを通じてネットワークから、あるいは、着脱可能な記憶媒体からインストールされる。したがって、このプログラムは、ネットワークあるいは着脱可能な記憶媒体等を通じて流通される。
【0017】
また、メモリ12あるいは不図示の外部記憶装置に格納された対象情報は、CPU13が所定のプログラムを実行することによって各レベルを移行する。なお、各レベルとは、前記対象情報の抽象度が最も高く表現される集合レベル22と、前記集合レベル22よりも前記対象情報の抽象度が低く表現され、該対象情報が部分集合を要素として表現されるトポロジー空間レベル23と、前記トポロジー空間レベルよりも前記対象情報の抽象度が低く表現され、該トポロジー空間レベルにおける前記対象情報同士が接着される接着空間レベル24と、前記トポロジー空間における前記対象情報が所定の属性をもって表現され
るセル空間レベル25と、によって例示される。
【0018】
(データ構造)
次に、第1の実施形態に係る情報処理装置100のメモリ12に格納される対象情報の構造、すなわちデータ構造について説明する。なお、本実施形態の情報処理装置100は、以下のデータ構造によって、処理対象のデータを記述し、記憶し、演算処理を行う。
【0019】
(1)対象情報の構成要素
情報処理装置100は、対象情報を式の形式で表現する。式は、和演算子“+”、積演算子“×”、第1の括弧“(”“)”、および第2の括弧“{”“}”によって記述される。第1の括弧が本発明の集合因子構成演算子に相当する。また、第2の括弧が本発明の順序構成演算子に相当する。このような対象情報の表現形式を式表現とも呼ぶ。
【0020】
式は、1以上の識別子を含む。識別子は、記号または記号列で表現される。本実施形態では、記号として、英数字、および特殊文字(ただし、和演算子“+”、積演算子“×”、第1の括弧“(”“)”、および第2の括弧“{”“}”を除外する)を用いることとする。ただし、記号は、一般的にアルファベットとも呼ばれ、必ずしも、これらの文字には限定されない。
【0021】
本実施形態では、特殊な識別子として、Φおよびεを用いる。Φは、値ゼロ、和演算子において演算結果を変化させない値、または空集合を示す識別子である。本実施形態では、Φを零元と呼ぶ。また、εは、値1、あるいは、積演算子において演算結果を変化させない値である。本実施形態では、εを単位元と呼ぶ。なお、Φを和演算の単位元と呼ぶ場合もあるが、本実施形態では、Φを零元と呼ぶことにする。
【0022】
本実施形態では、以下の規則によって対象情報、すなわち、識別子、因子、項(要素ともいう)、集合情報、接着空間の情報、およびセル空間の情報を記述する式表現が生成される。
(a)識別子、単位元、および零元はいずれも式表現、すなわち、対象情報を記述する表現である。
(b)rとsとがともに、式表現である場合、r+sも式表現である。
(c)rとsとがともに、式表現である場合、r×sも式表現である。この場合、演算の結合の強さは、通常の代数と同様に、r×sの方が、r+sよりも強い。
(d)rが式表現である場合、(r)、{s}も式表現である。
【0023】
(2)式表現の代数的構造
本実施形態において、式表現r、s、t、yは、次の代数の性質を有する。
(a)結合律
r+(s+t)=(r+s)+t;r×(s×t)=(r×s)×t;
(b)可換律
r+s=s+r;
なお、本実施形態の式表現では、積演算子の可換律は成立しない。したがって、積演算子で複数の因子が結合されている場合に、個々の因子位置が情報(あるいは意味)を持つ。すなわち、因子は、いわゆる位置を指定してされた位置パラメータとしての機能を有する。「積演算子の可換律は成立しない」ことは、本発明の積演算子が「順序を持つ因子の列として複数の識別子を結合する」ことに相当する。
(c)積演算の単位元
r×ε=ε×r=r;
(d)積演算、和演算の零元
r×Φ=Φ×r=Φ;r+Φ=r;
(e)分配率
r×(s+t)=r×s+r×t;(r+s)×t=r×t+s×t;
(f)
{r+s}×{t+u}={r×t+s×u};
【0024】
(3)集合情報
集合情報は、項の組み合わせ、あるいは、項の和として、定義される。ここで、それぞれの項は集合ID(本発明の第1の識別因子に相当)となる識別子と値となる識別子の積、すなわち、集合ID×値として定義される。ただし、値は、複数の識別子の積であってもよい。集合の情報の式表現は、典型的には、集合ID×値1+集合ID×値2+・・・である。
【0025】
上述のように、本実施形態のデータ構造では、和演算子に可換律が成立することから、集合情報は、順序のない項の組み合わせということができる。一方、項を構成する因子間の位置関係は維持されることになる。
【0026】
このような因子間の位置関係の維持機能は、コンピュータ上で事物、あるいは、概念を表現する場合に、極めて大きな効果を発揮する。すなわち、一般的に、事物、あるいは概念を記述する修飾関係には、可換律が成立しない。例えば、”児玉の机”は、”机の児玉”と意味が異なる。
【0027】
本実施形態の因子と積演算子によれば、このような修飾関係を極めて単純化して、記述することができる。さらに、そのような修飾関係で記述された項を和演算子によって組み合わせることで事物の集合、あるいは、概念の集合を記述し、極めて単純な形式のデータベースを構築できる。
【0028】
さらにまた、管理対象の事物あるいは概念を項の集合として管理する場合に、項における因子の位置関係に意味を付与することもできる。また、項を構成する因子は、それぞれ、いわゆる位置パラメータとしての意義を有するということもできる。
【0029】
例えば、集合情報が、果物×任意形状×任意色×バナナ+果物×任意形状×任意色×りんご+果物×細長×黄色×バナナ+果物×丸×赤×リンゴという集合情報を考える。この場合、項の第1因子は、集合IDである果物であり、第2因子は形状を示し、第3因子は色を示し、第4因子は名称を示す。このように、それぞれの因子の位置に意味上の制限を加えて使用することで、属性と属性値との関係を集合レベルでも処理できる。情報処理装置100では、集合情報は、このような順序が維持された因子によって事物の属性を自在に定義することができる。また、そのような因子を含む項の組み合わせによって、事物、人の集合など、現実世界の情報がコンピュータ上に表現される。
【0030】
(例)
A×a1+A×a2+A×a3、b1×B+b2×B×B、果物×リンゴ+果物×バナナ+果物×ミカン、野菜×キャベツ+野菜×キュウリ+野菜×ゴボウ、社員×A+社員×B+社員×C
すなわち、集合情報は、集合IDで識別される集合に所属する項の組み合わせを記述し、メモリ12に記憶される。この場合、社員Cが退職し、社員Dと社員Eが入社した場合には、社員×A+社員×B+社員×Cのようにメモリ12に格納される。
【0031】
(4)トポロジー空間情報
トポロジー空間情報は、トポロジーIDとなる識別子と部分集合の和との積によって以下のように記述される。すなわち、トポロジーID×(部分集合の和)である。ここで、部
分集合は、部分集合を識別する部分集合IDと、その部分集合に含まれる項の和との積で表現される。すなわち、部分集合ID×(項の和)である。ただし、項には、さらに項の和を第1の括弧“()”または第2の括弧”{}”で組み合わせたもの、およびそれらの積が含まれてもよい。
【0032】
(例)トポロジー空間情報の例は、
T×(ABC×(ab1+ac2+bc3)+A×(ab1+ac2)+B×(ab1+bc3)+C(ac2+bc3))、
果物×(全種×(リンゴ+バナナ+ミカン)+赤×リンゴ+黄×(バナナ+ミカン))、果物×(全種×(リンゴ+バナナ+ミカン)+丸×(リンゴ+ミカン)+細長×バナナ)、
野菜×(全種×(大根+キュウリ+ゴボウ)+太×大根+細×(キュウリ+ゴボウ))、会社×(社員×(社員1+社員2+社員3+社員4)+営業×(社員1+社員2)+経理×(社員3+社員4))、等である(この例で、読点“、”は、式の構成要素ではなく、例の区切りである)。この場合に、最後の例について、例えば、総務が新設され、社員5が採用され、総務に配属された場合には、情報処理装置100は、会社×(社員×(社員1+社員2+社員3+社員4+社員5)+営業×(社員1+社員2)+経理×(社員3+社員4)+総務×社員5)のように記述し、メモリ12に格納することができる。
【0033】
(5)接着空間情報
接着空間情報は、トポロジー空間情報に含まれる2つの部分集合Xと部分集合Yに対して、それぞれの部分に含まれる部分集合を関係付けることで構成される。本実施形態では、この関係付けによって発生する関係を同値関係という。
【0034】
今、トポロジー空間情報T(トポロジーIDは、Tid)およびトポロジー空間情報U(トポロジーIDは、Yid)が、トポロジー空間情報Tid×(Tに属する部分集合の和)+トポロジー空間情報Uid×(Uに属する部分集合の和)としてメモリ12に記憶されているとする。
【0035】
さらに、Tに属する部分集合の和=部分集合T0+部分集合T−T0と2つの部分集合に分離できるとする。その場合、情報処理装置100では、トポロジー空間情報Tとトポロジー空間情報Uとを関連づけるトポロジー空間情報Tの因子pと、トポロジー空間情報Uの因子q(本発明の第2の同値因子に相当)が指定される。そして、トポロジー空間情報Tが、因子pを含む部分集合T0と、因子pを含まない部分集合T−T0に分離される。ここで、T−T0は、集合Tから集合T0を削除した差集合である。また、トポロジー空間情報Uが、因子qを含む部分集合U0(本発明の第2の関連項に相当)と、因子qを含まない部分集合U−U0に分離される。ここで、U−U0は、集合Uから集合U0を削除した差集合である。
【0036】
この場合に、上記2つのトポロジー空間情報TとUの和は、トポロジー空間情報Tid×(部分集合T0)+トポロジー空間情報Tid×(部分集合T−T0)+トポロジー空間情報Uid×(部分集合U0)+トポロジー空間情報Uid×(部分集合U−U0)と表現される。このように、集合から特定の因子pを含む部分集合を取り出した場合に、これを商と呼ぶ。また、その商を除く部分集合を剰余という。
【0037】
さらに、部分集合T0=T0id×(T0の項の和)、部分集合U0=U0id×(U0の項の和)と記述されているとする。この場合に、部分集合T0と部分集合U0とを関係付けることによって、以下の接着空間情報を構成できる。すなわち、この場合の接着空間情報は、{部分集合T0におけるpの左因子+部分集合U0におけるqの左因子}{p+q}{部分集合T0におけるpの右因子+部分集合U0におけるqの右因子}+トポロジー
空間情報Tid×(部分集合T−T0)+トポロジー空間情報Uid×(部分集合U−U0)、である。ここで、部分集合T0におけるpの左因子および部分集合T0におけるpの右因子が、ともに、本発明の第1の被接着因子に相当する。また、部分集合U0におけるqの左因子および部分集合U0におけるqの右因子が、ともに、本発明の第2の被接着因子に相当する。
【0038】
なお、ここでは、トポロジー空間レベルの情報を接着する場合を説明したが、トポロジー空間レベルの情報に、属性と属性値が定義されて構成されるセル空間レベルの情報、および、項の組み合わせである集合レベルの集合情報に対しても、接着空間情報が定義できる。また、トポロジー空間、セル空間、集合空間のうち、一のレベルの情報と、他のレベルの情報とについて接着空間情報を定義できる。
【0039】
(例)
今、以下のような果物のトポロジー空間情報と、野菜のトポロジー空間情報の和、すなわち、果物×(全種×(リンゴ+バナナ+ミカン)+丸×(リンゴ+ミカン)+細長×バナナ)+野菜×(全種×(大根+キュウリ+ゴボウ)+太×大根+細×(キュウリ+ゴボウ))がメモリ12に記憶されているとする。
【0040】
ここで、果物のトポロジー空間情報の因子である細長と、野菜のトポロジー空間情報の部分集合である因子細との関連づけが指定され、同値関係にあるとする。この場合に、2つのトポロジー空間情報は、それぞれ次のように商と剰余とに分離される。すなわち、それぞれの集合情報が商と剰余に分離されたトポロジー空間情報は、
果物×細長×バナナ
+果物×(全種×(リンゴ+バナナ+ミカン)+丸×(リンゴ+ミカン))
+野菜×細×(キュウリ+ゴボウ)
+野菜×(全種×(大根+キュウリ+ゴボウ)+太×大根)
となる。
【0041】
そして、同値関係が指定された細長と、野菜のトポロジー空間情報の部分集合である細とによって、接着空間情報が
{果物+野菜}×{細長+細}{バナナ+(キュウリ+ゴボウ)}
+果物×(全種×(リンゴ+バナナ+ミカン)+丸×(リンゴ+ミカン))
+野菜×(全種×(大根+キュウリ+ゴボウ)+太×大根)、のように構成される。
【0042】
このようにして、接着空間情報は、2つのトポロジー空間情報の構造を維持した状態で、関係付けが指定された同値関係にある因子を基に結合されている。接着空間情報より、”細”と”細長”に同値関係が認められれば、右の因子”バナナ”と”(キュウリ+ゴボウ)”を{バナナ+(キュウリ+ゴボウ)}として関連づけて出力できる。
【0043】
また、 伝票ID1枚目(A{ε+B+C{C1+C2}+D+E{E1+E2}}(
a{ε+b+c{c1+c2}+d+e{e1+e2}}+位置(右上+右下)))
+伝票ID2枚目(A{ε+B+C{C1+C2}+D+E{E1+E2}}(a{ε+b+c{c1+c2}+d+e{e1+e2}}))
+MEMO(1(あいう)+2(ABC))
+・・・という伝票の束、およびメモMEMOを記述する情報がメモリ12に格納されていた場合を考える。ここで、MEMOを1枚目の伝票の右上に、位置を指定して張り付ける例を示す。
【0044】
この例で、MEMOの1を1枚目の伝票の右上に張り付けるには、まず、MEMO情報の因子”1”、伝票1枚目の情報の因子”右上”でそれぞれ商空間が作成される。
伝票ID1枚目(A{ε+B+C{C1+C2}+D+E{E1+E2}}(a{ε+b+c{c1+c2}+d+e{e1+e2}}+位置(右下)))+伝票ID1枚目×位置(右上)
+伝票ID2枚目(A{ε+B+C{C1+C2}+D+E{E1+E2}}(a{ε+b+c{c1+c2}+d+e{e1+e2}}))
+MEMO(2(ABC))+MEMO(1(あいう))
+・・・
ここで、”1”と”右上”の関係付けを指定し接着すると、接着情報は、
{伝票ID1枚目×位置+MEMO}{右上+1}{ε+(あいう)}+剰余の部分集合を含む情報、として構成される。このように、接着情報は、相互に構造上の共通性がない2つの対象情報について、それぞれの接着前の構造を維持した状態で、2つの対象情報結合し、メモリ12に格納することができる。
【0045】
(6)セル空間情報
セル空間情報は、事物、組織、人などに関する現実世界の属性、あるいは人が取り扱う概念の属性と、その属性に対応する属性値とを有する情報である。属性は、キー属性とその他の属性とに分かれる。キー属性は属性値によって情報が識別できる属性であり、データベースの検索においてキーとして使用できる値に対応する。セル空間情報で、属性値(またはその並び)は、インスタンスと呼ばれ、従来のデータベースのレコードに相当する。それぞれのインスタンスは、インスタンスIDと呼ぶ識別情報を有する。また、キー属性、あるいは、その他の属性が複数個ある場合には、キー属性、あるいは、その他の属性は、第2の括弧“{”と“}”とによって順序が維持された因子の形式で記述される。すなわち、いわゆるベクトル形式にて属性とその対応する属性値が記述される。
【0046】
セル空間情報は、セル空間ID(本発明のセル空間識別子に相当)と、キー属性の因子と、単位元およびキー属性以外の属性を有する因子と、インスタンスの集合を有する因子とを含む。セル空間情報は、
セル空間ID×(キー属性×{ε+(その他の属性の和)}
×((インスタンスID×{ε+(値の和)})の和))
で構成される。
【0047】
このキー属性の因子と単位元およびキー属性以外の属性を含む属性を有する因子とが、本発明の属性因子に相当する。また、{ε+(その他の属性の和)}の中のいずれかの属性が複数の識別子の積からなる場合に、そのような識別子の積からなる属性が、本発明の属性の順序列に相当する。また、そのような属性が、第2の括弧“{}”で括られた因子である場合に、その第2の括弧で括られた属性が、本発明の属性の順序因子に相当する。
【0048】
また、そのような属性に対応して、インスタンスの{ε+(値の和)}中の値が、識別子の積からなるときに、その値が、本発明の値列に相当する。また、値が、第2の括弧“{}”で括られた因子である場合に、その第2の括弧で括られた値が、本発明の値の順序因子に相当する。
【0049】
(例)
セル空間情報の例は、
果物id×(名前{ε+形+色}(リンゴ{ε+丸+赤}+ミカン{ε+丸+黄}+バナナ{ε+細長+黄}))
+野菜id×(名前{ε+形状+色}(大根{ε+太+白}+キュウリ{ε+細+緑}+ゴボウ{ε+細+茶}))
で示すことができる。この例では、従来のリレーショナルモデルで、果物テーブル、野菜テーブルとして記述されていた情報が、式表現で記述される。なお、この例は、2つのセ
ル空間情報(果物と野菜)を含むことから、統合セル空間情報とも呼ばれる。
【0050】
この統合セル空間情報の処理例を示す。まず、果物のインスタンスのうち、属性“形”が“細長”の値を持つインスタンスとの部分集合(商という)と、その他のインスタンスの部分集合(剰余という)とを作成する。また、まず、野菜のインスタンスのうち、属性“形状”が“細”の値を持つインスタンス(商という)と、その他のインスタンス(剰余という)とに分離する。この場合、結合セル空間情報は、
果物id×バナナ×形×細長
+野菜id×形状×(キュウリ+ゴボウ)細
+果物id×(名前{ε+形+色}(リンゴ{ε+丸+赤}+ミカン{ε+丸+黄}+バナナ{ε+黄}))
+野菜id×(名前{ε+形状+色}(大根{ε+太+白}+キュウリ{ε+緑}+ゴボウ{ε+茶}))
となる。次に、果物のうちの属性“形”が値“細長”を有する部分集合と、野菜のうちの属性“形状”が値“細”を有する部分集合との関係付けを指定し、同値関係を設定する。そして、この同値関係によって接着空間情報を作成すると、
{果物id×形×バナナ+野菜id×形状×(キュウリ+ゴボウ)}{細長+細}{ε+ε}
+果物id×(名前{ε+形+色}(リンゴ{ε+丸+赤}+ミカン{ε+丸+黄}+バナナ{ε+黄}))
+野菜id×(名前{ε+形状+色}(大根{ε+太+白}+キュウリ{ε+緑}+ゴボウ{ε+茶}))
となる。
【0051】
(記述例)
以下、従来のデータ構造である表およびツリー構造が、本実施形態のデータ構造でどのように記述できるかを示す。
【0052】
図2は、第1の実施形態に係る情報処理装置100のメモリ12に格納されるセル空間情報の第一のデータ構造例を示す。同図に示すように、第1の実施形態に係る情報処理装置100では、従来正規化表構造として表形式で表現される対象情報は、表現形式1の状態でメモリ12に格納することができる。表現形式1で、Aは、キー属性(例えば社員番号等)、B、C、D、E等は、その他の属性(例えば、氏名、性別、入社年、所属部署等)である。
【0053】
図3は、第1の実施形態に係る情報処理装置100のメモリ12に格納されるセル空間情報の第二のデータ構造例を示す。同図に示すように、第1の実施形態に係る情報処理装置100では、従来ツリー構造として表現される対象情報は、表現形式2または3でメモリ12に格納することができる。そして、同図に示すように有向グラフの一部としてのツリー構造について対応可能である。表現形式2で、aは、例えば、動物、bはほ乳類、cは魚類、dは人、eは鯨、fはマグロ、gは鯉等である。この場合、b(ほ乳類)およびc(魚類)は、a(動物)の属性、例えば、食する、呼吸する等を継承する。b(ほ乳類)およびc(魚類)の共通の属性は、a(動物)に定義される。
【0054】
したがって、本実施形態の式表現によって、フレーム等の知識ベース、あるいは、オブジェクト指向データベース等を記述し、メモリ12に格納できる。情報処理装置100は、これらに対応する事物に関する情報の入力を入力部11から受け付け、対応する情報を生成し、メモリ12に格納し、メモリから読み出し、出力部14に出力できる。
【0055】
また、逆ツリー構造で表現される対象情報についても、表現形式3のようにメモリ12
に格納することができる。逆ツリー情報は、基本的な情報からより複雑な情報を構成する場合に適用できる。表現形式3では、例えば、aはCPUであり、bはインターフェースであり、cは外部記憶装置の駆動部であり、dはCPUボードであり、eは外部記憶装置であり、fはパーソナルコンピュータである。
【0056】
このように逆ツリー構造は、製品の設計書、事業の工程管理図等、基本情報からより複雑な情報を組み上げて管理することができる。したがって、本実施形態の式表現によって、製品の設計情報、事業の工程等を記述し、メモリ12に格納できる。情報処理装置100は、これらに対応する事物に関する情報の入力を入力部11から受け付け、対応する情報を生成し、メモリ12に格納し、メモリから読み出し、出力部14に出力できる。
【0057】
図4は、第1の実施形態に係る情報処理装置100のメモリ12に格納される第三のデータ構造例を示す。同図に示すように、第1の実施形態に係る情報処理装置100では、非正規化表構造と属性のない対象情報についても表現形式4の状態でメモリ12に格納することができる。ここで、非正規化表構造と属性のない対象情報とは、
図4に示すように伝票を示す対象情報と、その対象情報に追加される付箋メモに相当する対象情報とが例示できる。接着処理を実行し、接着空間を作成することで、コンピュータ上で伝票に付箋メモの内容を添付することと同等の処理が実現される。
【0058】
なお、伝票の種類ごとにテーブルに格納する場合には、リレーショナルモデルによって従来のデータベースで情報を管理できる。しかしながら、伝票の種類数が変動する場合、既存の伝票の構成が変更された場合には、リレーショナルモデルでは、対応できない。
【0059】
ここで、式表現について、より詳細に上記表現形式4に基づいて説明する。IDまたはid(identification)は、格納される対象情報を識別するものである。そしてこの対象情報は、識別子A〜E2、a〜e2と、演算時の結合強さが異なる第一の括弧()および第二の括弧{}と、これらにより表現される因子{C1+C2}、{E1+E2}等と、これら因子の積によって表現される項E×{E1+E2}等と、前記項の和によって表現される式と、により構成される。なお、本実施形態では、項を要素ともいう。また、すでに述べたように、単位元εは、所定の処理を実行した場合に1として処理される記号である。上記以外の特別な記号として、所定の処理を実行した場合に0として処理される零元Φが存在する。このような状態でメモリ12に格納された対象情報は、CPU13が所定のプログラムを実行することによって、入力装置11から入力された伝票データにしたがって、生成され、メモリ12に格納され、部分集合に分離され、他の部分集合と接着され、あるいは、検索されることになる。
【0060】
図4の例では、インスタンスとして、伝票ID1で示される1枚目の伝票、伝票ID2で示される2枚目の伝票、およびMEMOで示されるメモが例示されている。また、この場合に、1枚目の伝票と2枚目以降の伝票で、項目の構成が異なっても構わない。本情報処理装置100は、対象情報を構成する識別子、あるいは項に、個々に属性を付与できるので、異なる属性の並びを有する異なる識別子、あるいは項を自在に記憶し、検索し、変更できる。また、{}内に、+識別子の形式で追加するとともに、属性に対応する値を追加すれば、データベースとして運用中においても、自在に属性と属性値とを追加、変更、削除できる。したがって、本実施形態のデータ構造によれば、情報処理装置100が取り扱うデータを柔軟に変更でき、厳密、詳細なファイル設計が軽減される。
【0061】
(位置表現式)
位置表現式は、式表現中での識別子の位置を示す表現形式ということができる。位置表現式は、絶対位置情報ともいう。式表現としては、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別
子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される情報を例示できる。したがって、識別子の位置、すなわち、位置表現式は、式表現中でのそれぞれの識別子が含まれる項の位置と、項の中でのそれぞれの識別子が含まれる因子の位置とによって記述できる。なお、情報処理装置100の処理対象という意味で、位置表現式は、対象情報と呼んでもよい。実施例1では、識別子の左側に識別子の位置を示す位置情報を付加した表現形式を例示する。ただし、位置表現式は、識別子の右側に識別子の位置を示す情報を付加した表現形式であってもよい。
【0062】
位置表現式中の位置情報は、<項の位置×因子の位置>で定義される。したがって、実施例1で位置表現式は、<項の位置×因子の位置>識別子という形式を取る。
【0063】
(例1)
例えば、識別子A、B、Cを含む式表現A+B+Cは、位置表現では、<1×1>A+<2×1>B+<3×1>Cである。すなわち、<1×1>Aは、第1の項の第1の因子に相当する識別子がAであることを示す。また、<2×1>Bは、第2の項の第1の因子に相当する識別子がBであることを示す。
【0064】
また、例えば、識別子A、B、Cを含む式表現A+A×B+A×B×Cは、位置表現では、<1×1>A+<2×1>A+<2×2>B+<3×1>A+<3×2>B+<3×3>Cである。以上のように、第1の括弧”(”、および”)”を含まない式表現では、式表現中の第i番目の項中の第j番目の因子となっている識別子Zは、<i×j>Zで記述される。また、複数の項を含む式表現全体の位置表現式は、それぞれの識別子の位置表現式をプラス(+)などの区切り記号で区切って並べたものとなる。
【0065】
なお、”<”、および”>”は、説明のための区切り記号であり、コンピュータ上では、”<”、および”>”で括る必要はない。例えば、位置表現を示す文字&を導入し、&項の位置×因子の位置のように記述してもよい。同様に、”位置×因子”の間の記号は、”×”である必要はない。例えば、アンダーバー"_"を用いていてもよい。さらに、複数の項に対応する位置表現で、<i×j>Zをプラス(+)で区切って並べる代わりに、他の区切り記号、例えば、他の点を示す記号、カンマ(,)、コロン(:)、セミコロン(;)、スペース、タブなどで区切って並べてもよい。
【0066】
第1の括弧”(”、および”)”を含む式表現では、情報が識別子を用いて階層的に記述される。このため、第1の括弧”(”、および”)”を含む式表現に対応する位置表現に対しては、階層の深さと、どの位置で階層が深くなったか(第1の括弧の中に入ったか)を示す情報が導入される。
【0067】
(例2)
式表現A×(B+C×(D+E))+F×(G+H)を位置表現式に変換すると以下のようになる。
【0068】
<1×1>A+(1×2)<1×1>B+(1×2)<2×1>C+(1×2)(2×2)<1×1>D+(1×2)(2×2)<2×1>E+<2×1>F+(2×2)<1×1>G+(2×2)<2×1>H
例2の式表現で、識別子Bは、第1項中の第2因子中にある。また、第2因子は、第1の括弧”(”と”)”とで囲まれている。そこで、識別子Bの位置表現は、まず、(1×2)を含む。そして、識別子Bは、第2因子中の()内で、第1の項の第1の因子となっている。そこで、識別子Bの位置表現は、(1×2)<1×1>Bとなる。
【0069】
同様に、例2の式表現で、識別子Cは、第1項中の第2因子中の第2項の第1因子とな
っている。そこで、識別子Cの位置表現は、(1×2)<2×1>Cとなる。さらに、例2の式表現で、識別子Dは、第1項中の第2因子中の第2項の第2因子中にある。そこでまず、識別子Dの位置情報として、(1×2)(2×2)が明示される。さらに、識別子Dは、第1項中の第2因子中の第2項の第2因子中で、()内の第1の項の第1の因子となっている。そこで、識別子Dの位置表現は、最終的には、(1×2)(2×2)<1×1>Dとなっている。
【0070】
例2のように、識別子Zが()で囲まれた因子中にある場合、その識別子Zが含まれている項の位置を示す情報と、その項中の因子の位置を示す情報として、(i×j)が用いられる。(i×j)は、第i番目の項中の第j番目の因子中にあって、かつ、第j番目の因子が第1の括弧で囲まれた因子(集合因子)であることを示している。例2のような式表現の位置表現は、(i×j)という第1の括弧の存在示す情報と、<k×l>のような()型の因子を含まない項の位置と因子の位置とを表す情報の組み合わせで記述される。したがって、因子が複数の()で2階層以上に深くなる場合には、(i1×j1)(i2×j2)のように第1の括弧の存在を示す情報が列記される。第1の括弧の存在を示す情報が列記された個数によって、第1の括弧による階層の深さが明示される。
【0071】
図5に、式表現から得られる位置表現式と、識別子との関係をリレーショナルデータベースの表に格納した例を示す。ただし、
図5では、位置表現式は、絶対位置情報で示されている。
図5は、例2の式表現から得られる位置表現式と、識別子との関係を表に記述している。この例のように、実施例1の情報処理装置100によれば、第1の項の第1の因子はA、第1の項の第2の因子中の第1の項はB、第1の項の第2の因子中の第2の項の第1の因子はC、第1の項の第2の因子中の第2の因子中のさらに第1の項はDなどのように、位置表現式と、識別子との関係を表形式で格納できる。
【0072】
さらに、例えば、値としてCを見出しときに、その位置表現式(1×2)<2×1>から、<2×1>を除外し、位置表現式(1×2)を検索することによって、識別子Cに関連する識別子を取得できる。例えば、位置表現式(1×2)(i×j)を含む属性に対応する値を取得することで、因子Cを含む項を取得できる。ここで、iとjは任意の整数である。このような位置表現式(1×2)(i×j)は、実施例1では、(1×2)*のように記述する。
【0073】
すなわち、式表現から位置表現式に変換し、それぞれの識別子について、
図5のように、位置表現式と識別子との関係を含む表を作成することで、式表現を既存リレーショナルデータベースのデータに変換できる。したがって、既存のリレーショナルベースの管理システム等の機能を用いて、式表現を処理できるようになる。
【0074】
式表現が第2の括弧”{”、および”}”を含む式表現の場合にも、対応する位置表現を、第1の括弧”(”、および”)”を含む式表現と同様に生成することができる。例えば、式表現A×(B+C×{D+E})+F×{G+H}を位置表現に変換すると、以下のようになる。
<1×1>A+(1×2)<1×1>B+(1×2)<2×1>C+(1×2){2×2}<1×1>D+(1×2){2×2}<2×1>E+<2×1>F+{2×2}<1×1>G+{2×2}<2×1>H
このようにして、第1の括弧と第2の括弧とを組み合わせて位置情報を作成することによって、項の因子が第1の括弧と第2の括弧の組み合わせによる階層的な式表現を含む場合も、一意的に、式表現中の識別子の位置を記述できる。
【0075】
(基本演算)
図6に、式表現を位置表現式に変換する変換関数のフローチャートを例示する。情報処
理装置100は、メモリ12に実行可能に展開されたコンピュータプログラムを実行し、変換関数の処理を実行する。情報処理装置100のCPU13は、位置情報算出部として、
図6の処理を実行する。ここで、変換関数の呼び出しインターフェースは、ret=S(X);と仮定する。ここで、Xは、関数に入力される式表現である。また、retは、変換関数の呼び出し元に引き渡される戻り値である。
【0076】
この処理では、情報処理装置100は、対象の式表現を入力する(S1)。ここで、入力するとは、例えば、メモリ12に記憶された引数Xの値を取得する場合を例示できる。ただし、式表現を外部記憶装置、例えば、ハードディスク上のファイルに格納するようにしてもよい。そして、Xには、式表現を格納したファイルのファイル名を指定するようにしてもよい。また、変換関数の呼び出しインターフェースは、ret=S(ifile、ofile);のように定義し、入力データのファイル(ifile)と、出力データのファイル(ofile)を指定するようにしてもよい。
【0077】
次に、情報処理装置100は、戻り値(ret)=Φ(空)とし、項の順序カウンタi=0を設定する(S2)。項の順序カウンタとは、式表現X中で処理されるそれぞれの識別子が含まれる項の位置のカウンタである。ただし、
図6の処理では、()型の因子、あるいは、{}型の因子の中の式表現についての処理を開始する場合に、カウンタiは、それぞれの()内または{}内の処理開始時点で値に0に設定される。
【0078】
次に、情報処理装置100は、式XがΦ(空)となったか否かを判定する(S3)。式XがΦとなった場合、情報処理装置100は、戻り値retをメモリ12上に出力し、処理を終了する(S18)。
【0079】
次に、情報処理装置100は、式Xから第一項tmを取得するとともに、式Xから第一項tmを削除する(S4)。次に、情報処理装置100は、項の順序カウンタiを+1インクリメントし、因子の順序カウンタj=0を設定する(S5)。
【0080】
次に、情報処理装置100は、S4で取得した第一の項tmの長さが0か否かを判定する(S6)。項tmの長さが0の場合には、情報処理装置100は、処理をS3に戻す。一方、項tmの長さが0でない場合には、情報処理装置100は、項tmから第一因子fctを取得し、項tmから因子fctを削除する(S7)。そして、情報処理装置100は、因子の順序カウンタjを+1インクリメントする(S8)。
【0081】
次に、情報処理装置100は、因子fctが()型か否かを判定する(S9)。()型の因子とは、第1の括弧“()”で囲まれた因子をいう。すでに説明したように、第1の括弧“()”は、項の和、例えば、項の集合を因子にするための演算子として機能する。
【0082】
因子fctが()型の場合、情報処理装置100は、第1の括弧“()”で囲まれた式表現に対して、
図6の変換関数の処理を実行する。例えば、情報処理装置100は、変換関数の再帰呼び出しによって、第1の括弧“()”内の式表現を処理する。そして、情報処理装置100は、再帰呼び出しで処理した結果の値valを取得する(S10)。値valには、第1の括弧“()”内の式表現に対して実行した、位置表現式が格納されている。S10の処理が、着目項中の集合因子の位置に加えて、集合因子中の項の組み合わせ中でのそれぞれの着目する識別子が含まれる因子内着目項の位置と因子内着目項中でのそれぞれの着目する識別子の位置をさらに算出するステップに相当する。
【0083】
次に、情報処理装置100は、現在の位置表現式i×jに、第1の括弧“()”を付与し、(i×j)を生成する。そして、情報処理装置100は、(i×j)とS10で得られた値valとを結合する。この結合は、順序が維持された関係であるので、積と呼ぶ場
合もある。すなわち、情報処理装置100は、(i×j)valを生成し、戻り値retに追加する(S11)。そして、情報処理装置100は、処理をS6に戻す。
【0084】
一方、S9の判定で、因子fctが()型でない場合、情報処理装置100は、因子fctが{}型か否かを判定する(S12)。{}型の因子とは、第2の括弧“{}”で囲まれた因子をいう。すでに説明したように、第2の括弧“{}”は、項の和の並びの順序を維持した状態で因子にするための演算子として機能する。
【0085】
因子fctが{}型の場合、情報処理装置100は、第2の括弧“{}”で囲まれた式表現に対して、
図6の変換関数の処理を実行する。例えば、情報処理装置100は、変換関数の再帰呼び出しによって、第2の括弧“{}”内の式表現を処理する。そして、情報処理装置100は、再帰呼び出しで処理した結果の値valを取得する(S13)。値valには、第2の括弧“{}”内の式表現に対して実行した、位置表現式が格納されている。S13の処理が、着目項中の順序因子の位置に加えて、順序因子中の項の順序中でのそれぞれの着目する識別子が含まれる因子内着目項の位置と因子内着目項中でのそれぞれの着目する識別子の位置をさらに算出するステップに相当する。
【0086】
次に、情報処理装置100は、現在の位置表現式i×jに、第2の括弧“{}”を付与し、{i×j}を生成する。そして、情報処理装置100は、{i×j}とS13で得られた値valとを結合する。この結合は、順序が維持された関係であるので、積と呼ぶ場合もある。すなわち、情報処理装置100は、(i×j)valを生成し、戻り値retに追加する(S14)。そして、情報処理装置100は、処理をS6に戻す。
【0087】
さらに、S12の判定で、因子fctが{}型でない場合、情報処理装置100は、因子fctが識別子か否かを判定する(S15)。S15の判定で、因子fctが識別子である場合、情報処理装置100は、現在の位置表現式i×jに、<>を付与し、<i×j>を生成する。そして、情報処理装置100は、<i×j>と識別子との結合を作成し、戻り値retに追加する(S16)。一方、S15の判定で、因子fctが識別子でない場合、情報処理装置100は、戻り値のエラー値errにエラーコードを設定する(S17)。例えば、エラー値errは、関数内のローカル変数でなく、広域変数、あるいは、共有変数としてメモリ12上に保持するようにすればよい。エラーコードが設定された場合、情報処理装置100は、処理を終了すればよい。
【0088】
ただし、関数の引数として、エラー値errを関数の呼び出し側に戻してもよい。また、例えば、因子fctが()型および{}型のいずれでもない場合、因子fctが識別子であるとして処理してもよい。この場合に、S15の判定は不要となる。
【0089】
以上のように、式表現が正常に処理できた場合には、err=エラー無し(例えば0)、値retに位置表現式が設定され、
図6の処理が終了する。一方、式表現が正常に処理できた場合には、err=エラー値が設定される。なお、
図6のS10およびS13の再帰呼び出しの後も、エラー判定がされるが、説明の簡略化のため、省略した。
【0090】
図7に、式表現a(b+c)+d{e+f}を処理したときの処理例を
図6のS1−S16の各ステップに対応付けて示す。例えば、処理S1では、X=a(b+c)+d{e+f}が入力される。
【0091】
また、処理S4では、引数Xの式表現から、第一項tm=a(b+c)が削除される。また、処理S7では、第一項tmから、第一因子fct=aが削除される。そして、処理S16で位置表現式<1×1>aが生成される。
【0092】
次に、再び、処理S7に戻って、第一項tm=(b+c)から、第一因子fct=(b+c)が削除される。そして、S10において、第一因子fct=(b+c)に再帰呼び出しが実行され、値val=<1×1>b+<2×1>cが生成される。
【0093】
そして、処理S11において、戻り値retにS10の結果の値が結合され、位置表現式は、<1×1>a+(1×2)<1×1>b+(1×2)<2×1>cとなる。
【0094】
さらに、処理S4に戻って、第一項tm=d{e+f}が設定される。そして、同様の処理を繰り返して、S14にて、最終的な戻り値retが作成される。なお、
図7には、示されていないが、その後、S3の判定で、引数Xの式がφとなり、処理が終了する。
【0095】
図8に、位置表現式を式表現に変換する変換関数のフローチャートを例示する。
図8の変換関数は復元関数とも呼ばれる。情報処理装置100は、メモリ12に実行可能に展開されたコンピュータプログラムを実行し、復元関数の処理を実行する。ここで、復元関数の呼び出しインターフェースは、ret=T(X);と仮定する。ここで、Xは、関数に入力される位置表現式である。また、retは、復元関数の呼び出し元に引き渡される戻り値である。情報処理装置100のCPU13は、復元部として、
図8の処理を実行する。
【0096】
この処理では、情報処理装置100は、処理対象の位置表現式を入力する(T1)。次に、情報処理装置100は、戻り値(ret)=Φ(空)を設定する(T2)。
【0097】
次に、情報処理装置100は、式XがΦ(空)となったか否かを判定する(T3)。式XがΦとなった場合、情報処理装置100は、戻り値retをメモリ12上に出力し、処理を終了する(T15)。
【0098】
次に、情報処理装置100は、位置ポインタptを0にセットする(T4)。位置ポインタptは、戻り値retに式表現を設定する際に、現在の設定位置を示すポインタである。
【0099】
次に、情報処理装置100は、式Xから第一項tmを取得するとともに、式Xから第一項tmを削除する(T5)。次に、情報処理装置100は、T5で取得した第一項tmから第一因子fctを取得する(T6)。
【0100】
次に、情報処理装置100は、因子fctが(i×j)型であるか否かを判定する(T7)。因子fctが(i×j)型である場合、情報処理装置100は、戻り値retの式表現において、位置ポインタptの示す位置からi番目の項のj番目の因子の位置に、()型因子を作成する。ここで、i番目の項の位置は、位置ポインタptの示す位置から、i−1個だけ、項の区切りを進めた位置sすなわち、プラス(+)がi−1個並べた先の
位置をいう。また、j番目の因子の位置は、上記i番目の項において、j番目の因子の位置、すなわち、i番目の項の先頭から、j−1個だけ積演算子×を進めた位置をいう。そして、情報処理装置100は、作成した()型因子の()内に位置ポインタをセットする。(T8)。ここで、「位置ポインタptがセットされる()型因子の()内位置」とは、戻り値retの式表現中の第1の括弧“()”または第2の括弧“{}”で定義される深さ位置である。つまり、位置ポインタptは、現在、どの括弧内の式表現が復元中であるかを示す。その後、情報処理装置100は、処理をT6に戻す。
【0101】
なお、T8の処理で、すでに、位置ポインタptの示す位置からi番目の項のj番目の因子の位置に、()型因子が存在する場合には、情報処理装置100がさらに()型因子を作成することはしない。すなわち、情報処理装置100は、既存の()型因子内に位置
ポインタを設定して、制御をT6に戻す。
【0102】
一方、T7の判定で、因子fctが(i×j)型でない場合、情報処理装置100は、因子fctが{i×j}型であるか否かを判定する(T9)。因子fctが{i×j}型である場合、情報処理装置100は、戻り値retの式表現において、位置ポインタptの示す位置から数えて、i番目の項のj番目の因子の位置に、{}型因子を作成する。そして、情報処理装置100は、作成した{}型因子の{}内にポインタをセットする。(T10)。その後、情報処理装置100は、処理をT6に戻す。
【0103】
なお、T10の処理で、すでに、位置ポインタptの示す位置からi番目の項のj番目の因子の位置に、{}型因子が存在する場合には、情報処理装置100がさらに{}型因子を作成することはしない。すなわち、情報処理装置100は、既存の{}型因子内に位置ポインタを設定して、制御をT6に戻す。
【0104】
さらに、T9の判定で、因子fctが{i×j}型でない場合、情報処理装置100は、因子fctが<i×j>型であるか否かを判定する(T11)。因子fctが<i×j>型である場合、情報処理装置100は、項tmから識別子を取得する(T12)。そして、情報処理装置100は、戻り値retの式表現において、位置ポインタptの示す位置から数えて、i番目の項のj番目の因子の位置に、識別子を設定する(T13)。
【0105】
また、T11の判定で、因子fctが<i×j>型でない場合、情報処理装置100は、エラーコードerrに、エラーコードの値を設定し、処理を終了する(T14)。エラーコードerrの定義、および格納先は、
図6の場合と同様である。
【0106】
図9に、位置表現式<1×1>a+(1×2)<1×1>b+(1×2)<2×1>c+<2×1>d+{2×2}<1×1>e+{2×2}<2×1>fを処理したときの処理例を
図8のT1−S13の各ステップに対応付けて示す。例えば、処理T1では、X=<1×1>a+(1×2)<1×1>b+(1×2)<2×1>c+<2×1>d+{2×2}<1×1>e+{2×2}<2×1>fが入力される。
【0107】
また、処理T5では、引数Xの式表現から、第一項tm=<1×1>aが削除される。また、処理T6では、第一項tmから、第一因子fct=<1×1>が削除される。そして、処理T13で、位置表現式因子fct=<1×1>に対応する、第1番目の項の第1番目の因子として、式表現aが生成される。
【0108】
次に、判定T3、処理T4を経て処理T5に戻って、引数Xの式表現から、第一項tm=(1×2)<1×1>bが削除される。さらに、処理T6では、第一項tmから、第一因子fct=(1×2)が削除される。
【0109】
次に、処理T8において、第一因子fct=(1×2)にしたがって、第1項第2因子に()型因子が作成され、戻り値ret=a()が設定される。さらに、処理T6に戻って、第一項tmから、第一因子fct=<1×1>が削除され、X=bが残る。その結果、処理T13において、()型因子内の第1項、第1因子に識別子bが設定される。その結果、戻り値ret=a(b)が設定される。
【0110】
次に、判定T3、処理T4を経て、処理T5に戻って、引数Xの式表現から、第一項tm=(1×2)<2×1>cが削除される。また、処理T6では、第一項tmから、第一因子fct=(1×2)が削除される。そして、処理は、T7およびT8に進む。ただし、すでに、(1×2)に対応する因子が生成されているので、処理T8では、新たな()型因子は生成されない。そして、処理T6に戻って、第一項tmから、第一因子fct=
<2×1>が削除され、X=cが残る。その結果、処理T13において、戻り値ret=a(b+c)が設定される。
【0111】
次に、判定T3、処理T4を経て、処理T5に戻って、引数Xの式表現から、第一項tm=<2×1>dが削除される。さらに、処理T6では、第一項tmから、第一因子fct=<2×1>が削除され、X=dが残る。その結果、処理T13において、戻り値ret=a(b+c)+dが設定される。
【0112】
次に、処理T5に戻って、引数Xの式表現から、第一項tm={2×2}<1×1>eが削除される。また、処理T6では、第一項tmから、第一因子fct={2×2}が削除される。次に、処理T10において、第一因子fct=(1×2)から戻り値ret=a(b+c)+d{}が設定される。さらに、処理T6に戻って、第一項tmから、第一因子fct=<1×1>が削除され、X=eが残る。その結果、処理T13において、戻り値ret=a(b+c)+d{e}が設定される。
【0113】
次に、処理T5に戻って、引数Xの式表現から、第一項tm={2×2}<2×1>fが削除される。その結果、X=φとなる。また、処理T6では、第一項tmから、第一因子fct={2×2}が削除される。
【0114】
そして、処理は、T9およびT10に進む。ただし、すでに、{1×2}に対応する因子が生成されているので、処理T10では、新たな{}型因子は生成されない。そして、処理T6に戻って、第一項tmから、第一因子fct=<2×1>が削除され、X=fが残る。その結果、処理T13において、戻り値ret=a(b+c)+d{e+f}が設定される。
【0115】
(処理例1)
処理例1として、
図10に示すデータベースに対する処理を説明する。
図10のデータベースは、例えば、社員マスタと呼ばれる。
図10の表の各行がレコードに相当する。ただし、
図10で1行目は、説明行であり、実際のレコードではない。
図10で、社員マスタの各レコードは、コード、氏名、年齢、所属の各フィールドを有する。ここで、コード、氏名、年齢、所属は、各フィールドの属性ということができる。また、各フィールドに格納されるデータは値ということができる。例えば、社員名のフィールドに、”社員A”が格納されているレコードを取得する場合、データベース管理システムに対して、社員名=社員Aという指定を行い、検索を実行する。この指定は、属性=値による指定ということができる。
【0116】
図10のデータベースは、例えば、以下の式表現で記述できる。
【0117】
社員×(社員コード×{ε+社員名+所属+年齢}×(K10×{ε+社員A+土木+30歳}+K11×{ε+社員B+建築+29歳}+・・・+K20×{ε+社員P+土木+30歳}+・・・+K30×{ε+社員X+建築+32歳}+・・・))
ただし、”・・・”は、省略を表す。上記式表現を位置表現で記述すると以下のようになる。ただし、数1では、社員A、および社員B以外の位置表現式は、省略されている。[数1]
<1×1>社員+(1×2)<1×1>社員コード+(1×2)[1×2]<1×1>+ (1×2)[1×2]<2×1>社員名+(1×2)[1×2]<3×1>所属+(1×2)[1×2]<4×1>年齢+(1×2)(1×3)<1×1>K10+(1×2)(1×3)[1×2]<1×1>+ (1×2)(1×3)[1×2]<2×1>社員A+(1×2)(1×3)[1×2]<3×1>土木+ (1×2)(1×3)[1×2]<4×1>30歳+(1×2)(1×3)<2×1>K11+(1×2)(1×3)[2×2]<1×1>+ (1×2)(1×3)[2×2]<2×1>社員B+(1×2)(1×3)[2×2]<3×1>建築+ (1×2)(1×3)[2×2]<4×1>2
9歳+・・・
図11に、数1で例示される式表現をリレーショナルデータベース(以下、RDBという)に格納したときの表を例示する。
図11では、第1行目は、説明行であり、実際のデータベースのレコードではない。
図11の第2行以下にデータベースのレコードが例示されている。
図11のデータベースで、それぞれのレコードは、第1のフィールドに絶対位置情報、第2列のフィールドに値を格納する。ここで、絶対位置情報は、それぞれの識別子の位置表現式である。また、値は、絶対位置情報のフィールドに格納されたそれぞれの位置表現式で特定される、式表現中の位置での識別子である。したがって、数1ような式表現から、それぞれの識別子の位置表現式を求めることにより、通常のRDB管理システムを利用して、位置表現式と、その位置表現式に対応する識別子との関係を取得できる。
【0118】
ここで、例えば、「属性=値」の指定例として、社員名=社員Aが指定され、その社員Aの所属を取得するには以下のような手順で行えばよい。
【0119】
(1)値が”社員名”の絶対位置情報を取得する。
すなわち、RDB機能を利用して、値=“社員名”の絶対位置情報を検索(select 絶
対位置情報 where 値=’社員名’) すると、
図12のように、”(1×2)[1×2]<2×1>”という位置表現式と、”社員名”という識別子が取得できる。
【0120】
(2)値が”社員A”の絶対位置情報を取得する。
【0121】
(2−1)次に、(1)で取得した位置表現式”(1×2)[1×2]<2×1>”から、“(1×2)(1×3)[*×2]<2×1>”を作成する。ここで、”(1×2)(1×3)[*×2]<2×1>”のうちの”(1×2)(1×3)”は、位置表現式”(1×2)[1×2]”の右側に隣接する3番目の因子であって()型の因子を示している。なお、”(1×2)[1×2]”は、1番目の項中の2番目の因子であって、()型の因子中で、1番目の項の2番目の因子であって{}型のものを示す。すなわち、{ε+社員名+所属+年齢}の因子である。
【0122】
また、”(1×2)(1×3)[*×2]”は、属性の因子{ε+社員名+所属+年齢}に隣接する()型の因子内での任意の項(*)の2番目の因子であって、かつ、{}型の因子を示す
。すなわち、”[*×2]”は、{ε+社員A+土木+30歳}+{ε+社員B+建築+29歳}・・・の並びを示す。
【0123】
さらに、”(1×2)(1×3)[*×2]<2×1>”は、{ε+社員A+土木+30歳}+{ε+社員B+建築+29歳}・・・の並びの中の{}内の第2項第1因子を示す。
図13は、社員で特定されるセルID、社員コードで例示されるキー属性、社員名を含む属性の因子、および属性に対応する値の因子を含む式表現と位置表現式との関係を例示する図である。
【0124】
そして、RDB機能で、絶対位置情報=“(1×2)(1×3)[1×*]<2×1>”かつ値=“社員A”で検索すると、
図14のレコード、すなわち、“(1×2)(1×3)[1×2]<2×1>”という位置表現式と、その位置表現式の位置での識別子”社員A”が得られる。
【0125】
(2−2)このようにして得られた”(1×2)(1×3)[1×2]<2×1>”から関連情報を取得するために、“(1×2)(1×3)[1×2]*”、“(1×2)(1×3)<1×1>”、“(1×2){1×2}*
”、“(1×2)<1×1>”、”<1×1>” を作成し、それらから同様に検索を行うと、
図15
のレコードが得られる。
図15は、社員名=社員Aの指定から得られた関連情報を例示する。
【0126】
ここで、“(1×2)(1×3)[1×2]*”は、識別子”社員A”が含まれる{}内のすべての識別子を特定する。その結果、”社員A”、”土木”、”30歳”が得られる。“(1×2)(1×3)<1×1>”は、識別子”社員A”が含まれる{}の左側に隣接する識別子K10を特
定する。“(1×2){1×2}*”は、“(1×2)(1×3)”の左側に隣接する{}型因子中の
すべての識別子、すなわち、属性の列{ε+社員名+所属+年齢}を特定する。また、“(1×2)<1×1>”は、キー属性である”社員コード”という識別子が該当し、<1×1>には、”社員”という識別子が該当する。したがって、社員Aに関連する情報を
図11に示すデータベースから取得できる。
【0127】
図16に、以上の処理を実行するアプリケーションプログラムの処理例を示す。ここでは、数1の式表現が、
図6に示した変換関数によって、
図11のデータベースのレコードに変換されているとして説明する。この処理では、情報処理装置100は、属性=値の関係、例えば、社員名=社員Aについて、関連情報を取得する旨の指定を受け付ける(U1)。情報処理装置100のCPU12は、識別子の指定を受け付ける手段として、U1の処理を実行する。
【0128】
すると、情報処理装置100は、指定された属性に対応する位置表現式を取得する(U2)。例えば、
図12に例示したように、属性”社員名”に対して、”(1×2)[1×2]<2×1>”という位置表現式を取得する。情報処理装置100のCPU12は、指定識別子の位置表現式を取得する手段として、U2の処理を実行する。
【0129】
次に、情報処理装置100は、指定された属性を含む{}型の因子に隣接する()型の因子内で、{}型の因子を含む項、およびその{}型の因子内での属性の位置を指定する位置表現式を作成する(U3)。例えば、情報処理装置100は、位置表現式に対して、“(1×2)(1×3)[*×2]<2×1>”を作成する。U3の処理は、
図13に例示したように、データベースの構造に対応する式表現のスキーム、例えば、セル空間の定義である、社員×(社員コード×{ε+社員名+所属+年齢}(・・・から導出可能である。すなわち、セル空間のキー属性(例えば、社員コード)および属性の並び(例えば、{ε+社員名+所属+年齢})の右側に隣接する()型の因子から、項の並びを抽出し、それぞれの項の第2因子である{}型の因子を抽出すればよい。しかしながら、指定された属性を含む{}型の因子に隣接する()型の因子内で、{}型の因子を含む項、およびその{}型の因子内での属性の位置を指定する位置表現式の入力をユーザのマニュアル入力としてもよい。例えば、テキスト入力インターフェースからユーザが位置表現式を入力してもよい。
【0130】
次に、情報処理装置100は、位置表現式を検索キーにしてデータベースを検索し、指定された属性値を含むレコードを取得する(U4)。そして、情報処理装置100は、検索されたレコードの位置表現式を基に、属性値を共通の要素として含む{}型の因子に含まれる値、その{}型の因子の上位の値、およびそれらの値に対応する位置表現式を取得する(U5)。例えば、処理U4で取得された{}型の因子を含む項中の{}型因子で、属性”社員名”に対応する値が”社員A”であるものを抽出する。また、その{}型の因子の上位の値、すなわち、{}型因子に隣接する識別子を取得する。また、情報処理装置100は、式表現のキー属性、属性因子、およびセル空間のIDを取得する。さらに、取得した値に対応する位置表現式をデータベースから取得する。例えば、
図15に示したように、社員Aの関連情報を取得する。
【0131】
そして、情報処理装置100は、U5の処理で取得した情報に、復元関数(
図8参照)を実行する(U6)。以上の処理によって、属性=属性値、例えば、社員名=社員Aについて関連情報を式表現の形式で取得する。情報処理装置100のCPU12は、関連識別子を取得する手段として、U3−U6の処理を実行する。そして、情報処理装置100は得られた式表現を、インターフェース16を通じて、例えば、出力部14に出力する(U7)。
【0132】
(処理例2)
数1において、所属が土木の社員の情報は、以下のように検索できる。
【0133】
(1)値が”所属”の属性(絶対位置情報)を取得する。
この処理は、上記処理例1の(1)で”社員名”に代えて、”所属”を指定するものであり、処理の手順は、処理例1と同様である。
【0134】
(2)値が”土木”の属性(絶対位置情報)を取得する。
この処理では、上記処理例1の代わりに、値=”土木”として、処理例1との(2)と同様の処理を実行すると、
図17のようなレコードが取得される。そして、
図17で得られたそれぞれの位置表現(1×2)(1×3)[1×2]<3×1>、(1×2)(1×3)[10×2]<3×1>、(1
×2)(1×3)[20×2]<3×1>から、関連情報を取得するための位置表現(1×2)(1×3)[1×2]*、(1×2)(1×3)[10×2]*、(1×2)(1×3)[20×2]*を作成し、RDB機能により検索し、該当する{}型因子の位置表現を取得すればよい。また、取得した{}型の因子の上位の値、すなわち、{}型因子に隣接する識別子を取得すればよい。
【0135】
すなわち、処理例2の場合には、U4の処理で検索される{}型の因子の数が複数個である点を除いて、処理手順は、
図16と同様である。すなわち、U5の処理で該当する数の{}型因子の位置表現を取得すればよい。以上の処理によって、土木に所属する社員(社員コードK10、K20、およびK30)の関連情報が取得される。
【0136】
(処理例3)
例えば、社員Bの所属を建築から営業に変更するには、以下の手順となる。すなわち、情報処理装置100は、処理例1の(1)(2)と同様の手順によって、社員Bの情報を取得する。
図18に、社員Bの関連情報を例示する。
【0137】
情報処理装置100は、
図18のレコードのうち、変更する属性である「所属」のレコードから、<3×1>を取得する。そして、情報処理装置は、絶対位置情報=“*<3×1>”で
図18のレコードを検索すると、
図19のレコードが得られる。この処理は、
図18のように社員Bに絞り込まれた情報から、RDBの機能を用いて、所属に対応する<3×1>の絶対位置情報によって、さらに絞り込む処理に相当する。
【0138】
処理例3では、
図16の処理によって取得された社員Bに関連する情報(
図18)から、さらに、変更対象の識別子を以下のように取得する。すなわち、変更対象の識別子が、式表現上で属性列{ε+社員名+所属+年齢}中の”所属”に対応する識別子である場合、まず、RDB中で、”所属”に対応する絶対位置情報(1×2)[1×2]<3×1>を取得する。そして、属性列に相当する{}型の因子の中の位置を示す位置表現式<3×1>を求める。さらに、”所属”に対応する絶対位置情報(1×2)[1×2]<3×1>のうち、{}型の因子の中の位置を示す位置表現式<3×1>以外の位置表現式を任意の位置を示す*に変更し、絶対位置
情報*<3×1>を作成する。そして、社員Bについて絞り込まれた情報(
図18)に対して、絶対位置情報*<3×1>を用いて、さらに絞り込み検索する。このようにして、
図19に示す情報が得られる。そこで、得られたレコードから、識別子”建築”を”営業”に変更すればよい。その結果、RDBには、
図20のようなレコードが保存される。
【0139】
(処理例4)
処理例3を式表現に対する商演算で実現する処理例を説明する。ここでは、まず、商演算について説明する。
【0140】
<商演算処理>
商演算処理は、式表現を記述する集合から、指定された因子(識別子を含む)を含む式表現(項、あるいは要素)と、そのような因子を含まない式表現とに分離する処理である
。商演算処理のアプリケーションインターフェースは、例えば、戻り値=divide(商演算
される式表現、商演算する因子、商の式表現、剰余の式表現);のように定義できる。本
実施形態で、商演算は、“商演算する因子”を含む式表現を取り出す処理となる。そのため、商演算する因子のことを、同値関係を指定する因子ともいう。
【0141】
図21Aは、商演算処理(サブルーチン1)を実行する処理のフローを例示する。サブルーチン1は、商演算される式表現である式1、商演算する因子を入力され、商の式表現である式2を出力する。なお、
図22Aは、商演算のうち、剰余を求める処理(サブルーチン2)を例示する。
【0142】
まずステップ301では、商演算処理が実行される前の所定の表現形式によって表現される式1(“商演算される式表現”)、および商演算する因子(これを同値関係示す因子ともいう)pが入力される。以下、数14により表現される対象情報が入力された場合について説明する。また、1を商演算する因子(同値関係を示す因子p)と設定する。
[数3]
cell(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}));
次に、ステップS302では、CPU13は、演算後の商(商項ともいう、ここでは、項2で表す)を初期化する。このとき、項2の値は、Φ(空、または0)である。
【0143】
次に、ステップS303では、CPU13は、式1の長さが0であるか否かを判定する。式1の長さが0である場合、CPU13は、サブルーチン1の処理を終了する。
【0144】
一方、ステップS303の判定において、式1の長さが0でなかった場合、CPU13は、ステップ304に処理を進める。そして、CPU13は、式1から始めの項(以下、項1という)を取得する。ここで、項1は、数3の全体である。さらに、ステップS305において、CPU13は、式1から項1を削除する。
【0145】
次に、ステップS306において、CPU13は、項1が因子p(ここでは、“1”)を含んでいるか否かを判定する。ここで、因子pを含んでいるとは、項1の因子としては、あるいは、項1の括弧(第1の括弧“()”または第2の括弧“{}”)で括られた因子内の項のいずれかに、因子pを含むことをいう。すなわち、項1の式表現中に因子pが含まれるか否かを判定する。項1が因子pを含んでいない場合、CPU13は、項1を空とし(S307)、処理をS303に戻す。
【0146】
一方、ステップS306の判定において、項1が因子pを含んでいる場合、CPU13は、処理をS308に進める。そして、CPU13は、項3を初期化し、空とする。ここで、項3は、始めの項である項1の商演算結果を格納する変数(メモリ12の領域)である。ここでは、数3の構成から、項1に因子p(=1)が含まれていると判定される。
【0147】
そして、ステップS309において、CPU13は、項1の長さが0であるか否かを判定する(S309)。項1の長さが0でない場合、ステップS310において、CPU13は、項1から始めの因子(以下、因子1という)を取得する。数3の構成から、因子“cell”が取得される。そして、ステップS311において、CPU13は、項1から因子1を削除する。
【0148】
次に、ステップS312において、CPU13は、因子1に商演算する因子pが含まれ、かつ、因子1が(第1の括弧“()”または第2の括弧“{}”)によって形成された因子であるとき、その括弧内の式を式1に設定し、サブルーチン1を再帰呼び出しする。ここで、因子1に商演算する因子pが含まれ、かつ、因子1が括弧によって形成された因
子であるとは、括弧内に、項あるいは因子としてpが含まれる場合である。なお、括弧外に、因子pが含まれる場合には、CPU13は、処理S313に制御を進める。そして、その再帰呼び出しによる処理結果を因子1とする。この処理によって、商演算される式中で、項に“()”による因子を含む場合は、その項は、()内の式が商演算されることになる。数3の構成の場合、“cell”が因子1の場合には、S312は、実行されない。また、cellの次の因子(id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2}))が、因子1の場合には、S312により、再帰呼び出しが実行されることになる。その結果、式表現中に因子p(この例では、1)を含む因子が抽出されることになる。
【0149】
さらに、ステップS313によって、CPU13は、項3に対し因子1を積演算し、結果を項3とする。この処理によって、因子1に商演算される因子pが含まれる場合、そのまま項3に積演算されることになる。また、因子1が()の形式の因子の場合に、()内から因子pを含む項が取り出されることになる。そして、CPU13は、処理をS309に戻す。
【0150】
ステップS309の判定で、項1の長さが0となった場合、CPU13は、処理をステップS314に進める。そして、CPU13は、項2(商項)に対して、得られている項3を和演算する。さらに、ステップS315の処理で、CPU13は、項2を商演算後の式である式2に設定する。その後、CPU13は、処理をS302に戻す。
【0151】
そして、S302の判定で、式1の長さが0になると、CPU13は、サブルーチン1の処理を終了する。このような処理により、式2に、以下の数4の式表現が出力され、アプリケーションプログラムに引き渡される。なお、S307において、項1が{}内の項のとき、零元を項2に加算するようにしてもよい。この場合には、例えば、{a×b+c+d}を因子aで商演算すると、{a×b++}のように、因子aを含まない項を零元とする式が商演算後の式として、出力される。
[数4]
cell×id{ε+A+B+C}×1{ε+a1+b1+c1};
図21Bおよび
図21Cに、数3の式表現に対して、サブルーチン1が実行された場合の式1、項1、項2、項3、因子1、および式2の変化を示す。
図21Bおよび
図21Cの第1行目は、各列の要素、すなわち、
図21A中の該当する処理を示す番号、式1、項1、項、項3、因子1、および式2を示している。第2行以下の各行は、一連の処理ステップであり、
図21B上から下へ、さらに、
図21Cの上から下へ実行される。
【0152】
そして、まず、ステップS301で、共通関数へのパラメータを介して、式1である数3が入力され、メモリ12に保持される。
【0153】
項1、因子1および項3に着目すると、これらのうち、“cell”および、id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})が順次サブルーチン1で処理されることが分かる。
【0154】
さらに、id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})が因子1としてS312で処理されるときに、再帰呼び出しが発生する。そして、同様に、“id”、{ε+A+B+C}、および(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})がサブルーチン1の再帰呼び出し1で処理される。
【0155】
さらに、(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})が、S312で処理されるときに、再帰呼び出し2が発生する。そして、同様に、1{ε+a1+b1+c1}については、商演算する因子“1“が含まれているので、S306で、YESの
判定がなされる。そして、S313によって、1と{ε+a1+b1+c1}とが項3に積演算される。
【0156】
一方、2{ε+a2+b2+c2}については、商演算する因子“1”が含まれていないので、S306で、NOの判定がなされる。その結果、これらの因子は、S307において、Φに設定され、削除される。その結果、再帰呼び出し2で商演算の結果、式2として出力されるのは、1{ε+a1+b1+c1}となる。
【0157】
さらに、再帰呼び出し1では、S313の処理で、項3に積演算されていたid{ε+A+B+C}と再帰呼び出し2での商演算の結果である1{ε+a1+b1+c1}とが、積演算され、id{ε+A+B+C}(1{ε+a1+b1+c1})が、式2として出力される。
【0158】
さらに、そして、再帰呼び出し1の前に、項3に積演算されていたcellと、再帰呼び出し1による商演算の結果が積演算され、数4が式2として、最終的に出力されることになる。
【0159】
次に、
図22Aにより、剰余を求める処理(サブルーチン2)を説明する。サブルーチン1を実行するCPU13が本発明の剰余演算部に相当する。サブルーチン2は、商演算される式である式1、商演算する因子pを入力され、剰余の式3を出力する。
【0160】
まずステップ321では、商演算処理が実行される前の所定の表現形式によって表現される式1(“商演算される式”)、および商演算する因子(同値関係示す因子p)が入力される。以下、
図21Aの場合と同様、数3により表現される対象情報が入力された場合について説明する。また、1を商演算する因子(同値関係p)と設定する。
【0161】
次に、ステップS322では、CPU13は、演算後の式(ここでは、式3と呼ぶ)を初期化する。このとき、式3の値は、Φ(空、または0)になる。
【0162】
次に、ステップS323では、CPU13は、式1の長さが0であるか否かを判定する。式1の長さが0である場合、CPU13は、サブルーチン1の処理を終了する。
【0163】
一方、ステップS323の判定において、式1の長さが0でなかった場合、CPU13は、ステップ324に処理を進める。そして、CPU13は、式1から始めの項(以下、項1という)を取得する。さらに、ステップS325において、CPU13は、式1から項1を削除する。
【0164】
次に、ステップS326において、CPU13は、演算後の項(以下、項4と呼ぶ)を初期化する。このとき、項4の値は、Φ(空、または0)になる。
【0165】
次に、ステップS327において、CPU13は、項1の長さが0であるか否かを判定する。そして、項1の長さが0でない場合、CPU13は、ステップS328に処理を進める。そして、ステップS328において、CPU1は、項1から始めの因子(因子1)を取得する。さらに、ステップS329において、CPU13は、項1から因子1を削除する。
【0166】
次に、ステップS329において、CPU13は、因子1が因子pと等しいか否かを判定する。そして因子1が因子pと等しい場合、ステップS331において、CPU13は、因子1をΦ(空、または0)にする。
【0167】
次に、ステップS332において、CPU13は、因子1が第1の括弧“(”と“)”とによって形成された因子であるとき、その括弧内の式を式1に設定し、サブルーチン2を再帰呼び出しする。そして、その再帰呼び出しによる処理結果を因子1とする。この処理によって、商演算される式中で、“()”による因子を含む場合は、その因子は、()がはずされ、内の式から剰余(すなわち、因子pを含まない項)が抽出されることになる。
【0168】
さらに、ステップS333によって、CPU13は、項4に対し因子1を積演算し、結果を項4とする。この処理によって、因子1が商演算される因子pと異なる場合に、そのまま項3に積演算されることになる。また、因子1が()の形式の因子の場合に、()内から因子pを含まない項が取り出されることになる。そして、CPU13は、処理をS327に戻す。
【0169】
ステップS327の判定で、項1の長さが0となった場合、CPU13は、処理をステップS334に進める。そして、CPU13は、式3(剰余項)に対して、得られている項4を和演算する。その後、CPU13は、処理をS323に戻す。
【0170】
そして、S323の判定で、式1の長さが0になると、CPU13は、サブルーチン2の処理を終了する。このような処理により、式3に、以下の数5の式表現が剰余として出力され、アプリケーションプログラムに引き渡される。
[数5]
cell(id{ε+A+B+C}(Φ+2{ε+a2+b2+c2}));
図22Bおよび
図22Cに、数3の式表現に対して、サブルーチン2が実行された場合の式1、項1、項4、因子1、および式3の変化を示す。
図22Bおよび
図22Cの第1行目は、各列の要素、すなわち、
図22A中の該当する処理を示す番号、式1、項1、項、項4、因子1、および式3を示している。第2行以下の各行は、一連の処理ステップであり、
図22Bの表の上から下へ、さらに、
図22Cの表の上から下へ実行される。
【0171】
そして、まず、ステップS321で、共通関数へのパラメータを介して、式1である数3が入力され、メモリ12に保持される。
【0172】
項1、因子1および項4に着目すると、これらのうち、“cell”および、id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})が順次サブルーチン2で処理されることが分かる。
【0173】
さらに、id{ε+A+B+C}(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})が因子1としてS332で処理されるときに、再帰呼び出しが発生する。そして、同様に、“id”、{ε+A+B+C}、および(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})がサブルーチン1の再帰呼び出し1で処理される。
【0174】
さらに、(1{ε+a1+b1+c1}+2{ε+a2+b2+c2})が、S332で処理されるときに、再帰呼び出し2が発生する。そして、1{ε+a1+b1+c1}については、商演算する因子“1”が含まれているので、S330で、YESの判定がなされる。そして、S331によって、因子1にΦに設定され、因子1を含む項1全体がΦとなり、削除される。
【0175】
一方、2{ε+a2+b2+c2}については、商演算する因子“1”が含まれていないので、S330で、それぞれの因子1について、NOの判定がなされる。その結果、これらの因子は、S333において、項4に積演算される。その結果、再帰呼び出し2の剰余演算の結果、式3として出力されるのは、2{Φ+a1+b1+c1}となる。
【0176】
さらに、再帰呼び出し1では、S333の処理で、項4に積演算されていたid{ε+A+B+C}と再帰呼び出し2での商演算の結果である2{Φ+a1+b1+c1}とが、積演算され、id{ε+A+B+C}(2{Φ+a1+b1+c1})が、式3として出力される。
【0177】
さらに、そして、再帰呼び出し1の前に、項4に積演算されていたcellと、再帰呼び出し1による商演算の結果が積演算され、数5が式3として、最終的に出力されることになる。
【0178】
<商演算を用いて、式表現の値を取得し、変更する例>
商演算を用いて、社員Bの所属を建築から営業に変更するには、以下の手順となる。すなわち、処理例1の(1)(2)と同様の手順によって、社員Bの情報を取得する。その結果、社員Bの関連情報の式表現として、以下の数6が得られる。
[数6]
社員×(社員コード×{ε+社員名+所属+年齢}×(K10×{ε+社員A+土木+30歳}));
さらに、数6の式表現を識別子”所属”で商演算することにより、以下の数7の式表現を取得する。
[数7]
社員×(社員コード×{++所属+}×(+K11×{++建築+}));
そして、属性=”所属”に対応する値=”建築”を”営業” に修正する。その結果、
以下の数8が得られる。
[数8]
社員×(社員コード×{++所属+}×(+K11×{++営業+}));
修正された式表現を絶対位置情報へ変換して、以下の変更部分をRDBに上書きする。RDBには、
図20に示したレコードが出力される。
【0179】
(処理例5)
図23に、ツリー構造を例示する。例えば、A=実行予算、B=発注1、C=発注2、D=検収11、E=検収12、F=検収21、G=検収22である。
【0180】
さらに、例えば、D〜Gのそれぞれは、さらに、検収進捗状況を示す識別子を付与するようにしてもよい。D=検収11×Y年M月D1日、E=検収12×Y年M月D2日、F=検収21×未完、G=検収22×Y年M年D日等である。さらに、D〜Gのそれぞれは、さらに、検収対象額を含むようにしてもよい。例えば、D=検収11×(Y年M月D1日、MMMMMM円)等である。
【0181】
ここで、B(例えば、発注1)について、部分集合(発注1に関連する予算の執行状況)を取得する処理は以下の通りである。まず、
図23のツリー構造は、次の式表現で記述できる。
[数9]A×(B×(D+E)+C×(F+G))
情報処理装置100は、数9の式表現を
図6の変換関数で位置表現式に変換し、RDBに格納する。すると、
図24のようなデータベースのレコードが得られる。
【0182】
さらに、情報処理装置100は、値=”B”でRDB機能を用いて検索し、
図25を得る。さらに、情報処理装置100は、識別子”B”の位置表現式(1×2)<1×1>から、ツリー構造の下位方向(実施例1の場合、式表現の右方向)に隣接する要素を検索するための位置表現式(1×2)(1×2)*を生成する。(1×2)(1×2)は、(1×2)<1×1>に対して、右方向
に隣接する()型の因子を表す。すなわち、識別子”B”の位置表現式(1×2)<1×1>から
、ツリー構造の下位方向に隣接する要素を検索するための位置表現式を生成できる。
【0183】
そして、情報処理装置100は、位置表現式(1×2)(1×2)*によって、
図24のデータ
ベースを検索し、
図26のレコードを得る。さらに、情報処理装置100は、識別子”B”の位置表現式(1×2)<1×1>から、ツリー構造の上位方向(実施例1の場合、式表現の左方向)に隣接する要素を検索するための位置表現式<1×1>を生成する。さらに、情報処理装置100は、位置表現式<1×1>によって、
図21のデータベースを検索し、
図27のレコードを得る。
【0184】
そして、
図24−
図27から得られた位置表現式を基に、識別子B、D、E、およびAを組み合わせて、
図8の復元関数を実行することによって、情報処理装置100は、B(例えば、発注1)について、部分集合A×(B×(D+E))を得る。したがって、例えば、DあるいはEが、さらに、検収の状況、検収額等を含む式表現である場合には、情報処理装置100は、B(例えば、発注1)に関する予算の執行状況を取得できる。
【0185】
なお、得られた予算の執行状況を更新する手順は、処理例3、処理例4の社員Bの所属の変更手順と同様である。すなわち、情報処理装置100は、処理例3、処理例4と同様の手順で、”未完”を検収日の日付に変更すればよい。また、情報処理装置100は、処理例3、処理例4と同様の手順で、検収対象額を設定すればよい。
【0186】
以上述べたように、本実施例の情報処理装置100は、式表現を一旦、位置表現式(絶対位置情報ともいう)に変換し、式表現と位置表現式との関係を例えば、RDBのような既存のデータベースに格納する。その結果、例えば、既存のデータベースの機能を用いて、式表現に基づく位置表現式の検索、あるいは、位置表現式に基づく式表現の検索を実行できる。
【0187】
したがって、例えば、データベースで、特定の属性に対する値の指定、例えば、属性”社員”に対する値”社員A”のような指定を受け付け、社員Aに関連する情報を取得することができる。社員Aに関連する情報とは、例えば、{ε+社員A+土木+30歳}のような式表現であり、”社員A”と同一の{}型因子(属性因子ともいう)に含まれる情報として例示できる。
【0188】
なお、処理例3のように、属性”所属”に対する値”土木”が指定された場合も、”土木”の関連情報は、”土木”と同一の{}型因子に含まれる情報ということができる。ただし、{}型因子が複数検索される結果となる。
【0189】
さらに、本情報処理装置100は、処理例3のように、位置表現式を基に取得した式表現を書き換え、データベースの機能を用いてデータベースに格納することにより、究極的には、式表現を書き換えることができる。その場合に、式表現から、特定の識別子に関連する情報に式表現を絞り込むために、式表現の商演算を用いてもよい。
【0190】
さらに、情報処理装置100は、RDBのような表形式に限定されず、
図23のようにツリー構造を式表現で記述しておき、式表現を一旦、位置表現式に変換しデータベースに格納することで、既存のデータベースの機能を用いて、式表現に基づく位置表現式の検索、あるいは、位置表現式に基づく式表現の検索を実行できる。ツリー構造の場合には、識別子に関連する情報は、指定された識別子に対して、ツリー構造の枝または葉に属する情報として例示できる。ただし、識別子に関連する情報は、指定された識別子に対して、ツリー構造の根(ルート)側に位置する情報としてもよい。
【0191】
さらに、式表現から、指定された識別子、あるいは因子で商演算した結果を識別子に関
連する情報としてもよい。また、式表現から、指定された識別子、あるいは因子で剰余演算した結果を識別子に関連する情報としてもよい。
【0192】
(その他の変形例)
実施例1で述べた、式表現を示す記号、位置表現式を示す記号は、例である。したがって、例えば、和演算子、積演算子、集合因子構成演算子、順序因子構成演算子に代えて、他の記号を用いてもよい。また、位置表現<i×j>(i×j){i×j}に代えて、他の記号を用いてもよい。
【0193】
また、実施例1で述べた式表現、および、位置表現式の適用対象は、RDB、ツリー構造に限定される訳ではない。例えば、トポロジー空間の情報、セル空間の情報、接着空間の情報に対して、実施例1で説明した処理を適用し、アプリケーションを提供すればよい。
【0194】
また、アプリケーションは、式表現で含まれる識別子に関連する関連情報法を取得する処理に限定される訳ではない。実施例1に示した情報処理装置100の機能は、これまで提案されていなかった新たなデータベースのデータ構造と、データ処理の手順を例示している。したがって、実施例1の技術は、利用者が取り扱う事物、組織、人などに関する現実世界の情報、あるいは利用者が取り扱う概念などのコンピュータ上での処理に適用できる。そのようなコンピュータ上の処理としては、例えば、事物、組織、人などに関する現実世界の情報、あるいは概念をコンピュータ上の情報として記述し、メモリ12等の主記憶装置、ハードディスク等の外部記憶装置に格納し、データベースを構築し、格納した情報を抽出し、更新し、管理する技術一般に適用できる。すなわち、実施例1に係る情報処理装置1は、コンピュータ上の新たな情報の表現技術を例示する。
(その他の開示)
上記実施の形態は、さらに以下の態様を含む。各態様は他の態様の部分と適宜組み合わせ
てもよい。
[態様1]
識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部と、
前記対象情報中のそれぞれの着目する識別子について、前記それぞれの着目する識別子が含まれている着目項の前記対象情報内での位置と前記それぞれの着目する識別子の前記着目項内での位置と含む位置表現式を算出する位置情報算出部と、を備える情報処理装置。[態様2]
前記いずれかの項が因子の列を含み、前記因子の列に含まれるいずれかの因子がさらに項の組み合わせの順序を維持しないで前記項の組み合わせを関係付ける集合因子構成演算子によって形成される集合因子を含む場合に、前記位置情報算出部は、前記着目項中の集合因子の位置に加えて、前記集合因子中の項の組み合わせ中でのそれぞれの着目する識別子が含まれる因子内着目項の位置と前記因子内着目項中での前記それぞれの着目する識別子の位置をさらに算出する態様1に記載の情報処理装置。
[態様3]
前記いずれかの項が因子の列を含み、前記因子の列に含まれるいずれかの因子がさらに項の組み合わせの順序を維持して前記項の組み合わせを関係付ける順序因子構成演算子によって形成される順序因子を含む場合に、前記位置情報算出部は、前記着目項中の順序因子の位置に加えて、前記順序因子中の項の順序中でのそれぞれの着目する識別子が含まれる因子内着目項の位置と前記因子内着目項中での前記それぞれの着目する識別子の位置をさらに算出する態様1または2に記載の情報処理装置。
[態様4]
前記因子の列に含まれるいずれかの因子がさらに項の組み合わせの順序を維持しないで前記項の組み合わせを関係付ける集合因子構成演算子によって形成される集合因子、または、前記因子の列に含まれるいずれかの因子がさらに項の組み合わせの順序を維持して前記項の組み合わせを関係付ける順序因子構成演算子によって形成される順序因子を含み、前記和演算子、積演算子、集合因子構成演算子、および順序因子構成演算子の組み合わせによって前記集合因子中または順序因子中のいずれかの項がさらに集合因子中の項または順序因子中の項を含む、階層構造が複数階層に渡って形成されている場合に、前記位置情報算出部は、前記それぞれの階層において、前記それぞれの着目する識別子が含まれている着目項の位置と、前記着目項中でのそれぞれの着目する識別子の位置とを含む位置表現式を算出する態様1から3のいずれか1項に記載の情報処理装置。
[態様5]
前記それぞれの着目する識別子についての位置表現式を基に、前記対象情報を形成する復元部をさらに備える態様1から4のいずれか1項に記載の情報処理装置。
[態様6]
前記式表現中の識別子の指定を受け付ける手段と、
前記指定を受け付けた指定識別子の位置表現式を取得する手段と、
前記指定識別子の位置表現式から前記指定識別子に関連する関連識別子を取得する手段と、をさらに備える態様1から5のいずれか1項に記載の情報処理装置。
[態様7]
コンピュータが、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部から前記対象情報を読み出すステップと、
前記対象情報中のそれぞれの着目する識別子について、前記それぞれの着目する識別子が含まれている着目項の前記対象情報内での位置と前記それぞれの着目する識別子の前記着目項内での位置と含む位置表現式を算出する位置情報算出ステップと、を実行する情報処理方法。
[態様8]
前記いずれかの項が因子の列を含み、前記因子の列に含まれるいずれかの因子がさらに項の組み合わせの順序を維持しないで前記項の組み合わせを関係付ける集合因子構成演算子によって形成される集合因子を含む場合に、
前記コンピュータは、前記着目項中の集合因子の位置に加えて、前記集合因子中の項の組み合わせ中でのそれぞれの着目する識別子が含まれる因子内着目項の位置と前記因子内着目項中での前記それぞれの着目する識別子の位置をさらに算出するステップを実行する態様7に記載の情報処理方法。
[態様9]
前記いずれかの項が因子の列を含み、前記因子の列に含まれるいずれかの因子がさらに項の組み合わせの順序を維持して前記項の組み合わせを関係付ける順序因子構成演算子によって形成される順序因子を含む場合に、
前記コンピュータは、前記着目項中の順序因子の位置に加えて、前記順序因子中の項の順序中でのそれぞれの着目する識別子が含まれる因子内着目項の位置と前記因子内着目項中での前記それぞれの着目する識別子の位置をさらに算出するステップを実行する態様7または8に記載の情報処理方法。
[態様10]
前記因子の列に含まれるいずれかの因子がさらに項の組み合わせの順序を維持しないで前記項の組み合わせを関係付ける集合因子構成演算子によって形成される集合因子、または、項の組み合わせの順序を維持して前記項の組み合わせを関係付ける順序因子構成演算子によって形成される順序因子を含み、前記和演算子、積演算子、集合因子構成演算子、および順序因子構成演算子の組み合わせによって前記集合因子中または順序因子中のいずれかの項がさらに集合因子中の項または順序因子中の項を含む、階層構造が複数階層に渡って形成されている場合に、
前記コンピュータは、前記それぞれの階層において、前記それぞれの着目する識別子が含まれている着目項の位置と、前記着目項中でのそれぞれの着目する識別子の位置とを含む位置表現式を算出するステップを実行する態様7から9のいずれか1項に記載の情報処理方法。
[態様11]
前記それぞれの着目する識別子についての位置表現式を基に、前記対象情報を形成するステップをさらに実行する態様7から10のいずれか1項に記載の情報処理方法。
[態様12]
前記式表現中の識別子の指定を受け付けるステップと、
前記指定を受け付けた指定識別子の位置表現式を取得するステップと、
前記指定識別子の位置表現式から前記指定識別子に関連する関連識別子を取得するステップと、をさらに実行する態様7から11のいずれか1項に記載の情報処理方法。
[態様13]
コンピュータに、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部から前記対象情報を読み出すステップと、
前記対象情報中のそれぞれの着目する識別子について、前記それぞれの着目する識別子が含まれている着目項の前記対象情報内での位置と前記それぞれの着目する識別子の前記着目項内での位置と含む位置表現式を算出する位置情報算出ステップと、を実行させるプログラム。
[態様14]
前記いずれかの項が因子の列を含み、前記因子の列に含まれるいずれかの因子がさらに項の組み合わせの順序を維持しないで前記項の組み合わせを関係付ける集合因子構成演算子によって形成される集合因子を含む場合に、
前記コンピュータに、前記着目項中の集合因子の位置に加えて、前記集合因子中の項の組
み合わせ中でのそれぞれの着目する識別子が含まれる因子内着目項の位置と前記因子内着目項中での前記それぞれの着目する識別子の位置をさらに算出するステップを実行させる態様13に記載のプログラム。
[態様15]
前記いずれかの項が因子の列を含み、前記因子の列に含まれるいずれかの因子がさらに項の組み合わせの順序を維持して前記項の組み合わせを関係付ける順序因子構成演算子によって形成される順序因子を含む場合に、
前記コンピュータに、前記着目項中の順序因子の位置に加えて、前記順序因子中の項の順序中でのそれぞれの着目する識別子が含まれる因子内着目項の位置と前記因子内着目項中での前記それぞれの着目する識別子の位置をさらに算出するステップを実行する態様13または14に記載のプログラム。
[態様16]
前記因子の列に含まれるいずれかの因子がさらに項の組み合わせの順序を維持しないで前記項の組み合わせを関係付ける集合因子構成演算子によって形成される集合因子、または、項の組み合わせの順序を維持して前記項の組み合わせを関係付ける順序因子構成演算子によって形成される順序因子を含み、前記和演算子、積演算子、集合因子構成演算子、および順序因子構成演算子の組み合わせによって前記集合因子中または順序因子中のいずれかの項がさらに集合因子中の項または順序因子中の項を含む、階層構造が複数階層に渡って形成されている場合に、
前記コンピュータに、前記それぞれの階層において、前記それぞれの着目する識別子が含まれている着目項の位置と、前記着目項中でのそれぞれの着目する識別子の位置とを含む位置表現式を算出するステップを実行させる態様13から15のいずれか1項に記載のプログラム。
[態様17]
前記それぞれの着目する識別子についての位置表現式を基に、前記対象情報を形成するステップをさらに実行させる態様13から16のいずれか1項に記載のプログラム。
[態様18]
前記式表現中の識別子の指定を受け付けるステップと、
前記指定を受け付けた指定識別子の位置表現式を取得するステップと、
前記指定識別子の位置表現式から前記指定識別子に関連する関連識別子を取得するステップと、をさらに実行する態様13から17のいずれか1項に記載のプログラム。
[態様19]
コンピュータに、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記憶する記憶部から前記対象情報を読み出すステップと、
前記対象情報中のそれぞれの着目する識別子について、前記それぞれの着目する識別子が含まれている着目項の前記対象情報内での位置と前記それぞれの着目する識別子の前記着目項内での位置と含む位置表現式を算出する位置情報算出ステップと、を実行させるプログラムを記憶したコンピュータが読みとり可能な記憶媒体。
[態様20]
コンピュータが、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、によって記述される対象情報を記述するためのデータ構造であり、
前記対象情報中のそれぞれの着目する識別子について、前記それぞれの着目する識別子が含まれている着目項の前記対象情報内での位置と前記それぞれの着目する識別子の前記着目項内での位置と含み、コンピュータに前記対象情報を復元させるデータ構造。