Jess (Programmiersprache)

Jess ist ein Regel-Motor für die javanische Plattform, die von Ernest Friedman-Hill von Sandia Nationalen Laboratorien entwickelt wurde. Es ist eine Obermenge der BÜROKLAMMER-Programmiersprache. Es wurde zuerst gegen Ende 1995 geschrieben. Die Sprache stellt regelbasierende Programmierung für die Automation eines Expertensystemes zur Verfügung, und wird oft als eine Expertensystem-Schale genannt. In den letzten Jahren haben sich intelligente Reagenz-Systeme auch entwickelt, die von einer ähnlichen Fähigkeit abhängen.

Anstatt eines Verfahrensparadigmas, wo ein einzelnes Programm eine Schleife hat, die nur ein Mal aktiviert wird, wendet das Aussageparadigma, das von Jess unaufhörlich verwendet ist, eine Sammlung von Regeln zu einer Sammlung von Tatsachen durch einen Prozess genannt das Muster-Zusammenbringen an. Regeln können die Sammlung von Tatsachen modifizieren, oder sie können jeden javanischen Code durchführen.

Der Jess herrscht über Motor utliizes der Algorithmus von Rete, und kann utliized sein, um zu schaffen:

Lizenz

Während BÜROKLAMMERN als offene Quelle lizenziert werden, ist Jess nicht offene Quelle.

JESS ist für den Bildungs- und Regierungsgebrauch frei, aber eine Lizenz ist erforderlich, JESS für kommerzielle Systeme zu verwenden.

Codebeispiele

Codebeispiele:

; ist eine Anmerkung

(binden Sie? x 100)

; x = 100

(deffunction max (? a? b)

(wenn (>? a? b) dann? sonst? b))

(deffacts myroom

(Möbelstuhl)

(Möbeltisch)

(Möbelbett)

)

(deftemplate Auto

(Ablagefach-Farbe)

(Ablagefach-Meilenzahl)

(Ablagefach-Wert)

)

(behaupten Sie (Auto (färben Sie sich rot) (Meilenzahl 10000) (schätzen 400)))

Beispielcode:

(klarer)

(deftemplate Blutspender (Ablagefach-Name) (Ablagefach-Typ))

(deffacts Blutbank; stellen Sie Namen & ihre Typen ins Arbeitsgedächtnis

(Blutspender (nennen "Alice") (Typ "A"))

(Blutspender (nennen "Agatha") (Typ "A"))

(Blutspender (nennen "Bob") (Typ "B"))

(Blutspender (nennen "Barbara") (Typ "B"))

(Blutspender (nennen "Jess") (Typ "AB"))

(Blutspender (nennen "Karen") (Typ "AB"))

(Blutspender (nennen "Onan") (Typ "O"))

(Blutspender (nennen "Osbert") (Typ "O"))

)

(defrule kann demselben Typ, aber nicht selbst geben; Griffe A> A, B> B, O> O, AB> AB, aber nicht N1> N1

(Blutspender (Name? Name) (Typ? Typ))

(Blutspender (Name? name2) (Typ? type2 &: (eq? Typ? type2) &: (neq? Name? name2)))

=>

(Ausdruck t? Name "kann Blut geben"? name2 crlf)

)

(defrule gibt O anderen, aber nicht ihm; O zu O bedecken in der obengenannten Regel

(Blutspender (Name? Name) (Typ? Typ &: (eq? Typ "O")))

(Blutspender (Name? name2) (Typ? type2 &: (neq? Typ? type2) &: (neq? Name? name2)))

=> (Ausdruck t? Name "kann Blut geben"? name2 crlf))

(defrule A oder B gibt AB; Fall O gibt AB, und AB gibt AB bereits hat sich mit befasst

(Blutspender (Name? Name) (Typ? Typ &: (oder (eq? Typ "A") (eq? Typ "B"))))

(Blutspender (Name? name2) (Typ? type2 &: (eq? type2 "AB") &: (neq? Name? name2)))

=> (Ausdruck t? Name "kann Blut geben"? name2 crlf))

; (beobachten Sie alle)

(Rücksetzen)

(geführter)

Siehe auch

  • JSR-94

Zusammenhängende Systeme

  • BÜROKLAMMERN: Öffentliches Bereichssoftwarewerkzeug, um Expertensysteme zu bauen.
  • ILOG Regeln: ein Geschäftsregel-Verwaltungssystem.
  • JBoss Sabbert: ein Geschäftsregel-Verwaltungssystem (BRMS).
  • Einleitung: eine allgemeine Zweck-Logikprogrammiersprache.
  • Blöcke von OpenL: zentrische Geschäftsregeln und BRMS.
  • DTRules: Ein gestützter Entscheidungstisch, öffnen Sie Regel-Motor für Java-sourced.
  • INTERNATIONALE STANDARDBUCHNUMMER 1-930110-89-8

Links


Steve McConnell / Schwimmpunkt-Einheit
Impressum & Datenschutz