Pada tutorial ini, kita akan membahas tentang conditional elements dalam sistem rule-based. Conditional elements adalah fitur yang memungkinkan aturan untuk melakukan evaluasi ekspresi di sisi kiri aturan. Dalam hal ini, kita dapat menggunakan kondisional elements untuk memeriksa fakta-fakta yang ada di basis faktual.
Template Facts
Sebelum kita melanjutkan ke conditional elements, mari kita bicarakan tentang template facts. Template facts adalah jenis fakta yang memiliki slot-slot yang dapat diisi dengan nilai-nilai. Contohnya, kita dapat membuat template fact untuk personal data seseorang sebagai berikut:
(deftemplate person (slot name) (slot age) (slot weight))
Dengan menggunakan template facts, kita dapat membuat aturan-aturan yang lebih rumit dan fleksibel.
Conditional Elements
Sekarang mari kita bicarakan tentang conditional elements. Ada beberapa jenis kondisional elements, yaitu:
and
: Menghubungkan dua atau lebih predicate menjadi satu.or
: Menghubungkan dua atau lebih predicate menjadi satu, tetapi hanya salah satu yang harus benar.not
: Mengembalikan kebenaran predicate, sehingga jika predicate benar maka aturan tidak akan dijalankan.test
: Memeriksa ekspresi dengan menggunakan operator-operator seperti >, <, =, dan lain-lain.exists
: Ditemukan apakah terdapat satu atau lebih fakta yang sesuai dengan pattern yang diberikan.forall
: Ditemukan apakah semua fakta yang sesuai dengan pattern yang diberikan.
Contoh
Mari kita lihat contoh-contoh penggunaan conditional elements dalam aturan-aturan:
(defrule lardy-bugger (personal-data (name ?name) (weight ?weight)) (test (> ?weight 100)) => (printout t ?name " weighs " ?weight " kg - the fat sod." crlf))
Dalam aturan ini, kita menggunakan test
untuk memeriksa apakah berat badan seseorang lebih dari 100 kg.
(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))
Dalam aturan ini, kita menggunakan and
untuk memeriksa apakah terdapat fakta yang sesuai dengan pattern yang diberikan.
(defrule take-an-umbrella (or (weather raining) (weather snowing) ) => (printout t "Take an umbrella" crlf))
Dalam aturan ini, kita menggunakan or
untuk memeriksa apakah cuaca sedang hujan atau salju.
(defrule not-birthday (personal-data (name ?name) (weight ?weight)) (not (birthday ?name)) => (printout t "It's not " ?name "'s birthday" crlf))
Dalam aturan ini, kita menggunakan not
untuk memeriksa apakah bukan hari ulang tahun seseorang.
Ringkasan
Dalam tutorial ini, kita telah membahas tentang conditional elements dalam sistem rule-based. Kita juga telah melihat contoh-contoh penggunaan conditional elements dalam aturan-aturan. Dengan menggunakan conditional elements, kita dapat membuat aturan yang lebih rumit dan fleksibel untuk memeriksa fakta-fakta yang ada di basis faktual.