comparison service/mqtt_to_rdf/rdflib_debug_patches.py @ 1595:413a280828bf

extract module of rdflib output patches
author drewp@bigasterisk.com
date Sun, 05 Sep 2021 01:51:49 -0700
parents
children 82ddd3e6b227
comparison
equal deleted inserted replaced
1594:e58bcfa66093 1595:413a280828bf
1 """rdflib patches for prettier debug outut"""
2
3 import itertools
4
5 import rdflib
6 import rdflib.plugins.parsers.notation3
7 import rdflib.term
8 from rdflib import BNode
9
10
11 def patchSlimReprs():
12 """From: rdflib.term.URIRef('foo')
13 To: U('foo')
14 """
15
16 def ur(self):
17 clsName = "U" if self.__class__ is rdflib.term.URIRef else self.__class__.__name__
18 return """%s(%s)""" % (clsName, super(rdflib.term.URIRef, self).__repr__())
19
20 rdflib.term.URIRef.__repr__ = ur
21
22 def br(self):
23 clsName = "BNode" if self.__class__ is rdflib.term.BNode else self.__class__.__name__
24 return """%s(%s)""" % (clsName, super(rdflib.term.BNode, self).__repr__())
25
26 rdflib.term.BNode.__repr__ = br
27
28 def vr(self):
29 clsName = "V" if self.__class__ is rdflib.term.Variable else self.__class__.__name__
30 return """%s(%s)""" % (clsName, super(rdflib.term.Variable, self).__repr__())
31
32 rdflib.term.Variable.__repr__ = vr
33
34
35 def patchBnodeCounter():
36 """From: rdflib.terms.BNode('ne7bb4a51624993acdf51cc5d4e8add30e1')
37 To: BNode('f-6-1')
38 """
39 serial = itertools.count()
40
41 def n(cls, value=None, _sn_gen='', _prefix='') -> BNode:
42 if value is None:
43 value = 'N-%s' % next(serial)
44 return rdflib.term.Identifier.__new__(cls, value)
45
46 rdflib.term.BNode.__new__ = n
47
48 def newBlankNode(self, uri=None, why=None):
49 if uri is None:
50 self.counter += 1
51 bn = BNode('f-%s-%s' % (self.number, self.counter))
52 else:
53 bn = BNode(uri.split('#').pop().replace('_', 'b'))
54 return bn
55
56 rdflib.plugins.parsers.notation3.Formula.newBlankNode = newBlankNode