Hey, after using GenericRuleReasoner and InfModel more extensively, we started experiencing memory leaks that eventually kill our webapp because it runs out of heap space. Jena version is 2.11.0.
After some profiling, it seems that RETEEngine.clauseIndex and/or RETEEngine.infGraph are retaining a lot of references. It might be related to this report, but I'm not sure: https://mail-archives.apache.org/mod_mbox/jena-users/201403.mbox/%3c5319b4e0.4060...@gmail.com%3E The suggestion was to use use backward rules instead of forward rules. I have read the following: https://jena.apache.org/documentation/inference/#rules But still I fail to understand in which situations backward rules can/should be used instead of forward rules? I guess simply replacing -> with <- will not be enough? The actual rules in question look like this: [gp: (?class rdf:type <http://www.w3.org/2000/01/rdf-schema#Class>), (?class ?p ?o), (?p rdf:type owl:AnnotationProperty), (?p rdfs:isDefinedBy <http://graphity.org/gp#>), (?subClass rdfs:subClassOf ?class), (?subClass rdf:type <http://www.w3.org/2000/01/rdf-schema#Class>), noValue(?subClass ?p) -> (?subClass ?p ?o) ] [gcdm: (?template rdf:type <http://graphity.org/gp#Template>), (?template <http://graphity.org/gc#defaultMode> ?o), (?subClass rdfs:subClassOf ?template), (?subClass rdf:type <http://graphity.org/gp#Template>), noValue(?subClass <http://graphity.org/gc#defaultMode>) -> (?subClass <http://graphity.org/gc#defaultMode> ?o) ] [gcsm: (?template rdf:type <http://graphity.org/gp#Template>), (?template <http://graphity.org/gc#supportedMode> ?supportedMode), (?subClass rdfs:subClassOf ?template), (?subClass rdf:type <http://graphity.org/gp#Template>) -> (?subClass <http://graphity.org/gc#supportedMode> ?supportedMode) ] [rdfs9: (?x rdfs:subClassOf ?y), (?a rdf:type ?x) -> (?a rdf:type ?y)] Can these be rewritten as backward rules instead? Does it involve code changes, such as calling reset() etc? I would appreciate any help. Martynas atomgraph.com