diff options
Diffstat (limited to 'creactistore/_templates/lib/rdflib/plugins/serializers/nquads.py')
-rw-r--r-- | creactistore/_templates/lib/rdflib/plugins/serializers/nquads.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/creactistore/_templates/lib/rdflib/plugins/serializers/nquads.py b/creactistore/_templates/lib/rdflib/plugins/serializers/nquads.py new file mode 100644 index 0000000..29e0dff --- /dev/null +++ b/creactistore/_templates/lib/rdflib/plugins/serializers/nquads.py @@ -0,0 +1,34 @@ +import warnings + +from rdflib.serializer import Serializer +from rdflib.py3compat import b + +from rdflib.plugins.serializers.nt import _xmlcharref_encode + +__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): + return u"%s %s %s %s .\n" % (triple[0].n3(), + triple[1].n3(), + _xmlcharref_encode(triple[2].n3()), + context.n3()) + |