annotate service/mqtt_to_rdf/mqtt_message.py @ 1706:2085ed9cfcc4

reworking UI to reflect the new inferencing code
author drewp@bigasterisk.com
date Sat, 23 Oct 2021 13:22:40 -0700
parents b3132cd02686
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1630
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
1 import json
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
2 import uuid
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
3
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
4 from rdflib import RDF, URIRef, BNode, Graph, Literal, Namespace
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
5 from rdflib.collection import Collection
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
6
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
7 ROOM = Namespace('http://projects.bigasterisk.com/room/')
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
8 JSON = Namespace('http://bigasterisk.com/anyJson/')
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
9
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
10
1706
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1630
diff changeset
11 def graphFromMessage(topicUri: URIRef, topic: bytes, body: bytes):
1630
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
12 graph = Graph()
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
13 message = URIRef(f'{uuid.uuid1().urn}')
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
14
1706
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1630
diff changeset
15 graph.add((topicUri, ROOM['message'], message))
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1630
diff changeset
16
1630
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
17 graph.add((message, RDF.type, ROOM['MqttMessage']))
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
18
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
19 topicSegments = BNode()
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
20 graph.add((message, ROOM['topic'], topicSegments))
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
21 Collection(graph, topicSegments, map(Literal, topic.decode('ascii').split('/')))
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
22
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
23 bodyStr = body.decode('utf8')
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
24 graph.add((message, ROOM['body'], Literal(bodyStr)))
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
25 try:
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
26 graph.add((message, ROOM['bodyFloat'], Literal(float(bodyStr))))
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
27 except ValueError:
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
28 pass
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
29 _maybeAddJson(graph, message, bodyStr)
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
30 return graph
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
31
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
32
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
33 def _maybeAddJson(graph, message, bodyStr):
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
34 if not bodyStr.startswith('{'):
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
35 return
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
36 try:
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
37 doc = json.loads(bodyStr)
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
38 except ValueError:
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
39 return
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
40 print(f'got {doc=}')
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
41 jsonRoot = BNode()
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
42 graph.add((message, ROOM['bodyJson'], jsonRoot))
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
43 for k, v in doc.items():
b3132cd02686 add mqtt_message
drewp@bigasterisk.com
parents:
diff changeset
44 graph.add((jsonRoot, JSON[k], Literal(v)))