comparison env/lib/python3.9/site-packages/rdflib/plugin.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 """
2 Plugin support for rdf.
3
4 There are a number of plugin points for rdf: parser, serializer,
5 store, query processor, and query result. Plugins can be registered
6 either through setuptools entry_points or by calling
7 rdf.plugin.register directly.
8
9 If you have a package that uses a setuptools based setup.py you can add the
10 following to your setup::
11
12 entry_points = {
13 'rdf.plugins.parser': [
14 'nt = rdf.plugins.parsers.nt:NTParser',
15 ],
16 'rdf.plugins.serializer': [
17 'nt = rdf.plugins.serializers.NTSerializer:NTSerializer',
18 ],
19 }
20
21 See the `setuptools dynamic discovery of services and plugins`__ for more
22 information.
23
24 .. __: http://peak.telecommunity.com/DevCenter/setuptools#dynamic-discovery-of-services-and-plugins
25
26 """
27 from __future__ import absolute_import
28 from __future__ import division
29 from __future__ import print_function
30
31 from rdflib.store import Store
32 from rdflib.parser import Parser
33 from rdflib.serializer import Serializer
34 from rdflib.query import ResultParser, ResultSerializer, \
35 Processor, Result, UpdateProcessor
36 from rdflib.exceptions import Error
37
38 __all__ = [
39 'register', 'get', 'plugins', 'PluginException', 'Plugin', 'PKGPlugin']
40
41 entry_points = {'rdf.plugins.store': Store,
42 'rdf.plugins.serializer': Serializer,
43 'rdf.plugins.parser': Parser,
44 'rdf.plugins.resultparser': ResultParser,
45 'rdf.plugins.resultserializer': ResultSerializer,
46 'rdf.plugins.queryprocessor': Processor,
47 'rdf.plugins.queryresult': Result,
48 'rdf.plugins.updateprocessor': UpdateProcessor
49 }
50
51 _plugins = {}
52
53
54 class PluginException(Error):
55 pass
56
57
58 class Plugin(object):
59
60 def __init__(self, name, kind, module_path, class_name):
61 self.name = name
62 self.kind = kind
63 self.module_path = module_path
64 self.class_name = class_name
65 self._class = None
66
67 def getClass(self):
68 if self._class is None:
69 module = __import__(self.module_path, globals(), locals(), [""])
70 self._class = getattr(module, self.class_name)
71 return self._class
72
73
74 class PKGPlugin(Plugin):
75
76 def __init__(self, name, kind, ep):
77 self.name = name
78 self.kind = kind
79 self.ep = ep
80 self._class = None
81
82 def getClass(self):
83 if self._class is None:
84 self._class = self.ep.load()
85 return self._class
86
87
88 def register(name, kind, module_path, class_name):
89 """
90 Register the plugin for (name, kind). The module_path and
91 class_name should be the path to a plugin class.
92 """
93 p = Plugin(name, kind, module_path, class_name)
94 _plugins[(name, kind)] = p
95
96
97 def get(name, kind):
98 """
99 Return the class for the specified (name, kind). Raises a
100 PluginException if unable to do so.
101 """
102 try:
103 p = _plugins[(name, kind)]
104 except KeyError:
105 raise PluginException(
106 "No plugin registered for (%s, %s)" % (name, kind))
107 return p.getClass()
108
109
110 try:
111 from pkg_resources import iter_entry_points
112 except ImportError:
113 pass # TODO: log a message
114 else:
115 # add the plugins specified via pkg_resources' EntryPoints.
116 for entry_point, kind in entry_points.items():
117 for ep in iter_entry_points(entry_point):
118 _plugins[(ep.name, kind)] = PKGPlugin(ep.name, kind, ep)
119
120
121 def plugins(name=None, kind=None):
122 """
123 A generator of the plugins.
124
125 Pass in name and kind to filter... else leave None to match all.
126 """
127 for p in _plugins.values():
128 if (name is None or name == p.name) and (
129 kind is None or kind == p.kind):
130 yield p
131
132
133 register(
134 'default', Store,
135 'rdflib.plugins.memory', 'IOMemory')
136 register(
137 'IOMemory', Store,
138 'rdflib.plugins.memory', 'IOMemory')
139 register(
140 'Auditable', Store,
141 'rdflib.plugins.stores.auditable', 'AuditableStore')
142 register(
143 'Concurrent', Store,
144 'rdflib.plugins.stores.concurrent', 'ConcurrentStore')
145 register(
146 'Sleepycat', Store,
147 'rdflib.plugins.sleepycat', 'Sleepycat')
148 register(
149 'SPARQLStore', Store,
150 'rdflib.plugins.stores.sparqlstore', 'SPARQLStore')
151 register(
152 'SPARQLUpdateStore', Store,
153 'rdflib.plugins.stores.sparqlstore', 'SPARQLUpdateStore')
154
155 register(
156 'application/rdf+xml', Serializer,
157 'rdflib.plugins.serializers.rdfxml', 'XMLSerializer')
158 register(
159 'xml', Serializer,
160 'rdflib.plugins.serializers.rdfxml', 'XMLSerializer')
161 register(
162 'text/n3', Serializer,
163 'rdflib.plugins.serializers.n3', 'N3Serializer')
164 register(
165 'n3', Serializer,
166 'rdflib.plugins.serializers.n3', 'N3Serializer')
167 register(
168 'text/turtle', Serializer,
169 'rdflib.plugins.serializers.turtle', 'TurtleSerializer')
170 register(
171 'turtle', Serializer,
172 'rdflib.plugins.serializers.turtle', 'TurtleSerializer')
173 register(
174 'ttl', Serializer,
175 'rdflib.plugins.serializers.turtle', 'TurtleSerializer')
176 register(
177 'trig', Serializer,
178 'rdflib.plugins.serializers.trig', 'TrigSerializer')
179 register(
180 'application/n-triples', Serializer,
181 'rdflib.plugins.serializers.nt', 'NTSerializer')
182 register(
183 'ntriples', Serializer,
184 'rdflib.plugins.serializers.nt', 'NTSerializer')
185 register(
186 'nt', Serializer,
187 'rdflib.plugins.serializers.nt', 'NTSerializer')
188 register(
189 'nt11', Serializer,
190 'rdflib.plugins.serializers.nt', 'NT11Serializer')
191
192 register(
193 'pretty-xml', Serializer,
194 'rdflib.plugins.serializers.rdfxml', 'PrettyXMLSerializer')
195 register(
196 'trix', Serializer,
197 'rdflib.plugins.serializers.trix', 'TriXSerializer')
198 register(
199 'application/trix', Serializer,
200 'rdflib.plugins.serializers.trix', 'TriXSerializer')
201 register(
202 'application/n-quads', Serializer,
203 'rdflib.plugins.serializers.nquads', 'NQuadsSerializer')
204 register(
205 'nquads', Serializer,
206 'rdflib.plugins.serializers.nquads', 'NQuadsSerializer')
207
208 register(
209 'application/rdf+xml', Parser,
210 'rdflib.plugins.parsers.rdfxml', 'RDFXMLParser')
211 register(
212 'xml', Parser,
213 'rdflib.plugins.parsers.rdfxml', 'RDFXMLParser')
214 register(
215 'text/n3', Parser,
216 'rdflib.plugins.parsers.notation3', 'N3Parser')
217 register(
218 'n3', Parser,
219 'rdflib.plugins.parsers.notation3', 'N3Parser')
220 register(
221 'text/turtle', Parser,
222 'rdflib.plugins.parsers.notation3', 'TurtleParser')
223 register(
224 'turtle', Parser,
225 'rdflib.plugins.parsers.notation3', 'TurtleParser')
226 register(
227 'ttl', Parser,
228 'rdflib.plugins.parsers.notation3', 'TurtleParser')
229 register(
230 'application/n-triples', Parser,
231 'rdflib.plugins.parsers.nt', 'NTParser')
232 register(
233 'ntriples', Parser,
234 'rdflib.plugins.parsers.nt', 'NTParser')
235 register(
236 'nt', Parser,
237 'rdflib.plugins.parsers.nt', 'NTParser')
238 register(
239 'nt11', Parser,
240 'rdflib.plugins.parsers.nt', 'NTParser')
241 register(
242 'application/n-quads', Parser,
243 'rdflib.plugins.parsers.nquads', 'NQuadsParser')
244 register(
245 'nquads', Parser,
246 'rdflib.plugins.parsers.nquads', 'NQuadsParser')
247 register(
248 'application/trix', Parser,
249 'rdflib.plugins.parsers.trix', 'TriXParser')
250 register(
251 'trix', Parser,
252 'rdflib.plugins.parsers.trix', 'TriXParser')
253 register(
254 'trig', Parser,
255 'rdflib.plugins.parsers.trig', 'TrigParser')
256
257
258 register(
259 'sparql', Result,
260 'rdflib.plugins.sparql.processor', 'SPARQLResult')
261 register(
262 'sparql', Processor,
263 'rdflib.plugins.sparql.processor', 'SPARQLProcessor')
264
265 register(
266 'sparql', UpdateProcessor,
267 'rdflib.plugins.sparql.processor', 'SPARQLUpdateProcessor')
268
269
270 register(
271 'xml', ResultSerializer,
272 'rdflib.plugins.sparql.results.xmlresults', 'XMLResultSerializer')
273 register(
274 'application/sparql-results+xml', ResultSerializer,
275 'rdflib.plugins.sparql.results.xmlresults', 'XMLResultSerializer')
276 register(
277 'txt', ResultSerializer,
278 'rdflib.plugins.sparql.results.txtresults', 'TXTResultSerializer')
279 register(
280 'json', ResultSerializer,
281 'rdflib.plugins.sparql.results.jsonresults', 'JSONResultSerializer')
282 register(
283 'application/sparql-results+json', ResultSerializer,
284 'rdflib.plugins.sparql.results.jsonresults', 'JSONResultSerializer')
285 register(
286 'csv', ResultSerializer,
287 'rdflib.plugins.sparql.results.csvresults', 'CSVResultSerializer')
288 register(
289 'text/csv', ResultSerializer,
290 'rdflib.plugins.sparql.results.csvresults', 'CSVResultSerializer')
291
292 register(
293 'xml', ResultParser,
294 'rdflib.plugins.sparql.results.xmlresults', 'XMLResultParser')
295 register(
296 'application/sparql-results+xml', ResultParser,
297 'rdflib.plugins.sparql.results.xmlresults', 'XMLResultParser')
298 register(
299 'application/sparql-results+xml; charset=UTF-8', ResultParser,
300 'rdflib.plugins.sparql.results.xmlresults', 'XMLResultParser')
301
302 register(
303 'application/rdf+xml', ResultParser,
304 'rdflib.plugins.sparql.results.graph', 'GraphResultParser')
305
306
307 register(
308 'json', ResultParser,
309 'rdflib.plugins.sparql.results.jsonresults', 'JSONResultParser')
310 register(
311 'application/sparql-results+json', ResultParser,
312 'rdflib.plugins.sparql.results.jsonresults', 'JSONResultParser')
313
314 register(
315 'csv', ResultParser,
316 'rdflib.plugins.sparql.results.csvresults', 'CSVResultParser')
317 register(
318 'text/csv', ResultParser,
319 'rdflib.plugins.sparql.results.csvresults', 'CSVResultParser')
320
321 register(
322 'tsv', ResultParser,
323 'rdflib.plugins.sparql.results.tsvresults', 'TSVResultParser')
324 register(
325 'text/tab-separated-values', ResultParser,
326 'rdflib.plugins.sparql.results.tsvresults', 'TSVResultParser')