「四角形」とは、小学校の時に習った、以下の知識です。
「四角形のうち、向かい合う辺が平行なものは、平行四辺形です。 平行四辺形のうち、4辺が等しいと菱形で、 4つの角が90度だと長方形です。 更に、菱形でもあり、長方形でもあるものが正方形です。」
以下が「四角形」を Quixote で記述したプログラムです。
&program;; &subsumption;; 四角形 >= 平行四辺形;; 平行四辺形 >= {長方形, 菱形};; 正方形 =< {長方形, 菱形} ;; &rule;; 四辺形[記号=X]/[形 -> 平行四辺形] <= 四辺形[記号=X]/[角1=L1, 角2=L2,角3=L1, 角4=L2];; 四辺形[記号=X]/[形 -> 菱形] <= 四辺形[記号=X]/[形 -> 平行四辺形, 辺1=L, 辺2=L, 辺3=L, 辺4=L];; 四辺形[記号=X]/[形 -> 長方形] <= 四辺形[記号=X]/[形 -> 平行四辺形, 角1=90, 角2=90, 角3=90, 角4=90];; &end.
このプログラムは、 &subsumption;; (「基礎オブジェクト項間関係 」と 呼ばれています。)の部分で、
平行四辺形は四角形である。 長方形と菱形は、平行四辺形であり、 正方形は、長方形と菱形である。という、四角形、平行四辺形、長方形、菱形、正方形の関係を示しています。
次に &rule;; (「ルール定義」と 呼ばれています。)の部分で、
向かい合う角の大きさが等しいものが平行四辺形 平行四辺形のうち、隣合う辺が等しいと菱形 平行四辺形のうち、90度の角を持つと長方形を表しています。
普通は、「向かい合う辺が平行なもの」の方が平行四辺形の定義としては 馴染みがありますが、ここではそれと同じ意味で、計量的な 「向かい合う角の大きさが等しいもの」を記述しました。
これは皆が知っている簡単な例ですが、この例にもちゃんと 知識の特徴 が 含まれています。
さて、このプログラムに対して、例えば、以下の質問が考えられます。
?- 四辺形[記号=a]/[形=X]. ?- 四角形[記号=a]/[形=X];;
&program;;
&rule;;
四角形[記号=a]/[角2=80];;
&end.
最初の質問は、「四角形aの形は?」を表しています。
2番目の質問は、「角2が80度なら、四角形aの形は?」を表しています。 皆さんお気づきのことと思いますが、 「角2が80度なら、」の部分は仮説です。このように 仮説の付いた問合せ も、 Quixote では出すことができます。
1番目の答えは、
が Quixote から返されます。 これは、「角2と角4の大きさが同じなら、平行四辺形である」を 意味しています。 If の部分は仮定で、 Quixote は このように 仮定付き答え を返します。IF 四辺形[記号=a].角2=V, 四辺形[記号=a].角4=V
Then X -< 平行四辺形