diff lib/patchablegraph.py @ 298:8d89da1915df

sse_collector now kind of gets concurrent requests right Ignore-this: e1a104d9ae81473b86fc12fbb8ac097b
author drewp@bigasterisk.com
date Fri, 19 Aug 2016 22:37:01 -0700
parents 4ebb5cc30002
children a94f2a522d41
line wrap: on
line diff
--- a/lib/patchablegraph.py	Fri Aug 19 10:59:39 2016 -0700
+++ b/lib/patchablegraph.py	Fri Aug 19 22:37:01 2016 -0700
@@ -26,7 +26,9 @@
 from light9.rdfdb.grapheditapi import GraphEditApi
 from rdflib import ConjunctiveGraph
 from light9.rdfdb.rdflibpatch import patchQuads
+from light9.rdfdb.patch import Patch
 from rdflib_jsonld.serializer import from_rdf
+from rdflib.parser import StringInputSource
 from cycloneerr import PrettyErrorHandler
 
 log = logging.getLogger('patchablegraph')
@@ -51,11 +53,21 @@
         #g.store.add((s,p,o), c) # no effect on nquad output
     return g
 
-def patchAsJson(p):
+def jsonFromPatch(p):
     return json.dumps({'patch': {
         'adds': from_rdf(_graphFromQuads2(p.addQuads)),
         'deletes': from_rdf(_graphFromQuads2(p.delQuads)),
     }})
+patchAsJson = jsonFromPatch # deprecated name
+
+    
+def patchFromJson(j):
+    body = json.loads(j)['patch']
+    a = ConjunctiveGraph()
+    a.parse(StringInputSource(json.dumps(body['adds'])), format='json-ld')
+    d = ConjunctiveGraph()
+    d.parse(StringInputSource(json.dumps(body['deletes'])), format='json-ld')
+    return Patch(addGraph=a, delGraph=d)
 
 def graphAsJson(g):
     # This is not the same as g.serialize(format='json-ld')! That