Download presentation
1
PRAKTIKUM 04 SISTEM PAKAR
CLIPS [lanjutan]
2
WildCard Pattern
3
WildCard Pattern Used to take the place of a symbol on the left hand side of a rule. ? -> match any one symbol $? -> match zero or more symbols ?name -> only match one symbols
4
phone.CLP (deftemplate person (multislot name) (slot phone-number)) (deffacts orang (person (name dimpy adira ratu) (phone-number 12345)) (person (name fani vale rina) (phone-number 67890))) (defrule print-telephone-number (person (name ? ? ?) (phone-number ?phone)) => (printout t ?phone crlf))
5
bands.CLP (deftemplate member_bands (multislot member-of))
(deffacts nama_band (member_bands (member-of beatles john_lennon paul_mccartney george_harrison ringo_starr)) (member_bands (member-of who roger_daltrey pete_townsend keith_moon)) (member_bands (member-of ebtg tracey_thorn ben_watt))) (defrule bands (member_bands (member-of ?band $?)) => (printout t "there is a band called " ?band crlf))
6
bands_member.CLP (deftemplate member_bands (multislot member-of))
(deffacts nama_band (member_bands (member-of beatles john_lennon paul_mccartney george_harrison ringo_starr)) (member_bands (member-of who roger_daltrey pete_townsend keith_moon)) (member_bands (member-of ebtg tracey_thorn ben_watt))) (defrule band-members (member_bands (member-of ?band $? ?member $?)) => (printout t ?member " is a member of " ?band crlf))
7
multi_member.CLP (deftemplate member_bands (multislot member-of))
(deffacts nama_band (member_bands (member-of beatles john_lennon paul_mccartney george_harrison ringo_starr)) (member_bands (member-of who roger_daltrey pete_townsend keith_moon)) (member_bands (member-of ebtg tracey_thorn ben_watt))) (defrule band-members (member_bands (member-of ?band $?members)) => (printout t "The members of " ?band " are " $?members crlf))
8
VARIABEL
9
variabel.CLP (deftemplate variabel (slot number1) (slot number2)) (deftemplate jumlah (slot total)) (deffacts nilai (variabel (number1 4) (number2 6))) (defrule addup (variabel (number1 ?x) (number2 ?y)) => (bind ?total (+ ?x ?y)) (printout t ?x " + " ?y " = " ?total crlf) (assert (jumlah (total ?total))))
10
defglobal.CLP (defglobal ?*var1* = 17 ?*oranges* = "seven") (deftemplate variabel (slot number)) (deftemplate jumlah (slot total)) (deffacts nilai (variabel (number 24))) (defrule addup (variabel (number ?x)) => (bind ?total (- ?x ?*var1*)) (printout t ?x " - " ?*var1* " = " ?total "(" ?*oranges* ")" crlf) (assert (jumlah (total ?total))))
11
Function Templates and Conditions
12
birthday.CLP (defrule birthday_is ?ulang_tahun <- (ultah (birthday ?name)) ?data-fact <- (personal-data (name ?name) (age ?age)) => (modify ?data-fact (age (+ ?age 1))) (retract ?ulang_tahun))
13
tes_weight.CLP (deftemplate personal-data (slot name) (slot age) (slot weight) (slot height) (multislot blood-pressure)) (deffacts people (personal-data (name Andrew) (age 20) (weight 180) (height 188) (blood-pressure )) (personal-data (name Cyril) (age 63) (weight 70) (height 1678) (blood-pressure ))) (defrule lardy-bugger (personal-data (name ?name) (weight ?weight)) (test (> ?weight 100)) => (printout t ?name " weighs " ?weight " kg - the fat sod." crlf))
14
print_age.CLP (deftemplate personal-data (slot name) (slot age) (slot weight) (slot height) (multislot blood-pressure)) (deffacts people (personal-data (name Andrew) (age 120) (weight 80) (height 188) (blood-pressure )) (personal-data (name Cyril) (age 63) (weight 70) (height 1678) (blood-pressure ))) (defrule print-ages (and (personal-data (name ?name) (age ?age)) (personal-data (name ?name) (weight ?weight))) => (printout t ?name " weighs " ?weight " at " ?age " years old." crlf))
15
umbrella.CLP (deftemplate umbrella (slot weather)) (deffacts cuaca (umbrella (weather raining)) (umbrella (weather snowing)) (umbrella (weather sunny))) (defrule take-an-umbrella (or (umbrella (weather snowing))) => (printout t "Take an umbrella" crlf))
16
not_birthday.CLP (deftemplate personal-data (slot name) (slot age) (slot weight) (slot height) (multislot blood-pressure)) (deftemplate ultah (slot birthday)) (deffacts is_ultah (ultah (birthday Andrew))) (deffacts people (personal-data (name Andrew) (age 120) (weight 80) (height 188) (blood-pressure )) (personal-data (name Cyril) (age 63) (weight 70) (height 1678) (blood-pressure ))) (defrule not-birthday (personal-data (name ?name) (weight ?weight)) (not (ultah (birthday ?name))) => (printout t "It's not " ?name "'s birthday" crlf))
17
pointless.CLP (defrule pointless (test (> 6 5)) => (printout t "Six is indeed greater than five" crlf))
18
exist_forall.CLP (deftemplate personal-data (slot name) (slot age) (slot weight) (slot height) (multislot blood-pressure)) (deffacts people (personal-data (name Andrew) (age 20) (weight 80) (height 188) (blood-pressure )) (personal-data (name Cyril) (age 63) (weight 70) (height 1678) (blood-pressure ))) (defrule person-exists (personal-data (name ?name)) => (printout t "Rule person exists reports there is a person called " ?name crlf))
19
Lanjutan...... (defrule are-there-people (exists (personal-data (name ?name))) => (printout t "Rule are-there-people reports there is at least one person" crlf)) (defrule check-each-person (forall (personal-data (name ?name) (age ?umur)) (personal-data (name ?name) (weight ?berat))) (printout t "Rule check-each-person reports that all persons have a name" crlf))
20
Summary (deftemplate (slot slotname1) (slot slotname1))
(and (predicate1) (predicate2)) (or (predicate1) (predicate2)) (not (predicate1)) (test (predicate1)) (exists (pattern)) (forall (pattern1) (pattern2) )
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.