Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/creactistore/_templates/lib/rdflib/plugins/serializers/nquads.py
blob: 29e0dff50e64e22ad822d1683713fd0d3a210a0a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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())