Thanks Dave for your answer.

I need to use a RETE engine since I want it to infer « live » when I add new 
triples in the graph. So it seems to me that forward_rete is the only option 
for that. Other options recheck the full graph to recompute inferences, right ?

Based on your answer, it seems that I now have 2 choices :
        1. try to patch the RETE engine
        2. try to start developing a brand new rete-like engine, probably less 
memory consuming, but probably also slower than the existing one.

Chris.

Le 7 mars 2014 à 13:00, Dave Reynolds <[email protected]> a écrit :

> On 07/03/14 10:36, Christophe FAGOT wrote:
>> Hi there,
>> 
>> I’m actually using Jena in forward rete configuration, with Jena 2.11.1. If 
>> I use some very simple rules like the following, the memory used by my JVM 
>> becomes huge with few statements (around 100Mo for only 3500 statements). I 
>> ran a simple test in which instances and data property values were always 
>> different, in order to avoid combinatorial combinaisons.
>> 
>> The sample rule :
>> 
>> [rule: (?instance rdf:type test:Instance),
>>              (?object rdf:type test:Object),
>>              (?instance test:instanceAge ?age),
>>              (?object test:objectAge ?age),
>>              ->
>>              (?instance test:isLinked "true"^^xsd:boolean)]
>> 
>> Does anyone see a reason for such huge memory space required by the RETE 
>> engine ? Any workaround to use ?
> 
> It's due to the crudeness of the Jena RETE implementation.
> 
> It is in effect doing (pseudo-notation):
> 
>  (?instance rdf:type test:Instance)
>  (?object rdf:type test:Object)
>  (?instance test:instanceAge ?age1)
>  (?object test:objectAge ?age2)
>  (= ?age1 ?age2)
> 
> So that it builds a queue of all possible instance/object pairs before the 
> final join on age.
> 
> Which means that queue ends up as N(objects) * N(instances) long. So 
> quadratic rather than combinatorial but that's enough for the blow up.
> 
> Can't think of a work around.
> 
> If you can use backward rules instead of RETE that should help.
> 
> The RETE engine could certainly be improved (patches welcome). Though the 
> looooong term best option might be to consider phasing out both the existing 
> rule engines in favour of something simpler and more scalable. Not something 
> I could personally contribute to right now.
> 
> Dave

Christophe FAGOT, PhD - Product owner, informatique

::  intactile DESIGN ::  création industrielle en Interface Homme Machine [ IHM 
]  ::  20 rue du carré du roi  ::  34000 MONTPELLIER  ::  France
:: +33 (0)4 67 52 88 61  ::  +33 (0)9 50 12 05 66   ::   [email protected]  
::   http://www.intactile.com

Hugh MacLeod : "It's not what the software does, it's what the user does"

Les informations contenues dans cet email et ses documents attachés sont 
confidentielles. Elles sont exclusivement adressées aux destinataires 
explicitement désignés ci-dessus et ne peuvent être divulguées sans 
consentement de son auteur. Si vous n'êtes pas le destinataire de cet email 
vous ne devez pas employer, révéler, distribuer, copier, imprimer ou 
transmettre le contenu de cet email et devez le détruire immédiatement.





Reply via email to