annotate service/mqtt_graph_bridge/rdf_over_http.py @ 1497:44de96fd0e6e

add publish to ON/OFF messages. split up the main statement handler Ignore-this: b1ec515e6873a6841b1c31c3fb7a2a36 darcs-hash:5ce3d7a66e7e45b2be2345a52e737cd0426dd985
author drewp <drewp@bigasterisk.com>
date Fri, 31 Jan 2020 23:55:27 -0800
parents 690226a7dddb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1495
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
1 from rdflib import Graph, URIRef, Literal, Namespace
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
2 from rdflib.parser import StringInputSource
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
3
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
4 ROOM = Namespace('http://projects.bigasterisk.com/room/')
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
5
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
6
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
7 def rdfGraphBody(body, headers):
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
8 g = Graph()
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
9 g.parse(StringInputSource(body), format='nt')
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
10 return g
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
11
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
12
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
13 def expandQueryParamUri(txt) -> URIRef:
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
14 if txt.startswith(':'):
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
15 return ROOM[txt.lstrip(':')]
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
16 # etc
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
17 return URIRef(txt)
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
18
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
19
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
20 def rdfStatementsFromRequest(arg, body, headers):
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
21 if arg.get('s') and arg.get('p'):
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
22 subj = expandQueryParamUri(arg['s'][-1])
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
23 pred = expandQueryParamUri(arg['p'][-1])
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
24 turtleLiteral = body
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
25 try:
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
26 obj = Literal(float(turtleLiteral))
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
27 except ValueError:
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
28 obj = Literal(turtleLiteral)
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
29 yield (subj, pred, obj)
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
30 else:
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
31 g = rdfGraphBody(body, headers)
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
32 assert len(g) == 1, len(g)
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
33 yield g.triples((None, None, None)).next()
690226a7dddb extract rdfStatementsFromRequest for sharing with other tools
drewp <drewp@bigasterisk.com>
parents:
diff changeset
34 # could support multiple stmts