Veškerou činnost programu, který napíšete řídí tzv. inferenční mechanismus. Podle stavu báze faktů (= báze dat, báze znalostí, to co je uvedené v konstrukci deffacts) provádí příslušná pravidla (to co je v konstrukci defrule).
Provádí tři důležité činnosti:Tedy inferenční mechanismus je to algoritmus, který zajišťuje vykonávání pravidel na základě stavu báze faktů. Určuje jak a v jakém pořadí budou tato pravidla aplikována. Můžeme postupovat ve směru od počátečního stavu k cílovému. Pak mluvíme o strategii řízené daty (data driven strategy nebo jinak dopředné/přímé řetězení) nebo od cílového stavu směrem k počátečnímu. Pak se jedná o strategii řízenou cílem (goal driven strategy nebo jinak zpětné řetězení).
Pro to, abychom vypsali všechny krevní skupiny stačí jedno pravidlo. Jak vidíte, je zde jen jedna podmínka: (skupina ?nejaka) … tzn. jako byste se ptali: za podmínky, že v bázi faktů je nějaká krevní skupina (?nejaka) evidována, pak tyto všechny skupiny (?nejaka) vypiš. Pro vypsání se používá funkce printout t. Pro odřádkování - crlf.
(skupina ?nejaka)
(skupina A)
(skupina B)
(skupina 0)
(skupina AB).
Aby inferenční mechanismus věděl s jakými fakty chcete pracovat, pak v podmínkové části pravidla musíte uvést přesné znění dané relace tzn. v našem příkladu skupina (pozor na velká a malá písmena). Pak se inf. mech. podívá právě do struktury deffacts, kde je název dané relace s názvem skupina. Ale protože chcete vypsat konkrétní krevní skupiny, musíte využít v podmínkové části pravidla k relaci proměnnou, která bude zastupovat konkrétní krevní skupinu (A, B, 0, AB). Z toho vyplývá, že podmínková část pravidla je splněna pro 4 fakty (pro skupinu A, B, 0 a AB).
Tedy pravidlo s názvem vypis_vsechny_skupiny se provede 4-krát. Nesmíte zapomenout uvést co chcete vypsat - opět uvedete daný název proměnné, který musí být stejný jako ten název proměnné uvedený v podmínkové části pravidla, aby inf. mech. věděl, co chcete vypisovat. Velmi jednoduše můžete vyzkoumat, jak vše toto funguje, pomocí krokování. Funkcí Reset způsobíte to, že v Agendě uvidíte danou množinu aktivovaných pravidel (tedy těch, které mohou být vykonány). Pak nedáte Run, ale Step (Execution/Step). Tím způsobíte, že se Vám vykoná jen jedno pravidlo z celkových čtyř a v Agendě tím pádem pravidlo z Agendy zmizí. To opakujete do té doby, dokud v Agendě nezbude žádné pravidlo, které by se mohlo vykonat.