質問
13アレンの関係のプロログベースの表現を使用して、イベントの時点を比較できるプロログの実装があります。各イベントには、開始点(yyyy-mm-dd)とエンドポイント(yyyy-mm-dd)があり、2つのイベントが同時に発生したのか、1つが次のようになったのかなどを確認できます。 1555-12-03は1555-12-04より前です)。いわゆるAC日付(Anno Domini)では大丈夫ですが、今では紀元前(キリストの前)が起こった多くの出来事があります。これらのBCイベントを処理し、たとえばアテネの基礎(BC 1556)はコロンブス(1451)の誕生前であると言うことができる最良の方法は何ですか?.....どんなアイデアも大歓迎です。
ありがとう、
私。
解決
日付はどのように保管していますか?独自の構造体にある場合は、ADまたはBCを含めて、これを一種のネガティブフラグとして使用し、BCは年をネガティブとして扱い、ADを肯定的なものとして扱います。
他のヒント
彼はあなたの日付がさまざまな述語に保存されているのか、それとも最初のフィールドがIDフィールドであるA_Date(12345、「12-24-2011」)の単一日付述語でのみ指定されているかどうかを尋ねていると思います。つまり、あなたは日付を次のようなものとして保存していますか
a_date(event_id、date_value)
date_valueの形式はどこにありますか?yyyy-mm-dd?
1つの解決策:デフォルトの文字列に「AD」または「BC」が必要であり、デフォルトは「BC」であり、いずれかの不在を「AD」として扱います。
別の解決策:新しい日付の述語を作成し、それを呼び出します
a_date(ven_id、date_value、flag)
フラグはBCまたはADのいずれかです。フラグが広告の場合、数学はいつものように続きます。フラグがBCの場合、適切な数学を行う新しいコードに分岐します。フォームa_date(event_id、date_value)の既存の日付述語は、a_date(event_id、date_value、 "ad"として解釈されます)
つまり、コードです
a_date(event_id、date_value):= a_date(event_id、date_value、 "ad")