changeset 1677:aa35ae7a1acc

add new bug test (no fix yet)
author drewp@bigasterisk.com
date Wed, 22 Sep 2021 01:22:05 -0700
parents e6d28e6d47b2
children 7831b5de3572
files service/mqtt_to_rdf/inference.py service/mqtt_to_rdf/inference_test.py service/mqtt_to_rdf/stmt_chunk.py
diffstat 3 files changed, 21 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/service/mqtt_to_rdf/inference.py	Wed Sep 22 01:07:37 2021 -0700
+++ b/service/mqtt_to_rdf/inference.py	Wed Sep 22 01:22:05 2021 -0700
@@ -473,6 +473,6 @@
         log.debug('')
         log.debug(f'{INDENT*2}-applying rule {i}')
         log.debug(f'{INDENT*3} rule def lhs:')
-        for stmt in sorted(r.lhsGraph, reverse=True):
+        for stmt in sorted(r.lhs.graph.allChunks()):
             log.debug(f'{INDENT*4} {stmt}')
         log.debug(f'{INDENT*3} rule def rhs: {graphDump(r.rhsGraph)}')
--- a/service/mqtt_to_rdf/inference_test.py	Wed Sep 22 01:07:37 2021 -0700
+++ b/service/mqtt_to_rdf/inference_test.py	Wed Sep 22 01:22:05 2021 -0700
@@ -401,6 +401,24 @@
 
 ''')
 
+    def testRemap(self):
+        inf = makeInferenceWithRules('''
+            {
+            ?sensor a :AirQualitySensor; :label ?name .
+            (:mqttSource ?name) :childResource ?base .
+            } => {
+            ?sensor :statementSourceBase ?base .
+            } .
+        ''')
+        out = inf.infer(N3('''
+            :airQualityIndoor a :AirQualitySensor; :label "air_quality_indoor" .
+            :airQualityOutdoor a :AirQualitySensor; :label "air_quality_outdoor" .
+        '''))
+        self.assertGraphEqual(out, N3('''
+            :airQualityIndoor  :statementSourceBase <http://projects.bigasterisk.com/room/mqttSource/air_quality_indoor> .
+            :airQualityOutdoor :statementSourceBase <http://projects.bigasterisk.com/room/mqttSource/air_quality_outdoor> .
+        '''))
+
 
 class TestListPerformance(WithGraphEqual):
 
--- a/service/mqtt_to_rdf/stmt_chunk.py	Wed Sep 22 01:07:37 2021 -0700
+++ b/service/mqtt_to_rdf/stmt_chunk.py	Wed Sep 22 01:22:05 2021 -0700
@@ -118,8 +118,8 @@
             yield aligned
 
     def __repr__(self):
-        pre = ('+'.join('%s' % elem for elem in self.subjList) + '+' if self.subjList else '')
-        post = ('+' + '+'.join('%s' % elem for elem in self.objList) if self.objList else '')
+        pre = ('+'.join(repr(elem) for elem in self.subjList) + '+' if self.subjList else '')
+        post = ('+' + '+'.join(repr(elem) for elem in self.objList) if self.objList else '')
         return pre + repr(self.primary) + post
 
     def isFunctionCall(self, functionsFor) -> bool: