Jess -人名の書き方・読み方 わかりやすく解説 Weblio辞書 (original) (raw)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/11/13 07:09 UTC 版)

ナビゲーションに移動 検索に移動

この項目では、プログラミング言語について説明しています。JR東日本グループの駅業務専門受託会社については「JR東日本ステーションサービス」をご覧ください。

JessJavaプラットフォーム向けのルールエンジンである。CLIPSプログラミング言語の上位互換であり、サンディア国立研究所の Ernest Friedman-Hill が開発した。1995年末ごろ最初の版が完成した。

エキスパートシステム開発自動化に適したルールベースのプログラミング言語であり、しばしば「エキスパートシステム・シェル」と呼ばれる。近年、知的エージェントと呼ばれるシステムも開発されているが、それと同様の機能を持つ。

Jess は手続き型パラダイムではなく宣言型パラダイムであり、「パターンマッチング」と呼ばれる処理によって規則群を事実群に適用する。規則は事実群に変更を加えたり、何らかの Java コードを実行したりする。

Jess は、宣言型規則の形で知識を使って結論や推論を導くタイプの Java のアプレットやアプリケーションを構築するのに使える。多くの規則が多くの入力にマッチするが、効果的な汎用マッチングアルゴリズムは少ない。JessのルールエンジンはReteアルゴリズムを使用している。

なお、オープンソースではない。

コード例

; これはコメント

(bind ?x 100)

; x = 100

(deffunction max (?a ?b) (if (> ?a ?b) then ?a else ?b))

(deffacts myroom (furniture chair) (furniture table) (furniture bed) )

(deftemplate car (slot color) (slot mileage) (slot value) )

(assert (car (color red) (mileage 10000) (value 400)))

(clear) (deftemplate blood-donor (slot name) (slot type)) (deffacts blood-bank ; 名前と血液型をワーキングメモリに置く (blood-donor (name "Alice")(type "A")) (blood-donor (name "Agatha")(type "A")) (blood-donor (name "Bob")(type "B")) (blood-donor (name "Barbara")(type "B")) (blood-donor (name "Jess")(type "AB")) (blood-donor (name "Karen")(type "AB")) (blood-donor (name "Onan")(type "O")) (blood-donor (name "Osbert")(type "O")) ) (defrule can-give-to-same-type-but-not-self ; A>A, B>B, O>O, AB>AB をカバー。ただし同一人による輸血は不可 (blood-donor (name ?name)(type ?type)) (blood-donor (name ?name2)(type ?type2 &:(eq ?type ?type2) &: (neq ?name ?name2) )) => (printout t ?name " can give blood to " ?name2 crlf) ) (defrule O-gives-to-others-but-not-itself ; O型からO型は上の規則でカバー (blood-donor (name ?name)(type ?type &:(eq ?type "O"))) (blood-donor (name ?name2)(type ?type2 &: (neq ?type ?type2) &: (neq ?name ?name2) )) => (printout t ?name " can give blood to " ?name2 crlf) ) (defrule A-or-B-gives-to-AB ; O型からAB型、AB型からAB型は既にカバーされている (blood-donor (name ?name)(type ?type &:(or (eq ?type "A") (eq ?type "B" )))) (blood-donor (name ?name2)(type ?type2 &: (eq ?type2 "AB") &: (neq ?name ?name2) )) => (printout t ?name " can give blood to " ?name2 crlf) ) ;(watch all) (reset) (run)

書籍

外部リンク

(Jess から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/01/30 13:23 UTC 版)