例えば、ある取り引きは以下の慣習があったとしましょう。
20年来の取り引きで、20年前の申入れの時には物品名を 書いたが、年一度交わされるその年の申入れには、物品名を わざわざ書かない。このような事例に対して、
20年前の申入れに物品が示されているなら、その年の申入れも 物品を示しているとする。という解釈があったとします。この解釈の元で、 「申入れは、申込となっているか?」を問いたくなったとします。
まず、 Quixote で上記の解釈を記述してみましょう。
例えば、以下のようなルールで記述できます。
fact::申入れ/[物品を示す=yes] <= fact:20年前の申入れ/[物品を示す=yes];;
Quixote では、問合せ時にルールやプログラムを普通の問合せに 付加でき、データベースに付加されたプログラムなどを加えてから問合せを 処理するので、
「20年前の申入れに物品が示されているなら、その年の申入れも 物品を示しているとする。」という解釈の元で、 「申入れは、申込となっているか?」という問合せは、以下のように記述できます。
?- def:申込[順番=0];; &program;; &rule;; fact::申入れ/[物品を示す=yes] <= fact:20年前の申入れ/[物品を示す=yes];; &end.