Assert 逻辑或在片段中-简单定义规则

Assert 逻辑或在片段中-简单定义规则,assert,logical-operators,clips,Assert,Logical Operators,Clips,我刚开始制作剪辑。我试图做这个简单的规则,但我不知道如何在这里使用逻辑OR。我知道我可以定义两条规则(一条是亲戚兄弟的,另一条是亲戚姐妹的),但我认为这不是重点。 规则是:如果你是某人的兄弟姐妹,你就是他的亲戚 (defrule MAIN::siblings-relatives (is-brother ?x ?y) (test (or (is-sister ?x ?y)) => (assert (is-relative ?x ?y))

我刚开始制作剪辑。我试图做这个简单的规则,但我不知道如何在这里使用逻辑OR。我知道我可以定义两条规则(一条是亲戚兄弟的,另一条是亲戚姐妹的),但我认为这不是重点。 规则是:如果你是某人的兄弟姐妹,你就是他的亲戚

(defrule MAIN::siblings-relatives
       (is-brother ?x ?y)
      (test (or (is-sister ?x ?y))
       =>
       (assert (is-relative ?x ?y))
       (printout t ?x " is relative of " ?y crlf))
剪辑>(清除)
剪辑>
(b)亲属
(或(是兄弟?x?y)
(妹妹是x?y)
=>
(断言(是相对的x?y))
(打印输出t?x“与y crlf相对)
剪辑>(断言(是大卫·吉姆兄弟))
剪辑>(断言(是简·弗兰克修女)
剪辑>(运行)
简是弗兰克的亲戚
戴夫是吉姆的亲戚
剪辑>(事实)
f-0(初始事实)
f-1(是大卫·吉姆兄弟)
f-2(是简·弗兰克修女)
f-3(是简·弗兰克的亲戚)
f-4(是戴夫·吉姆的亲戚)
总共5个事实。
剪辑>
CLIPS> (clear)
CLIPS>
(defrule siblings-relatives
   (or (is-brother ?x ?y)
       (is-sister ?x ?y))
   =>
   (assert (is-relative ?x ?y))
   (printout t ?x " is relative of " ?y crlf))
CLIPS> (assert (is-brother Dave Jim))
<Fact-1>
CLIPS> (assert (is-sister Jane Frank))
<Fact-2>
CLIPS> (run)
Jane is relative of Frank
Dave is relative of Jim
CLIPS> (facts)
f-0     (initial-fact)
f-1     (is-brother Dave Jim)
f-2     (is-sister Jane Frank)
f-3     (is-relative Jane Frank)
f-4     (is-relative Dave Jim)
For a total of 5 facts.
CLIPS>