Jess (informatica)
# Jess (informatica)

Jess (Java Expert System Shell) è un sistema a regole implementato in Java. Utilizzato principalmente a scopo didattico, è un semplice ed intuitivo sistema utilizzato principalmente nell'ambito dell'intelligenza artificiale. Fu realizzato da Ernest J. Friedman-Hill.

## Linguaggio

I componenti principali sono:

* i fatti (facts);
* le regole (rules);
* il motore inferenziale (rules engine) o interprete.

I fatti rappresentano l'informazione: essi sono essenzialmente delle assegnazioni attraverso le quali introduciamo conoscenza nel sistema. Per la definizione di un fatto viene utilizzato il comando assert. Ecco un esempio:

L'elenco di tutti i fatti presenti nella base di conoscenza del sistema possono essere visualizzati attraverso il comando (watch facts).

Le regole sono componenti che possono produrre conoscenza a partire dai fatti. Esse sono composte da due parti, antecedente e conseguente (o LHS, Left Hand Side e RHS, Right Hand Side). L'antecedente è costituito da condizioni che devono essere soddisfatte affinché la regola venga attivata; il conseguente è composto da azioni che vengono svolte dalla regola. Per la definizione delle regole viene utilizzato il comando 'defrule' che ha la seguente struttura:

Il motore funziona in questo modo: confronta le condizioni di tutte le regole con tutti i fatti contenuti nella base dei fatti. Per ogni regola le cui condizioni sono soddisfatte, viene eseguita l'azione corrispondente.

Tutto il codice in Jess (strutture di controllo, assegnamenti, chiamate a procedure) prende la forma di una chiamata a funzione. In particolare una chiamata a funzione è una lista: se la testa della lista è il nome di una funzione esistente, la lista è una chiamata a funzione.

