在 Jess 规则中使用 Protege 中的整数槽
Using an integer slot in Protege in a Jess rule
我已经编写了以下 Jess 规则以在 Protege 中使用它 ontology。
(mapclass Cliente)
(defrule perfil-familia-numerosa
?cliente <- (object (is-a Cliente)
(nombre ?name)
(discapacidad? ?discapacity)
(distrito_deseado ?desired_district)
(n_miembros_familia ?n)
(presupuesto_maximo ?max)
(presupuesto_minimo ?min))
(test (> n 4))
=>
(assert (perfil-cliente ?name soltero)))
当我尝试在 Jess 选项卡中输入它时,出现类型错误 Jess reported an error in routine > [...] java.lang.Integer cannot be cast to java.lang.String
。
但是,有问题的插槽是一个整数,所以我不清楚为什么 Jess 将其视为一个字符串。有帮助吗?
问题在这里:
(test (> n 4))
对绑定变量的引用保留了'?',所以你必须写
(test (> ?n 4))
但是,最好将此约束添加到 (n_miembros_familia ?n)
。
(n_miembros_familia ?n&:(> ?n 4))
我已经编写了以下 Jess 规则以在 Protege 中使用它 ontology。
(mapclass Cliente)
(defrule perfil-familia-numerosa
?cliente <- (object (is-a Cliente)
(nombre ?name)
(discapacidad? ?discapacity)
(distrito_deseado ?desired_district)
(n_miembros_familia ?n)
(presupuesto_maximo ?max)
(presupuesto_minimo ?min))
(test (> n 4))
=>
(assert (perfil-cliente ?name soltero)))
当我尝试在 Jess 选项卡中输入它时,出现类型错误 Jess reported an error in routine > [...] java.lang.Integer cannot be cast to java.lang.String
。
但是,有问题的插槽是一个整数,所以我不清楚为什么 Jess 将其视为一个字符串。有帮助吗?
问题在这里:
(test (> n 4))
对绑定变量的引用保留了'?',所以你必须写
(test (> ?n 4))
但是,最好将此约束添加到 (n_miembros_familia ?n)
。
(n_miembros_familia ?n&:(> ?n 4))