(clear-all) (define-model genealogy (sgp :esc t :lf .05) (chunk-type frelation person1 person2 relation) (chunk-type question p1 p2 relation status) (chunk-type ffact name sex) (add-dm (Adam) (Maria) (Kasia) (Olek) (parent) (start) (pending) (ended) (mother) (child) (male) (female) (info1 ISA frelation person1 Adam person2 Kasia relation parent) (info2 ISA frelation person1 Adam person2 Olek relation parent) (info3 ISA frelation person1 Maria person2 Kasia relation parent) (info4 ISA frelation person1 Maria person2 Olek relation parent) (info5 ISA ffact name Adam sex male) (info6 ISA ffact name Olek sex male) (info7 ISA ffact name Maria sex female) (info8 ISA ffact name Kasia sex female) (g1 ISA question p1 Kasia p2 Olek relation mother status start) ) ; punkt wejsciowy dla pytania o relacje 'matka' ; sprawdzamy najpierw czy 'matka' jest kobieta (p take-question-mother =goal> ISA question p1 =mother p2 =child relation mother status start ==> +retrieval> ISA ffact name =mother sex female =goal> status pending ) ; 'matka' jest kobieta ; parafrazujemy to wiec na pytanie o relacje 'rodzic' (p mother-is-female =goal> ISA question p1 =mother p2 =child relation mother status pending =retrieval> name =mother sex female ==> =goal> relation parent status start ) ; punkt wejsciowy dla pytania o relacje 'dziecko' ; parafrazujemy to pytanie na pytanie o relacje 'rodzic' (p take-question-child =goal> ISA question p1 =child p2 =parent relation child status start ==> =goal> p1 =parent p2 =child relation parent ) ; punkt wejsciowy dla pytania o relacje 'rodzic' ; sprawdzamy czy znany jest nam taki fakt (p take-question-parent =goal> ISA question p1 =parent p2 =child relation parent status start ==> +retrieval> person1 =parent person2 =child relation parent =goal> status pending ) ; znamy taka relacje! ; wypisujemy do konsoli 'yes' i konczymy dzialanie modelu (dla status->ended nie odpali sie juz zadna regula) (p parent-yes =goal> ISA question p1 =parent p2 =child relation parent status pending =retrieval> person1 =parent person2 =child relation parent ==> !output! ("yes") =goal> status ended ) ; nasze zalozenie o plci albo relacji bylo bledne ; wypisujemy do konsoli 'no' i konczymy dzialanie modelu (dla status->ended nie odpali sie juz zadna regula) (p no =goal> ?retrieval> buffer failure ==> !output! ("no") =goal> status ended ) (goal-focus g1) )