Mercurial > code > home > repos > homeauto
view service/mqtt_graph_bridge/rdf_over_http.py @ 1500:c7cb4db0a05d
influx on default host 'bang5'
Ignore-this: d061f2f1587f4aadc0e51d840889de79
darcs-hash:946c22f5a028fc34fd2ff1d911a873edc82fcdf5
author | drewp <drewp@bigasterisk.com> |
---|---|
date | Sun, 02 Feb 2020 14:42:07 -0800 |
parents | 690226a7dddb |
children |
line wrap: on
line source
from rdflib import Graph, URIRef, Literal, Namespace from rdflib.parser import StringInputSource ROOM = Namespace('http://projects.bigasterisk.com/room/') def rdfGraphBody(body, headers): g = Graph() g.parse(StringInputSource(body), format='nt') return g def expandQueryParamUri(txt) -> URIRef: if txt.startswith(':'): return ROOM[txt.lstrip(':')] # etc return URIRef(txt) def rdfStatementsFromRequest(arg, body, headers): if arg.get('s') and arg.get('p'): subj = expandQueryParamUri(arg['s'][-1]) pred = expandQueryParamUri(arg['p'][-1]) turtleLiteral = body try: obj = Literal(float(turtleLiteral)) except ValueError: obj = Literal(turtleLiteral) yield (subj, pred, obj) else: g = rdfGraphBody(body, headers) assert len(g) == 1, len(g) yield g.triples((None, None, None)).next() # could support multiple stmts