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];;
先ほども述べましたが、
オブジェクトを表す項を「オブジェクト項」と呼び、 オブジェクトとその性質を表す項、相続分、主人死亡、妻生存、子供達生存、財産など
を「属性項」と呼んでいます。オブジェクト項は、"/" とその右のない、 属性項の特別な形とも考えています。相続分/[妻=S/2, 子供達=S/2, 叔父叔母達=0, 祖父母=0] 財産/[総額=S] など
例えば、人と哺乳類を考えた場合、人は哺乳類の性質を持っています。
この事実を記述する場合、人の性質のところにいちいち哺乳類の性質を書くのでは なく、哺乳類の性質は哺乳類に書いておいて、その性質を人に引き継がせることを 思いつかれると思います。そうすることによって、性質の分類、整理が行なえます。 これが性質継承です。
Quixote を使って具体的に説明すると、
と書いておいて、人 =< 哺乳類
などと哺乳類の性質を記述すると、人に哺乳類の性質を書かなくても、書いたよう に自動的に扱われるのです。哺乳類/[呼吸=肺,体温=定温]
ところで、上記のような性質継承を用いて現実世界を記述しようとしたことのある 方はご存知だと思いますが、現実世界には例外があります。 次に Quixote が実現している「性質継承の例外」を説明しましょう。
が複合オブジェクト項 です。りんご[色=青]
ここで、突然 注意 です!!!
このオブジェクト項は、青りんごを表しています。これを使って、性質継承の 例外を説明しましょう。
りんご[色=青] の [色=青] 部分は、「色が青」を表しています。青りんごの 「色が青」という性質はとても重要なことは、皆さんご存知の通りです。 「色が青」でなくなったら、青りんごではなくなってしまいます。
さて、 Quixote では、りんご[色=青] と書いた場合、
と書いたように自動的に扱われます。つまり、りんごの性質は、りんご[色=青] (すなわち青りんご)に引き継がれます。「青りんごはりんご」ですから、 自然ですね。但し、属性項を用いて、りんご[色=青] =< りんご
のようにりんごの性質を記述した場合、形=球状(意味は「形は球状」)という 性質は、りんご[色=青] に継承されますが、色=赤い(意味は「色は赤」)の性質は、 例外扱いされ、継承されません。先ほども言いましたが、りんご[色=青] の色が 青以外になっては困るからです。りんご/[形=球状,色=赤い]
つまり、属性項に書かれた性質(ここでは、形=球状 と 色=赤い)のうち、構造を 持ったオブジェクト項の中に示された性質(ここでは、色=青)と同じ事柄(ここで は、色)に関する性質は、オブジェクトの中の性質が優先されます。
このようにして、 Quixote では、性質継承とその例外を実現しています。
とすると、モジュール2のルールが全て、モジュール1に継承されます。つまり、 モジュール1に入っているように自動的に扱われます。モジュール1 >- モジュール2
具体例を使って、モジュールが何たるかをもう少し説明しましょう。
先ほどの相続税の法律がルールで表されることから、容易に分かるように、 相続税法はルールの集まりです。このルールの集まりの入れものがモジュールで、 その名前は、例えば、「相続税法」とすると覚え易いかもしれません。
同じように、民法もルールの集まりと考えられ、その入れものを「民法」と 名付けましょう。そして、
とすれば、相続税法のルールは、自動的に民法に継承され、モジュール「民法」の 中に、相続税法のルールをわざわざ入れておかなくてすみます。民法 >- 相続税法
このように、 Quixote では、モジュールを使ってルールの整理、 分類を行なうことができます。
しかし、もうだいぶ長くなってきたので、ゼーゼー息切れ!?してきました。 それでここの説明は、今回は簡単にしましょう。(^^)
一言で説明するなら、 Quixote のルール継承の例外には、