/ / Verwenden eines Integer-Slots in Protege in einer Jess-Regel - Protege, jess

Mit einem Integer-Slot in Protege in einer Jess-Regel - Protege, jess

Ich habe die folgende Jess-Regel geschrieben, um sie in einer Protege-Ontologie zu verwenden.

(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)))

Wenn ich versuche, es auf der Registerkarte Jess einzugeben, erhalte ich einen Schreibfehler Jess reported an error in routine > [...] java.lang.Integer cannot be cast to java.lang.String.

Allerdings handelt es sich bei dem betreffenden Slot um eine Ganzzahl, weshalb mir nicht klar ist, warum Jess ihn als String behandelt.

Antworten:

2 für die Antwort № 1

Das Problem ist hier:

(test (> n 4))

Ein Verweis auf eine gebundene Variable behält das "?" Bei, sodass Sie schreiben müssen

(test (> ?n 4))

Es ist jedoch möglicherweise besser, diese Einschränkung zu hinzufügen (n_miembros_familia ?n).

(n_miembros_familia ?n&:(> ?n 4))