diff env/lib/python3.7/site-packages/rdflib/plugin.py @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/env/lib/python3.7/site-packages/rdflib/plugin.py	Sat May 02 07:14:21 2020 -0400
@@ -0,0 +1,330 @@
+"""
+Plugin support for rdf.
+
+There are a number of plugin points for rdf: parser, serializer,
+store, query processor, and query result. Plugins can be registered
+either through setuptools entry_points or by calling
+rdf.plugin.register directly.
+
+If you have a package that uses a setuptools based setup.py you can add the
+following to your setup::
+
+    entry_points = {
+        'rdf.plugins.parser': [
+            'nt =     rdf.plugins.parsers.nt:NTParser',
+            ],
+        'rdf.plugins.serializer': [
+            'nt =     rdf.plugins.serializers.NTSerializer:NTSerializer',
+            ],
+        }
+
+See the `setuptools dynamic discovery of services and plugins`__ for more
+information.
+
+.. __: http://peak.telecommunity.com/DevCenter/setuptools#dynamic-discovery-of-services-and-plugins
+
+"""
+
+from rdflib.store import Store
+from rdflib.parser import Parser
+from rdflib.serializer import Serializer
+from rdflib.query import ResultParser, ResultSerializer, \
+    Processor, Result, UpdateProcessor
+from rdflib.exceptions import Error
+
+__all__ = [
+    'register', 'get', 'plugins', 'PluginException', 'Plugin', 'PKGPlugin']
+
+entry_points = {'rdf.plugins.store': Store,
+                'rdf.plugins.serializer': Serializer,
+                'rdf.plugins.parser': Parser,
+                'rdf.plugins.resultparser': ResultParser,
+                'rdf.plugins.resultserializer': ResultSerializer,
+                'rdf.plugins.queryprocessor': Processor,
+                'rdf.plugins.queryresult': Result,
+                'rdf.plugins.updateprocessor': UpdateProcessor
+                }
+
+_plugins = {}
+
+
+class PluginException(Error):
+    pass
+
+
+class Plugin(object):
+
+    def __init__(self, name, kind, module_path, class_name):
+        self.name = name
+        self.kind = kind
+        self.module_path = module_path
+        self.class_name = class_name
+        self._class = None
+
+    def getClass(self):
+        if self._class is None:
+            module = __import__(self.module_path, globals(), locals(), [""])
+            self._class = getattr(module, self.class_name)
+        return self._class
+
+
+class PKGPlugin(Plugin):
+
+    def __init__(self, name, kind, ep):
+        self.name = name
+        self.kind = kind
+        self.ep = ep
+        self._class = None
+
+    def getClass(self):
+        if self._class is None:
+            self._class = self.ep.load()
+        return self._class
+
+
+def register(name, kind, module_path, class_name):
+    """
+    Register the plugin for (name, kind). The module_path and
+    class_name should be the path to a plugin class.
+    """
+    p = Plugin(name, kind, module_path, class_name)
+    _plugins[(name, kind)] = p
+
+
+def get(name, kind):
+    """
+    Return the class for the specified (name, kind). Raises a
+    PluginException if unable to do so.
+    """
+    try:
+        p = _plugins[(name, kind)]
+    except KeyError:
+        raise PluginException(
+            "No plugin registered for (%s, %s)" % (name, kind))
+    return p.getClass()
+
+
+try:
+    from pkg_resources import iter_entry_points
+except ImportError:
+    pass  # TODO: log a message
+else:
+    # add the plugins specified via pkg_resources' EntryPoints.
+    for entry_point, kind in entry_points.items():
+        for ep in iter_entry_points(entry_point):
+            _plugins[(ep.name, kind)] = PKGPlugin(ep.name, kind, ep)
+
+
+def plugins(name=None, kind=None):
+    """
+    A generator of the plugins.
+
+    Pass in name and kind to filter... else leave None to match all.
+    """
+    for p in list(_plugins.values()):
+        if (name is None or name == p.name) and (
+                kind is None or kind == p.kind):
+            yield p
+
+register(
+    'default', Store,
+    'rdflib.plugins.memory', 'IOMemory')
+register(
+    'IOMemory', Store,
+    'rdflib.plugins.memory', 'IOMemory')
+register(
+    'Auditable', Store,
+    'rdflib.plugins.stores.auditable', 'AuditableStore')
+register(
+    'Concurrent', Store,
+    'rdflib.plugins.stores.concurrent', 'ConcurrentStore')
+register(
+    'Sleepycat', Store,
+    'rdflib.plugins.sleepycat', 'Sleepycat')
+register(
+    'SPARQLStore', Store,
+    'rdflib.plugins.stores.sparqlstore', 'SPARQLStore')
+register(
+    'SPARQLUpdateStore', Store,
+    'rdflib.plugins.stores.sparqlstore', 'SPARQLUpdateStore')
+
+register(
+    'application/rdf+xml', Serializer,
+    'rdflib.plugins.serializers.rdfxml', 'XMLSerializer')
+register(
+    'xml', Serializer,
+    'rdflib.plugins.serializers.rdfxml', 'XMLSerializer')
+register(
+    'text/n3', Serializer,
+    'rdflib.plugins.serializers.n3', 'N3Serializer')
+register(
+    'n3', Serializer,
+    'rdflib.plugins.serializers.n3', 'N3Serializer')
+register(
+    'text/turtle', Serializer,
+    'rdflib.plugins.serializers.turtle', 'TurtleSerializer')
+register(
+    'turtle', Serializer,
+    'rdflib.plugins.serializers.turtle', 'TurtleSerializer')
+register(
+    'ttl', Serializer,
+    'rdflib.plugins.serializers.turtle', 'TurtleSerializer')
+register(
+    'trig', Serializer,
+    'rdflib.plugins.serializers.trig', 'TrigSerializer')
+register(
+    'application/n-triples', Serializer,
+    'rdflib.plugins.serializers.nt', 'NTSerializer')
+register(
+    'ntriples', Serializer,
+    'rdflib.plugins.serializers.nt', 'NTSerializer')
+register(
+    'nt', Serializer,
+    'rdflib.plugins.serializers.nt', 'NTSerializer')
+register(
+    'nt11', Serializer,
+    'rdflib.plugins.serializers.nt', 'NT11Serializer')
+
+register(
+    'pretty-xml', Serializer,
+    'rdflib.plugins.serializers.rdfxml', 'PrettyXMLSerializer')
+register(
+    'trix', Serializer,
+    'rdflib.plugins.serializers.trix', 'TriXSerializer')
+register(
+    'application/trix', Serializer,
+    'rdflib.plugins.serializers.trix', 'TriXSerializer')
+register(
+    'application/n-quads', Serializer,
+    'rdflib.plugins.serializers.nquads', 'NQuadsSerializer')
+register(
+    'nquads', Serializer,
+    'rdflib.plugins.serializers.nquads', 'NQuadsSerializer')
+
+register(
+    'application/rdf+xml', Parser,
+    'rdflib.plugins.parsers.rdfxml', 'RDFXMLParser')
+register(
+    'xml', Parser,
+    'rdflib.plugins.parsers.rdfxml', 'RDFXMLParser')
+register(
+    'text/n3', Parser,
+    'rdflib.plugins.parsers.notation3', 'N3Parser')
+register(
+    'n3', Parser,
+    'rdflib.plugins.parsers.notation3', 'N3Parser')
+register(
+    'text/turtle', Parser,
+    'rdflib.plugins.parsers.notation3', 'TurtleParser')
+register(
+    'turtle', Parser,
+    'rdflib.plugins.parsers.notation3', 'TurtleParser')
+register(
+    'ttl', Parser,
+    'rdflib.plugins.parsers.notation3', 'TurtleParser')
+register(
+    'application/n-triples', Parser,
+    'rdflib.plugins.parsers.nt', 'NTParser')
+register(
+    'ntriples', Parser,
+    'rdflib.plugins.parsers.nt', 'NTParser')
+register(
+    'nt', Parser,
+    'rdflib.plugins.parsers.nt', 'NTParser')
+register(
+    'nt11', Parser,
+    'rdflib.plugins.parsers.nt', 'NTParser')
+register(
+    'application/n-quads', Parser,
+    'rdflib.plugins.parsers.nquads', 'NQuadsParser')
+register(
+    'nquads', Parser,
+    'rdflib.plugins.parsers.nquads', 'NQuadsParser')
+register(
+    'application/trix', Parser,
+    'rdflib.plugins.parsers.trix', 'TriXParser')
+register(
+    'trix', Parser,
+    'rdflib.plugins.parsers.trix', 'TriXParser')
+register(
+    'trig', Parser,
+    'rdflib.plugins.parsers.trig', 'TrigParser')
+
+# The basic parsers: RDFa (by default, 1.1),
+# microdata, and embedded turtle (a.k.a. hturtle)
+register(
+    'hturtle', Parser,
+    'rdflib.plugins.parsers.hturtle', 'HTurtleParser')
+register(
+    'rdfa', Parser,
+    'rdflib.plugins.parsers.structureddata', 'RDFaParser')
+register(
+    'mdata', Parser,
+    'rdflib.plugins.parsers.structureddata', 'MicrodataParser')
+register(
+    'microdata', Parser,
+    'rdflib.plugins.parsers.structureddata', 'MicrodataParser')
+# A convenience to use the RDFa 1.0 syntax (although the parse method can
+# be invoked with an rdfa_version keyword, too)
+register(
+    'rdfa1.0', Parser,
+    'rdflib.plugins.parsers.structureddata', 'RDFa10Parser')
+# Just for the completeness, if the user uses this
+register(
+    'rdfa1.1', Parser,
+    'rdflib.plugins.parsers.structureddata', 'RDFaParser')
+# An HTML file may contain both microdata, rdfa, or turtle. If the user
+# wants them all, the parser below simply invokes all:
+register(
+    'html', Parser,
+    'rdflib.plugins.parsers.structureddata', 'StructuredDataParser')
+# Some media types are also bound to RDFa
+register(
+    'application/svg+xml', Parser,
+    'rdflib.plugins.parsers.structureddata', 'RDFaParser')
+register(
+    'application/xhtml+xml', Parser,
+    'rdflib.plugins.parsers.structureddata', 'RDFaParser')
+# 'text/html' media type should be equivalent to html:
+register(
+    'text/html', Parser,
+    'rdflib.plugins.parsers.structureddata', 'StructuredDataParser')
+
+
+register(
+    'sparql', Result,
+    'rdflib.plugins.sparql.processor', 'SPARQLResult')
+register(
+    'sparql', Processor,
+    'rdflib.plugins.sparql.processor', 'SPARQLProcessor')
+
+register(
+    'sparql', UpdateProcessor,
+    'rdflib.plugins.sparql.processor', 'SPARQLUpdateProcessor')
+
+
+register(
+    'xml', ResultSerializer,
+    'rdflib.plugins.sparql.results.xmlresults', 'XMLResultSerializer')
+register(
+    'txt', ResultSerializer,
+    'rdflib.plugins.sparql.results.txtresults', 'TXTResultSerializer')
+register(
+    'json', ResultSerializer,
+    'rdflib.plugins.sparql.results.jsonresults', 'JSONResultSerializer')
+register(
+    'csv', ResultSerializer,
+    'rdflib.plugins.sparql.results.csvresults', 'CSVResultSerializer')
+
+register(
+    'xml', ResultParser,
+    'rdflib.plugins.sparql.results.xmlresults', 'XMLResultParser')
+register(
+    'json', ResultParser,
+    'rdflib.plugins.sparql.results.jsonresults', 'JSONResultParser')
+register(
+    'csv', ResultParser,
+    'rdflib.plugins.sparql.results.csvresults', 'CSVResultParser')
+register(
+    'tsv', ResultParser,
+    'rdflib.plugins.sparql.results.tsvresults', 'TSVResultParser')