演繹データベース(DDB)
オブジェクト指向データベース(OODB) との統合


ここでは、統合に関する具体的話題: 「オブジェクトとルール」と「2つの継承」について、簡単にお話ししましょう。

オブジェクトとルール

最初に、 オブジェクト指向データベース が持つ基本的考え方、オブジェクトと、 演繹データベース の特徴である、ルールが結び付くとどうなったのか、簡単に 説明します。

2つの継承

人工知能の分野で誕生し、情報の組織化、コードの共有、再利用に有効で あると認められている「継承」を Quixote は2つ持っているので、 それについて説明しましょう。


オブジェクトとルール

オブジェクトとルールが結び付くとどうなったのか、簡単に 説明しましょう。

Quixote では、例えば皆さん良くご存知の、相続税の法律

「もし、不幸にして一家の大黒柱であるご主人がなくなったとき、 その財産は、妻が半分、残りを子ども達が相続します。 ご主人の兄弟や父母の取り分はありません。」

を記述しようと考えています。さあ、皆さん、どのように記述しようと思われます?

まず、この文章が、条件と結果を表していて、ルール (「A が成り立てば、B が 成り立つ」を表すもので、A には条件、B には結果が入ります。) によって記述 できることに気づかれると思います。さらにその条件や結果を記述するのに、 「ご主人」のような登場人物や、「財産」のような物、「死亡」のような概念など に、注目なさると思います。

この注目する対象 (概念なども含めて) を、まずは、「オブジェクト」と呼ぶこと としましょう。

オブジェクトとして、「相続分」「主人死亡」「妻生存」「子供達生存」「財産」 を選べば、この文章は、

もし、主人死亡 and 妻生存 and 子供達生存 and 財産の総額が S ならば、妻は S/2、子供達は S/2、ご主人の兄弟や父母は 0 の 相続分が発生します。

となります。ここで、先に上げた「オブジェクト」とその性質によって、相続税の 法律が記述されたことに気づかれると思います。

Quixote は、演繹データベースから引き継いだものとしてルール (「A が成り立てば、B が成り立つ」を「B <= A」と記述します。) を持ち、 オブジェクトを表す オブジェクト項をオブジェクト指向データベースから引き継いでいます。 つまり、上記の文章は、 Quixote では自然に

相続分/[妻=S/2, 子供達=S/2, 叔父叔母達=0, 祖父母=0] <= 主人死亡, 妻生存, 子供達生存, 財産/[総額=S];;

と記述できます。

[横道]

ここで、 Quixote で使われている用語をちょっと紹介しましょう。

先ほども述べましたが、

相続分、主人死亡、妻生存、子供達生存、財産など

オブジェクトを表す項を「オブジェクト項」と呼び、 オブジェクトとその性質を表す項、

相続分/[妻=S/2, 子供達=S/2, 叔父叔母達=0, 祖父母=0] 財産/[総額=S] など

を「属性項」と呼んでいます。オブジェクト項は、"/" とその右のない、 属性項の特別な形とも考えています。


2つの継承

人工知能の分野で誕生し、情報の組織化、コードの共有、再利用に有効で あると認められている「継承」を、 Quixote オブジェクト指向データベース から、 演繹データベース からそれぞれ引き継いでいるので、それについて説明します。

性質継承
オブジェクト指向データベース に、性質継承という考え方があります。 それを簡単に説明し、 Quixote でどのように実現しているか 説明しましょう。また、 Quixote では、性質継承の例外も 実現しているので、それも簡単に説明します。
ルール継承
演繹データベース では、ルールの継承という考え方があります。 Quixote では、モジュールを用意し、継承を実現して います。「モジュールとは何か?」から、分かり易く説明し、 Quixote で実現している、ルール継承の例外も 説明します。

性質継承(「属性継承」ともいう)

性質継承を簡単に説明します。

例えば、人と哺乳類を考えた場合、人は哺乳類の性質を持っています。

この事実を記述する場合、人の性質のところにいちいち哺乳類の性質を書くのでは なく、哺乳類の性質は哺乳類に書いておいて、その性質を人に引き継がせることを 思いつかれると思います。そうすることによって、性質の分類、整理が行なえます。 これが性質継承です。

Quixote を使って具体的に説明すると、

人 =< 哺乳類

と書いておいて、

哺乳類/[呼吸=肺,体温=定温]

などと哺乳類の性質を記述すると、人に哺乳類の性質を書かなくても、書いたよう に自動的に扱われるのです。

ところで、上記のような性質継承を用いて現実世界を記述しようとしたことのある 方はご存知だと思いますが、現実世界には例外があります。 次に Quixote が実現している「性質継承の例外」を説明しましょう。


性質継承の例外

Quixote では、構造を持つオブジェクト項(複合オブジェクト項と 呼んでいます。)を用意し、性質継承における例外を実現しています。 例えば、

りんご[色=青]

が複合オブジェクト項 です。

ここで、突然 注意 です!!!

このオブジェクト項は、青りんごを表しています。これを使って、性質継承の 例外を説明しましょう。

りんご[色=青] の [色=青] 部分は、「色が青」を表しています。青りんごの 「色が青」という性質はとても重要なことは、皆さんご存知の通りです。 「色が青」でなくなったら、青りんごではなくなってしまいます。

さて、 Quixote では、りんご[色=青] と書いた場合、

りんご[色=青] =< りんご

と書いたように自動的に扱われます。つまり、りんごの性質は、りんご[色=青] (すなわち青りんご)に引き継がれます。「青りんごはりんご」ですから、 自然ですね。但し、属性項を用いて、

りんご/[形=球状,色=赤い]

のようにりんごの性質を記述した場合、形=球状(意味は「形は球状」)という 性質は、りんご[色=青] に継承されますが、色=赤い(意味は「色は赤」)の性質は、 例外扱いされ、継承されません。先ほども言いましたが、りんご[色=青] の色が 青以外になっては困るからです。

つまり、属性項に書かれた性質(ここでは、形=球状 と 色=赤い)のうち、構造を 持ったオブジェクト項の中に示された性質(ここでは、色=青)と同じ事柄(ここで は、色)に関する性質は、オブジェクトの中の性質が優先されます。

このようにして、 Quixote では、性質継承とその例外を実現しています。


ルール継承

Quixote では、ルールを分類したり、整理するためにモジュールを 用意しています。 モジュールは、複数のルールの入れものとも考えられ、名前が付けられます。 例えば、

モジュール1 >- モジュール2

とすると、モジュール2のルールが全て、モジュール1に継承されます。つまり、 モジュール1に入っているように自動的に扱われます。

具体例を使って、モジュールが何たるかをもう少し説明しましょう。

先ほどの相続税の法律がルールで表されることから、容易に分かるように、 相続税法はルールの集まりです。このルールの集まりの入れものがモジュールで、 その名前は、例えば、「相続税法」とすると覚え易いかもしれません。

同じように、民法もルールの集まりと考えられ、その入れものを「民法」と 名付けましょう。そして、

民法 >- 相続税法

とすれば、相続税法のルールは、自動的に民法に継承され、モジュール「民法」の 中に、相続税法のルールをわざわざ入れておかなくてすみます。

このように、 Quixote では、モジュールを使ってルールの整理、 分類を行なうことができます。


ルール継承の例外

Quixote では、ルール継承の例外も実現しています。

しかし、もうだいぶ長くなってきたので、ゼーゼー息切れ!?してきました。 それでここの説明は、今回は簡単にしましょう。(^^)

一言で説明するなら、 Quixote のルール継承の例外には、

の2種類あり、例外継承させたいルールに、継承方法を表す記号を付加すること によって、例外継承を実現しています。