CLIPS LHS匹配multislot

时间:2016-08-30 21:39:19

标签: clips expert-system inference-engine

我为专家系统编写了这条规则:

setPrimaryItem()

但是,我不希望栖息地的值与我给出的所有值匹配,而是只匹配至少一个值。 我想知道我该怎么做。我可以这样做:

    (defrule wild chicory
      (attribute (name habitat) (value sea montain grassland unknown))   
=>
      (assert (plant "Cichorium_Intybus"))
    )

但我想知道是否有更好的解决方案。感谢

1 个答案:

答案 0 :(得分:0)

如果value是单个字段槽,请按以下方式执行:

(defrule wild chicory
  (attribute (name habitat) (value sea | mountain | grassland | unknown)) 
  =>
  (assert (plant "Cichorium_Intybus")))

如果value是多字段插槽,请按以下方式执行:

(defrule wild chicory
  (attribute (name habitat) (value $? sea | mountain | grassland | unknown $?)) 
  =>
  (assert (plant "Cichorium_Intybus")))