Jess (programmeringsspråk)
Utvecklare | Sandia National Laboratories |
---|---|
Stabil frisättning | 7.1p2 / 5 november 2008
|
Plattform | Java |
Licens | Stängd källa / Public Domain |
Hemsida | www.jessrules.com |
Jess är en regelmotor för Java- plattformen som utvecklades av Ernest Friedman-Hill från Sandia National Labs . Det är en superuppsättning av programmeringsspråket CLIPS . Det skrevs först i slutet av 1995. Språket tillhandahåller regelbaserad programmering för automatisering av ett expertsystem och kallas ofta för ett expertsystemskal . På senare år intelligenta agentsystem utvecklats, som är beroende av en liknande förmåga.
Snarare än ett procedurparadigm , där ett enskilt program har en loop som bara aktiveras en gång, tillämpar det deklarativa paradigmet som används av Jess kontinuerligt en samling regler på en samling fakta genom en process som kallas mönstermatchning . Regler kan modifiera insamlingen av fakta, eller så kan de köra valfri Java-kod. Den använder Rete-algoritmen för att exekvera regler.
Licens
Även om CLIPS är licensierat som öppen källkod , är Jess inte öppen källkod. JESS är gratis för utbildnings- och statlig användning, men en licens krävs för att använda JESS för kommersiella system.
Kodexempel
Kodexempel:
; är en kommentar ( bind ?x 100 ) ; x = 100 ( deffunction max ( ? a ? b ) ( om ( > ?a ?b ) sedan ? a annat ?b )) ( deffacts myroom ( möbelstol ) ( möbelbord ) ( möbelsäng ) ) ( deftemplate car ( kortplats ) färg ) ( slot körsträcka ) ( slot värde ) ) ( hävda ( bil ( färg röd ) ( körsträcka 10000 ) ( värde 400 )))
Exempelkod:
( rensa ) ( deftemplate blood-donor ( slot name ) ( slot type )) ( deffacts blood-bank ; lägg in namn och deras typer i [[arbetsminne]] ( blodgivare ( namn "Alice" )( typ "A" )) ( blodgivare ( namn "Agatha" )( typ "A" )) ( blodgivare ( namn "Bob" )( typ "B" )) ( blodgivare ( namn "Barbara" )( typ "B" " )) ( blodgivare ( namn "Jess" )( typ "AB" )) ( blodgivare ( namn "Karen" )( typ "AB" )) ( blodgivare ( namn "Onan" )( typ " O" )) ( blodgivare ( namn "Osbert" )( typ "O" )) ) ( defrule kan-ge-till-samma-typ-men-inte-själv ; hanterar A > A, B > B, O > O, AB > AB, men inte N1 > N1 ( blodgivare ( namn ?namn )( typ ?typ )) ( blodgivare ( namn ?namn2 )( typ ?typ2 &: ( eq ?typ ?typ2 ) & : ( neq ?namn ?namn2 ) )) => ( utskrift av ?namn " kan ge blod till " ?namn2 crlf ) ) ( defrule O-ger-till-andra-men-inte-själv ; O till O täcker in ovan regel ( blodgivare ( namn ?namn )( typ ?typ &: ( eq ?typ "O" ))) ( blodgivare ( namn ?namn2 )( typ ?typ2 &: ( neq ?typ ?typ2 ) &: ( neq ?namn ?namn2 ) )) => ( utskrift t ?namn " kan ge blod till " ?namn2 crlf ) ) ( defrule A-eller-B-ger-to-AB ; fall O ger till AB och AB ger till AB som redan behandlats ( blodgivare ( namn ?namn )( typ ?typ &: ( eller ( eq ?typ "A" ) ( eq ?typ "B" )))) ( blodgivare ( namn ?namn2 )( typ ?typ2 &: ( eq ?typ2 "AB" ) &: ( neq ?namn ?namn2 ) )) => ( utskrift t ?namn " kan ge blod till " ?namn2 crlf ) ) ;(titta på alla) ( återställ ) ( kör )
Se även
- JSR-94
- Beslutsmodell och notation
Relaterade system
- CLIPS : mjukvaruverktyg för offentlig egendom för att bygga expertsystem.
- ILOG-regler : ett affärsregelhanteringssystem.
- JBoss Drools : ett affärsregelhanteringssystem (BRMS).
- Prolog : ett allmänt logiskt programmeringsspråk.
- OpenL Tablets : affärscentrerade regler och BRMS.
- DTRules: en beslutstabellbaserad regelmotor med öppen källkod för Java.
Ytterligare källor
- Friedman-Hill, Ernest (2003). Jess in Action: Regelbaserade system i Java . Manning Publications. ISBN 9781930110892 . Hämtad 30 mars 2012 . ISBN 1-930110-89-8