# HG changeset patch # User drewp@bigasterisk.com # Date 1632298925 25200 # Node ID aa35ae7a1acc703b000ba2da546a65ca27e638a3 # Parent e6d28e6d47b2a4fdd1707d7004cdb4b090f1db3c add new bug test (no fix yet) diff -r e6d28e6d47b2 -r aa35ae7a1acc service/mqtt_to_rdf/inference.py --- 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)}') diff -r e6d28e6d47b2 -r aa35ae7a1acc service/mqtt_to_rdf/inference_test.py --- 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 . + :airQualityOutdoor :statementSourceBase . + ''')) + class TestListPerformance(WithGraphEqual): diff -r e6d28e6d47b2 -r aa35ae7a1acc service/mqtt_to_rdf/stmt_chunk.py --- 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: