CLIPS(C言語統合プロダクションシステム)は、エキスパートシステム構築のためのパブリックドメインソフトウェアツールです。構文と名称は、チャールズ・フォーギーのOPS5に触発されたものです。CLIPSの最初のバージョンは、1985年にNASAジョンソン宇宙センターで(既存のシステムART*Inferenceの代替として)開発が開始され、開発グループの責任範囲がエキスパートシステム技術から外れた1996年まで続きました。このプロジェクトの当初の名称は、NASAのAI言語(NAIL)でした。
2005年時点では、CLIPSはおそらく最も広く使用されているエキスパートシステムツールであった。[ 1 ] CLIPSはC言語で記述されており、拡張機能もC言語で記述でき、CLIPSはC言語から呼び出すことができる。その構文はプログラミング言語Lispに似ている。[ 2 ]
CLIPSはエキスパートシステムを作成するための完全なオブジェクト指向プログラミング言語を組み込んでいます。COOLは手続き型、オブジェクト指向、および論理プログラミング(自動定理証明)言語のプログラミングパラダイムを組み合わせています。[ 3 ]
CLIPSは前方連鎖を使用します。[ 4 ] [ 2 ]他のエキスパートシステム言語と同様に、CLIPSはルールと事実を扱います。さまざまな事実によってルールが適用可能になります。適用可能なルールが実行されます。[ 4 ]事実とルールは、以下に示すように、まず定義することによって作成されます。
(deftemplate car_problem (スロット名) (スロットの状態)
(事実)トラブルシューティング (車の不具合 (名前: イグニッションキー) (状態: オン)) (車の不具合 (エンジン名) (状態: エンジンがかからない)) (車の不具合 (ヘッドライト) (動作状態)))(ルール1を無効化する) (車の不具合 (名前: イグニッションキー) (状態: オン)) (車の不具合 (エンジン名) (状態: エンジンがかからない)) => (assert (car_problem (name starter) (status faulty))))
この設定が完了すると、(リセット)コマンドによってCLIPSはファクトとルールを読み取ります。この場合、3つの「trouble_shooting」ファクトがアサートされます。次に、(実行)コマンドが使用されます。ルール1にリストされている2つのファクトが両方ともアサートされているため、そのアクションを実行するための条件が満たされ、実行の結果として追加のファクトがアサートされます。
クリップ>(リセット) クリップ>(議題) 0 ルール1: f-1、f-2 合計1回の有効化となります。 クリップ>(事実) f-0(初期事実) f-1 (car_problem (name ignition_key) (status on)) f-2 (車の不具合 (エンジン名) (始動しない状態)) f-3 (車の不具合 (名前: ヘッドライト) (状態: 動作中)) 合計4つの事実です。 CLIPS> (実行) クリップ>(事実) f-0(初期事実) f-1 (car_problem (name ignition_key) (status on)) f-2 (車の不具合 (エンジン名) (始動しない状態)) f-3 (車の不具合 (名前: ヘッドライト) (状態: 動作中)) f-4 (車の不具合 (名前: スターター) (状態: 故障)) 合計5つの事実です。 クリップ> (事実を主張する) (アサート(オブジェクト(名前 "chair") (素材:木材) (身長3フィート) (色は茶色) CLIPS(retract <fact-index+) (撤回 0) 色について
CLIPSでは、顕著性機能により、ユーザーはルールに優先度(または重み)を割り当てることができます。
CLIPS言語の子孫には、Jess(CLIPSのルールベースの部分をJavaで書き直したもので、後に別の方向に発展した)[ 5 ]やFuzzyCLIPS(関連性の概念を言語に追加したもの)などがある。