diff planemo/lib/python3.7/site-packages/rdflib/plugins/serializers/nquads.py @ 1:56ad4e20f292 draft

"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author guerler
date Fri, 31 Jul 2020 00:32:28 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/planemo/lib/python3.7/site-packages/rdflib/plugins/serializers/nquads.py	Fri Jul 31 00:32:28 2020 -0400
@@ -0,0 +1,45 @@
+import warnings
+
+from rdflib.term import Literal
+from rdflib.serializer import Serializer
+from rdflib.py3compat import b
+
+from rdflib.plugins.serializers.nt import _quoteLiteral
+
+__all__ = ['NQuadsSerializer']
+
+
+class NQuadsSerializer(Serializer):
+
+    def __init__(self, store):
+        if not store.context_aware:
+            raise Exception(
+                "NQuads serialization only makes "
+                "sense for context-aware stores!")
+
+        super(NQuadsSerializer, self).__init__(store)
+
+    def serialize(self, stream, base=None, encoding=None, **args):
+        if base is not None:
+            warnings.warn("NQuadsSerializer does not support base.")
+        if encoding is not None:
+            warnings.warn("NQuadsSerializer does not use custom encoding.")
+        encoding = self.encoding
+        for context in self.store.contexts():
+            for triple in context:
+                stream.write(_nq_row(
+                    triple, context.identifier).encode(encoding, "replace"))
+        stream.write(b("\n"))
+
+
+def _nq_row(triple, context):
+    if isinstance(triple[2], Literal):
+        return "%s %s %s %s .\n" % (triple[0].n3(),
+                                     triple[1].n3(),
+                                     _quoteLiteral(triple[2]),
+                                     context.n3())
+    else:
+        return "%s %s %s %s .\n" % (triple[0].n3(),
+                                     triple[1].n3(),
+                                     triple[2].n3(),
+                                     context.n3())