Hi Dave,
Why? The correct, standard way to do disjunctions in rule systems is to have multiple rules. Stick with that approach. Yep, I understand, but the problem is that the number of rules will get quite high with this approach depending on the configuration of the disease modeled. The only rule that that initializes the counter is: rule_dX_NOT_REST_SIGNS which (a) only fires if there is a finding other than sA to sE and (b) asserts your ont:dX_NOT_SIGNS flag. So the only situation in which there is a zero counter to get the counting started is one where you have some other finding and even then those counting rules will never fire because they are guarded by: noValue(?i, ont:hasNegSign ont:dX_NOT_SIGNS) If they did fire than be aware that the counting rules you have do not remove the older counts (the painful bit of counting in JenaRules) so you'll end up with all the count values not a single total value. I saw.. I've been working on this, and I've modified the rules. From my POV are correct, but probably I'm missing something since the new approach is not working: http://pastebin.com/EGB2s2YK I've created a rule to init the counter when a sign is received and the counter doesn't have any value (I'm using value 4 as an example, but I have also tried with noValue builtin), but it doesn't work. I've also modified the rule where the counter is increased, not checking the flag dX_NOT_SIGNS (only is checked in diagnosis). The workflow should be (if I'm not wrong): 1. Check if there is any forbidden sign (allowed: sA to sE). If there is any forbidden sign, set flat dX_NOT_SIGNS 2. Init the counter when: you received a sign & counter != 4 3. Increase counter when you receive sC 4. Return dX as diagnosis: we have as input sA & sB & counter >= 1 & dX_NOT_SIGNS flag is not set
