On 06/06/14 16:40, Miguel Bento Alves wrote:
A doubt about processing of jena rules:
new triples generated by rules are saved in the model? or processed in
runtime, when the rule is invoked?
for instance,
I have the following triples:
eg:A eg:p eg:B .
eg:B eg:p eg:C .
eg:C eg:p eg:D .
and the rule:
[rule1: (?a <eg:p> ?b) (?b <eg:p> ?c) -> (?a <eg:p> ?c)]
The following triples are saved in the model or are generated every time the
rule is invoked?
For the forward engine (which that rule will use unless you override it)
then the triples are generated in the separate deductionsModel and not
regenerated at each query. In addition the partial matches for each
pattern will be stored in the RETE network.
For the backward engine then it depends on tabling. With the backward
engine you can set predicates to be tabled (essentially any goal with
that predicate in will be cached). So if <eg:p> is tabled then results
aren't added to the model but repeats of the same or related queries
will reuse information from the tables. If it is not tabled then the
information is recreated each time.
Dave