diff service/mqtt_to_rdf/inference.py @ 1674:4a15b4cd4600

don't jsut quietly succeed if iteration limit is reached
author drewp@bigasterisk.com
date Wed, 22 Sep 2021 01:02:26 -0700
parents 80f4e741ca4f
children aa35ae7a1acc
line wrap: on
line diff
--- a/service/mqtt_to_rdf/inference.py	Wed Sep 22 01:00:32 2021 -0700
+++ b/service/mqtt_to_rdf/inference.py	Wed Sep 22 01:02:26 2021 -0700
@@ -436,7 +436,7 @@
         rulesIterations = 0
         delta = 1
         stats['initWorkingSet'] = cast(int, workingSet.__len__())
-        while delta > 0 and rulesIterations <= self.rulesIterationLimit:
+        while delta > 0:
             log.debug('')
             log.info(f'{INDENT*1}*iteration {rulesIterations}')
 
@@ -445,6 +445,8 @@
             delta += len(implied)
             rulesIterations += 1
             log.info(f'{INDENT*2} this inference iteration added {delta} more implied stmts')
+            if rulesIterations >= self.rulesIterationLimit:
+                raise ValueError(f"rule too complex after {rulesIterations=}")
         stats['iterations'] = rulesIterations
         stats['timeSpent'] = round(time.time() - startTime, 3)
         stats['impliedStmts'] = len(implied)