繁体   English   中英

剪辑规则RHS中的变量边界检查

variable bound check in a clips rule RHS

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

checkIntfIntVlanMemberConfigRule = """
    (defrule checkSubIntfIntVlanMemberConfigRule
    (checkIntf (intf ?intf) )
    (SwitchIntfConfig (intf ?intf) (switchportMode "routed") (nativeVlan          ?intVlan))
    (or (not (VlanStatus (vlan ?intVlan) (intf ?intf)) )
     ?f <- (VlanStatus (vlan ?intVlan) (intf ?intf)) )
    =>
    (if (isbound ?f) then (printout t "PASS: vlanStatus exists for " ?intf " " ?intVlan crlf) (return 0) )
    (printout t "vlanStatus does not exist for " ?intf " " ?intVlan crlf)
    )"""

在上述片段规则中,(isbound?f)的等效片段内置函数是什么? 通常,是否有任何内置函数可以在RHS中检查变量是否在LHS中绑定?

1 个回复

没有确定变量是否已绑定的功能。 通过为or包含的每个条件元素创建规则来实现or条件元素,因此您现有的规则将转换为以下内容:

 (defrule checkSubIntfIntVlanMemberConfigRule-1
    (checkIntf (intf ?intf) )
    (SwitchIntfConfig (intf ?intf) (switchportMode "routed") (nativeVlan ?intVlan))
    (not (VlanStatus (vlan ?intVlan) (intf ?intf)) 
    =>
    (if (isbound ?f) then (printout t "PASS: vlanStatus exists for " ?intf " " ?intVlan crlf) (return 0) )
    (printout t "vlanStatus does not exist for " ?intf " " ?intVlan crlf)
    )

 (defrule checkSubIntfIntVlanMemberConfigRule-2
    (checkIntf (intf ?intf) )
    (SwitchIntfConfig (intf ?intf) (switchportMode "routed") (nativeVlan ?intVlan))
    ?f <- (VlanStatus (vlan ?intVlan) (intf ?intf)) 
    =>
    (if (isbound ?f) then (printout t "PASS: vlanStatus exists for " ?intf " " ?intVlan crlf) (return 0) )
    (printout t "vlanStatus does not exist for " ?intf " " ?intVlan crlf)
    )

您需要将其实现为两个单独的规则,以便每个规则的RHS可以不同:

(defrule checkSubIntfIntVlanMemberConfigRule-1
    (checkIntf (intf ?intf) )
    (SwitchIntfConfig (intf ?intf) (switchportMode "routed") (nativeVlan ?intVlan))
    (not (VlanStatus (vlan ?intVlan) (intf ?intf))) 
    =>
    (printout t "vlanStatus does not exist for " ?intf " " ?intVlan crlf)
    )

 (defrule checkSubIntfIntVlanMemberConfigRule-2
    (checkIntf (intf ?intf) )
    (SwitchIntfConfig (intf ?intf) (switchportMode "routed") (nativeVlan ?intVlan))
    ?f <- (VlanStatus (vlan ?intVlan) (intf ?intf)) 
    =>
    (printout t "PASS: vlanStatus exists for " ?intf " " ?intVlan crlf)
    )

或者,您可以使用事实查询功能从规则的RHS中测试事实的存在:

  (defrule checkSubIntfIntVlanMemberConfigRule
    (checkIntf (intf ?intf) )
    (SwitchIntfConfig (intf ?intf) (switchportMode "routed") (nativeVlan ?intVlan))
    (VlanStatus (vlan ?intVlan) (intf ?intf)) 
    =>
    (if (any-factp ((?f VlanStatus)) (and (eq ?f:vlan ?intVlan) (eq ?f:intf ?intf)))
      then
      (printout t "PASS: vlanStatus exists for " ?intf " " ?intVlan crlf)
      else 
     (printout t "vlanStatus does not exist for " ?intf " " ?intVlan crlf)))
2 剪辑规则RHS中的现有事实计数

您如何测试Clips中规则的RHS中的事实存在? 我正在尝试设计一个规则,通过计算存在多少目标事实来“得分”当前状态。 显而易见,如何在LHS中测试事实,但是我找不到在RHS中如何做同样的事情。 我想做这样的事情,尽管这不是有效的剪辑代码: 因此,如果不存在任何目标状态,则将存 ...

3 如何获得规则的RHS中的事实索引?

我问是否有可能在defrule的RHS中访问获取事实索引? 每次我尝试在RHS defrule中为事实建立索引时,它给我带来的不确定性。 因为我有一个while循环,所以我希望能够根据我的输入数据修改电梯事实。 这是我的代码示例,因为我无法全部上网: 这是我的输入文件: ...

2015-11-13 18:15:52 1 460   clips
4 在RHS和RHS中为R中的关联规则挖掘指定多个参数

我正在使用R中的arules和arulesviz包挖掘一些规则。我能够为规则挖掘指定LHS和RHS。 但是,我想在LHS和RHS中指定多个参数,然后检查对这些规则的支持和信心。 我已经尝试挖掘指定LHS的规则,但我得到的结果包括每个参数的规则以及两个参数组合的规则。 预期结果应仅 ...

5 隔离lhs和rhs的规则

因此,这是示例: 我想创建一个包含两列的data.table,其中一列称为lhs,另一列rhs在其中存储了我的规则的lhs和rhs值,如下所示: 我发誓我曾经从Windows上a&lt;-as.data.table(inspect(rules))开始但是在我的Mac上却不起作用. ...

2016-02-28 16:17:36 2 802   r/ arules
6 如何从java访问规则的结果(RHS)?

我有以下结构的规则: 我想获取规则添加到工作内存中的对象(及其属性)。 我可以使用以下代码获取LHS对象: 但我找不到类似的东西来获得规则的RHS。 我想这样做是因为我试图根据规则“自动”生成查询。 从上面的规则我想生成类似的东西: 提前致谢。 ...

8 如何按R中的lhs或rhs对关联规则进行排序

我有一套来自apriori算法的规则。 通过提升,信心或支持对它们进行排序很容易: 但是,假设我有一些规则与一些不同的rhs元素。 我想查看按这些rhs元素排序的规则(按字母顺序排列)。 有没有办法做到这一点? 即:从这个: 对此: 以下是我使用的规则示例: ...

9 (扩展的)规则语法的RHS中可以有多个非终结符吗?

标准(正确)常规语法具有三种规则: 从理论上讲这是可以的,但是在实践中给使用带来很大的不便。 实用的常规语法应允许我们使用商品运算符( | , * , + , ? , . , ( , ) ),字符集并将多个规则组合在一个规则中。 例如,以下常规语法描述了分数: 问题是,必须对 ...

10 关联规则挖掘中RHS的多样性

因此我在R中使用“ arules”来从数据集中找出关联规则。 我将某些列显示在规则的RHS上,例如(a,b,c-&gt; A)。 问题在于,“ A”项在RHS上倾向于过多,整个规则集中约60%的RHS项具有“ A”。 同样,“ A”占整个数据集的约20%。 我想知道我是否可以使用其他算法 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM