java.lang.Object
org.apache.jena.reasoner.rulesys.impl.RETEEngine
- All Implemented Interfaces:
FRuleEngineI
A RETE version of the forward rule system engine. It needs to reference
an enclosing ForwardInfGraphI which holds the raw data and deductions.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classStructure used to wrap up processed rule indexes. -
Constructor Summary
ConstructorsConstructorDescriptionRETEEngine(ForwardRuleInfGraphI parent) Constructor.RETEEngine(ForwardRuleInfGraphI parent, List<Rule> rules) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoidAdd one triple to the data graph, run any rules triggered by the new data item, recursively adding any generated triples.voidAdd a new triple to the network.voidCompile a list of rules into the internal rule store representation.booleanRemove one triple to the data graph.voiddeleteTriple(Triple triple, boolean deduction) Remove a new triple from the network.voidProcess all available data.longReturn the number of rules fired since this rule engine instance was created and initializedAccess the precomputed internal rule form.voidProcess all available data.voidrequestRuleFiring(Rule rule, BindingEnvironment env, boolean isAdd) Add a rule firing request to the conflict set.voidrunAll()Process the queue of pending insert/deletes until the queues are empty.voidsetDerivationLogging(boolean recordDerivations) Set to true to enable derivation cachingvoidsetRuleStore(Object ruleStore) Set the internal rule from a precomputed state.booleanReturn true if the internal engine state means that tracing is worthwhile.voidThis fires a triple into the current RETE network.
-
Constructor Details
-
RETEEngine
Constructor.- Parameters:
parent- the F or FB infGraph that it using this engine, the parent graph holds the deductions graph and source data.rules- the rule set to be processed
-
RETEEngine
Constructor. Build an empty engine to which rules must be added using setRuleStore().- Parameters:
parent- the F or FB infGraph that it using this engine, the parent graph holds the deductions graph and source data.
-
-
Method Details
-
init
Process all available data. This should be called once a deductions graph has be prepared and loaded with any precomputed deductions. It will process the rule axioms and all relevant existing exiting data entries.- Specified by:
initin interfaceFRuleEngineI- Parameters:
ignoreBrules- set to true if rules written in backward notation should be ignoredinserts- the set of triples to be processed, normally this is the raw data graph but may include additional deductions made by preprocessing hooks
-
fastInit
Process all available data. This version expects that all the axioms have already be preprocessed and the clause index already exists.- Specified by:
fastInitin interfaceFRuleEngineI- Parameters:
inserts- the set of triples to be processed, normally this is the raw data graph but may include additional deductions made by preprocessing hooks
-
add
Add one triple to the data graph, run any rules triggered by the new data item, recursively adding any generated triples.- Specified by:
addin interfaceFRuleEngineI
-
delete
Remove one triple to the data graph.- Specified by:
deletein interfaceFRuleEngineI- Returns:
- true if the effects could be correctly propagated or false if not (in which case the entire engine should be restarted).
-
getNRulesFired
public long getNRulesFired()Return the number of rules fired since this rule engine instance was created and initialized- Specified by:
getNRulesFiredin interfaceFRuleEngineI
-
shouldTrace
public boolean shouldTrace()Return true if the internal engine state means that tracing is worthwhile. It will return false during the axiom bootstrap phase.- Specified by:
shouldTracein interfaceFRuleEngineI
-
setDerivationLogging
public void setDerivationLogging(boolean recordDerivations) Set to true to enable derivation caching- Specified by:
setDerivationLoggingin interfaceFRuleEngineI
-
getRuleStore
Access the precomputed internal rule form. Used when precomputing the internal axiom closures.- Specified by:
getRuleStorein interfaceFRuleEngineI
-
setRuleStore
Set the internal rule from a precomputed state.- Specified by:
setRuleStorein interfaceFRuleEngineI
-
requestRuleFiring
Add a rule firing request to the conflict set. -
compile
Compile a list of rules into the internal rule store representation.- Parameters:
rules- the list of Rule objectsignoreBrules- set to true if rules written in backward notation should be ignored
-
addTriple
Add a new triple to the network.- Parameters:
triple- the new triplededuction- true if the triple has been generated by the rules and so should be added to the deductions graph.
-
deleteTriple
Remove a new triple from the network.- Parameters:
triple- the new triplededuction- true if the remove has been generated by the rules
-
runAll
public void runAll()Process the queue of pending insert/deletes until the queues are empty. Public to simplify unit tests - not normally called directly. -
testTripleInsert
This fires a triple into the current RETE network. This format of call is used in the unit testing but needs to be public because the tester is in another package.
-