I am currently still trying to figure out the solution.

1. If I do not call coreInfModel.prepare(), nothing happens during the
triple update which is WAD, I believe.
2. When one triple is updated, all the rules which have true condition will
be triggered, rather than the rules related. I am expecting the other rules
will not be triggered unless its related triplets are updated. Is it
possible?


L B <[email protected]> 于2023年3月24日周五 16:10写道:

>
> 1) Init code:
>
> GenericRuleReasoner reasoner = new GenericRuleReasoner(new
> ArrayList<Rule>());
>             reasoner.setMode(GenericRuleReasoner.FORWARD);
>             mCoreInfModel = ModelFactory.createInfModel(reasoner,
> mCoreModel);
>
> 2) Statement exits
>  (:A :B :C)
>
> 3) Rule exists and triggered before
>
>             [ alwaysTrue:
>                 (:A :B :C)
>                 -> triggerAction
>             ]
>
> 4) Now, I am trying to add rules at runtime.
>
>              [ rule2:
>                 (:X :Y :Z)
>                 -> triggerAction2
>             ]
>
>         InfModel infModel = getCoreInfModel();
>         BasicForwardRuleInfGraph infGraph = (BasicForwardRuleInfGraph)
> infModel.getGraph();          infGraph.addRule(rule)
>         coreInfModel.prepare()
>
> 5) add triple (:X :Y :Z)
>
>         val infGraph = infModel.graph as BasicForwardRuleInfGraph
>        infGraph.add(triple)
>
> *The problem comes, both "alwaysTrue" and "rule2" triggered.*
>
> *I am expecting only "rule2" is triggered. *
>
> Is there anyway that only "rule2" can be triggered since the updated
> triple is only X, Y Z?
>
> Many thanks
>
>
>

Reply via email to