Example #1
0
    def __init__(self, reader, *args, **kwargs):
        RDFWriter.__init__(self, reader, *args, **kwargs)
        if isinstance(self.reader, ReaderPlugin):
            self.__server = self.reader.server
            self.__port = self.reader.port
            self.__root_path = self.reader.root_path
            self.__repository_path = self.reader.repository_path
            self.__repository = self.reader.repository
            self.__use_allegro_extensions = self.reader.use_allegro_extensions

        else:
            self.__server = kwargs['server'] if 'server' in kwargs else 'localhost'
            self.__port = kwargs['port'] if 'port' in kwargs else 6789
            self.__root_path = kwargs['root_path'] if 'root_path' in kwargs else '/sesame'
            self.__repository_path = kwargs['repository_path'] if 'repository_path' in kwargs else ''
            self.__repository = kwargs['repository'] if 'repository' in kwargs else None
            self.__use_allegro_extensions = kwargs['use_allegro_extensions'] if 'use_allegro_extensions' in kwargs else False

            self.log.info('INIT : ' + unicode(self.server) + ',' + unicode(self.port) + ',' + unicode(self.root_path) + ',' + unicode(self.repository_path))

            if not self.repository:
                raise Exception('No <repository> argument supplyed.')

            if self.__use_allegro_extensions:
                opened = self.get_allegro().open_repository(self.repository)
                self.log.info('ALLEGRO repository opened: ' + unicode(opened))
    def __init__(self, reader, *args, **kwargs):
        RDFWriter.__init__(self, reader, *args, **kwargs)
        if isinstance(self.reader, ReaderPlugin):
            self.__server = self.reader.server
            self.__port = self.reader.port
            self.__catalog = self.reader.catalog
            self.__repository = self.reader.repository

            self.__allegro_server = self.reader.allegro_server
            self.__allegro_catalog = self.reader.allegro_catalog
            self.__allegro_repository = self.reader.allegro_repository

        else:
            self.__server = kwargs['server'] if 'server' in kwargs else 'localhost'
            self.__port = kwargs['port'] if 'port' in kwargs else 6789
            self.__catalog = kwargs['catalog'] if 'catalog' in kwargs else None
            self.__repository = kwargs['repository'] if 'repository' in kwargs else None

            if not self.__catalog or not self.__repository:
                raise Exception('Must specify the <catalog> and the <repository> arguments')

            self.__allegro_server = AllegroGraphServer(self.__server, port = self.__port)
            self.__allegro_catalog = self.__allegro_server.openCatalog(self.__catalog)
            self.__allegro_repository = self.__allegro_catalog.getRepository(self.__repository, Repository.ACCESS)
            self.__allegro_repository.initialize()

        self.__con = self.__allegro_repository.getConnection()
        self.__f = self.__allegro_repository.getValueFactory()
Example #3
0
    def __init__(self, reader = None, writer = None, *args, **kwargs):
        super(Store, self).__init__()
        self.log_level = kwargs.get('log_level', logging.NOTSET)

        self.log.info('initializing the store')
        load_plugins(logger=self.log)

        self.__default_context = None
        if "default_context" in kwargs:
            self.__default_context = URIRef(kwargs["default_context"])

        if reader:
            self.reader = reader if isinstance(reader, RDFReader) else get_reader(reader, *args, **kwargs)
        else:
            self.reader = RDFReader(*args, **kwargs)
        self.reader.log_level = self.log_level

        if writer:
            self.writer = writer if isinstance(writer, RDFWriter) else get_writer(writer, self.reader, *args, **kwargs)
        else:
            self.writer = RDFWriter(self.reader, *args, **kwargs)
        self.writer.log_level = self.log_level

        if hasattr(self.reader, 'use_subqueries'):
            self.use_subqueries = property(fget = lambda self: self.reader.use_subqueries)

        self.log.info('store initialized')
Example #4
0
    def __init__(self, reader, *args, **kwargs):
        RDFWriter.__init__(self, reader, *args, **kwargs)
        if isinstance(self.reader, ReaderPlugin):
            self.__server = self.reader.server
            self.__port = self.reader.port
            self.__root_path = self.reader.root_path
            self.__repository_path = self.reader.repository_path
            self.__repository = self.reader.repository
            self.__use_allegro_extensions = self.reader.use_allegro_extensions

        else:
            self.__server = kwargs[
                'server'] if 'server' in kwargs else 'localhost'
            self.__port = kwargs['port'] if 'port' in kwargs else 6789
            self.__root_path = kwargs[
                'root_path'] if 'root_path' in kwargs else '/sesame'
            self.__repository_path = kwargs[
                'repository_path'] if 'repository_path' in kwargs else ''
            self.__repository = kwargs[
                'repository'] if 'repository' in kwargs else None
            self.__use_allegro_extensions = kwargs[
                'use_allegro_extensions'] if 'use_allegro_extensions' in kwargs else False

            self.log.info(
                'INIT: %s, %s, %s, %s' %
                (self.server, self.port, self.root_path, self.repository_path))

            if not self.repository:
                raise Exception('No <repository> argument supplied.')

            if self.__use_allegro_extensions:
                opened = self.get_allegro().open_repository(self.repository)
                self.log.info('ALLEGRO repository opened: ' + unicode(opened))
Example #5
0
    def __init__(self, reader, *args, **kwargs):
        RDFWriter.__init__(self, reader, *args, **kwargs)
        if isinstance(self.reader, ReaderPlugin):
            self.__server = self.reader.server
            self.__port = self.reader.port
            self.__catalog = self.reader.catalog
            self.__repository = self.reader.repository

            self.__allegro_server = self.reader.allegro_server
            self.__allegro_catalog = self.reader.allegro_catalog
            self.__allegro_repository = self.reader.allegro_repository

        else:
            self.__server = kwargs["server"] if "server" in kwargs else "localhost"
            self.__port = kwargs["port"] if "port" in kwargs else 6789
            self.__catalog = kwargs["catalog"] if "catalog" in kwargs else None
            self.__repository = kwargs["repository"] if "repository" in kwargs else None

            if not self.__catalog or not self.__repository:
                raise Exception("Must specify the <catalog> and the <repository> arguments")

            self.__allegro_server = AllegroGraphServer(self.__server, port=self.__port)
            self.__allegro_catalog = self.__allegro_server.openCatalog(self.__catalog)
            self.__allegro_repository = self.__allegro_catalog.getRepository(self.__repository, Repository.ACCESS)
            self.__allegro_repository.initialize()

        self.__con = self.__allegro_repository.getConnection()
        self.__f = self.__allegro_repository.getValueFactory()
Example #6
0
    def __init__(self, reader, *args, **kwargs):
        RDFWriter.__init__(self, reader, *args, **kwargs)
        if isinstance(self.reader, ReaderPlugin):
            self.__server = self.reader.server
            self.__port = self.reader.port
            self.__user = self.reader.user
            self.__password = self.reader.password
            self.__catalog = self.reader.catalog
            self.__repository = self.reader.repository

            self.__allegro_server = self.reader.allegro_server
            self.__allegro_catalog = self.reader.allegro_catalog
            self.__allegro_repository = self.reader.allegro_repository

        else:
            self.__server = kwargs['server'] if 'server' in kwargs else 'localhost'
            self.__port = kwargs['port'] if 'port' in kwargs else 6789
            self.__user = kwargs['user'] if 'user' in kwargs else None
            self.__password = kwargs['password'] if 'password' in kwargs else None
            self.__catalog = kwargs['catalog'] if 'catalog' in kwargs else None
            self.__repository = kwargs['repository'] if 'repository' in kwargs else None

            if not self.__catalog or not self.__repository:
                raise Exception('Must specify the <catalog> and the <repository> arguments')

            self.__allegro_server = AllegroGraphServer(self.__server, port = self.__port, user = self.__user, password = self.__password)
            self.__allegro_catalog = self.__allegro_server.openCatalog(self.__catalog)
            self.__allegro_repository = self.__allegro_catalog.getRepository(self.__repository, Repository.ACCESS)
            self.__allegro_repository.initialize()

        self.__con = self.__allegro_repository.getConnection()
        self.__f = self.__allegro_repository.getValueFactory()
Example #7
0
    def __init__(self, reader, *args, **kwargs):
        RDFWriter.__init__(self, reader, *args, **kwargs)
        if isinstance(self.reader, ReaderPlugin):
            self.__server = self.reader.server
            self.__port = self.reader.port
            self.__catalog = self.reader.catalog
            self.__repository = self.reader.repository

            self.__allegro_server = self.reader.allegro_server
            self.__allegro_catalog = self.reader.allegro_catalog
            self.__allegro_repository = self.reader.allegro_repository
            if type(self.__repository) == list and len(self.__repository) > 1:
                connections_to_federate = []
                repositories_to_federate = []
                for one_repository in self.reader.allegro_repository:
                    repositories_to_federate.append(self.__allegro_catalog
                                                   .getRepository(one_repository, Repository.ACCESS))
                    connections_to_federate.append(self.__allegro_catalog
                                                   .getRepository(one_repository, Repository.ACCESS)
                                                   .initialize().getConnection())
                self.__allegro_repository = repositories_to_federate
                self.__con = self.__allegro_server.openFederated(connections_to_federate, True)
            else:
                if type(self.__repository) == list and len(self.__repository) == 1:
                    self.__repository = self.__repository[0]
                self.__allegro_repository = self.__allegro_catalog.getRepository(self.__repository, Repository.ACCESS)
                self.__allegro_repository.initialize()
    
                self.__con = self.allegro_repository.getConnection()

        else:
            self.__server = kwargs['server'] if 'server' in kwargs else 'localhost'
            self.__port = kwargs['port'] if 'port' in kwargs else 6789
            self.__catalog = kwargs['catalog'] if 'catalog' in kwargs else None
            self.__repository = kwargs['repository'] if 'repository' in kwargs else None

            if not self.__catalog or not self.__repository:
                raise Exception('Must specify the <catalog> and the <repository> arguments')

            self.__allegro_server = AllegroGraphServer(self.__server, port = self.__port)
            self.__allegro_catalog = self.__allegro_server.openCatalog(self.__catalog)
            if type(self.__repository) == list and len(self.__repository) > 1:
                connections_to_federate = []
                repositories_to_federate = []
                for repository in self.__repository:
                    repositories_to_federate.append(self.__allegro_catalog
                                                   .getRepository(repository, Repository.ACCESS))
                    connections_to_federate.append(self.__allegro_catalog
                                                   .getRepository(repository, Repository.ACCESS)
                                                   .initialize().getConnection())
                self.__allegro_repository = repositories_to_federate
                self.__con = self.__allegro_server.openFederated(connections_to_federate, True)
            else:
                if type(self.__repository) == list and len(self.__repository) == 1:
                    self.__repository = self.__repository[0]
                self.__allegro_repository = self.__allegro_catalog.getRepository(self.__repository, Repository.ACCESS)
                self.__allegro_repository.initialize()
    
                self.__con = self.allegro_repository.getConnection()
Example #8
0
    def __init__(self, reader, *args, **kwargs):
        RDFWriter.__init__(self, reader, *args, **kwargs)
        
        if isinstance(self.reader, ReaderPlugin):
            self.__endpoint = self.reader.endpoint
        else:
            self.__endpoint = kwargs.get("endpoint")

        self.__combine_queries = kwargs.get("combine_queries")
        self.__results_format = JSON

        self.__sparql_wrapper = SPARQLWrapper(self.__endpoint, self.__results_format)
        self.__sparql_wrapper.setMethod("POST")
Example #9
0
    def __init__(self, reader, *args, **kwargs):
        RDFWriter.__init__(self, reader, *args, **kwargs)
        
        if isinstance(self.reader, ReaderPlugin):
            self.__endpoint = self.reader.endpoint
        else:
            self.__endpoint = kwargs.get("endpoint")

        self.__combine_queries = kwargs.get("combine_queries")
        self.__results_format = JSON

        self.__sparql_wrapper = SPARQLWrapper(self.__endpoint, returnFormat=self.__results_format)
        user        = kwargs.get('user',None)
        password    = kwargs.get('password',None)
        if user and password:
            self.__sparql_wrapper.setCredentials(user, password)

        self.__sparql_wrapper.setMethod("POST")
Example #10
0
    def __init__(self, reader, *args, **kwargs):
        RDFWriter.__init__(self, reader, *args, **kwargs)
        if isinstance(self.reader, ReaderPlugin):
            self.__rdflib_store = self.reader.rdflib_store
            self.__rdflib_identifier = self.reader.rdflib_identifier
            self.__commit_pending_transaction_on_close = \
                self.reader.commit_pending_transaction_on_close

            self.__graph = self.reader.graph
        else:
            self.__rdflib_store = kwargs.get("rdflib_store", "IOMemory")
            self.__rdflib_identifier = kwargs.get("rdflib_identifier") 
            self.__commit_pending_transaction_on_close = \
                kwargs.get("commit_pending_transaction_on_close", True)

            self.__graph = ConjunctiveGraph(store = self.__rdflib_store, identifier = self.__rdflib_identifier)

            warnings.warn("Graph is not readable through the reader plugin", 
                          UserWarning)
Example #11
0
    def __init__(self, reader, *args, **kwargs):
        RDFWriter.__init__(self, reader, *args, **kwargs)
        if isinstance(self.reader, ReaderPlugin):
            self.__rdflib_store = self.reader.rdflib_store
            self.__rdflib_identifier = self.reader.rdflib_identifier
            self.__commit_pending_transaction_on_close = \
                self.reader.commit_pending_transaction_on_close

            self.__graph = self.reader.graph
        else:
            self.__rdflib_store = kwargs.get("rdflib_store", "IOMemory")
            self.__rdflib_identifier = kwargs.get("rdflib_identifier")
            self.__commit_pending_transaction_on_close = \
                kwargs.get("commit_pending_transaction_on_close", True)

            self.__graph = ConjunctiveGraph(
                store=self.__rdflib_store, identifier=self.__rdflib_identifier)

            warnings.warn("Graph is not readable through the reader plugin",
                          UserWarning)
Example #12
0
class Store(LogMixin):
    """ The `Store` class is comprised of a reader and a writer, getting
    access to an underlying triple store. Also store specific parameters must
    be handled by the class, the plugins act based on various settings.

    The `Store` is also the `plugin` manager and provides convenience methods
    for working with plugins.

    """

    """ True if the `reader` plugin is using sub queries, False otherwise. """
    use_subqueries = False

    default_context = property(lambda self: self.__default_context)

    def __init__(self, reader = None, writer = None, *args, **kwargs):
        super(Store, self).__init__()
        self.log_level = kwargs.get('log_level', logging.NOTSET)

        self.log.info('initializing the store')
        load_plugins(logger=self.log)

        self.__default_context = None
        if "default_context" in kwargs:
            self.__default_context = URIRef(kwargs["default_context"])

        if reader:
            self.reader = reader if isinstance(reader, RDFReader) else get_reader(reader, *args, **kwargs)
        else:
            self.reader = RDFReader(*args, **kwargs)
        self.reader.log_level = self.log_level

        if writer:
            self.writer = writer if isinstance(writer, RDFWriter) else get_writer(writer, self.reader, *args, **kwargs)
        else:
            self.writer = RDFWriter(self.reader, *args, **kwargs)
        self.writer.log_level = self.log_level

        if hasattr(self.reader, 'use_subqueries'):
            self.use_subqueries = property(fget = lambda self: self.reader.use_subqueries)

        self.log.info('store initialized')


    def __add_default_context(self, context):
        """ Return default context if context is None. """

        if context == NO_CONTEXT:
            context = None
        elif not context:
            context = self.__default_context

        return context

    def _set_level(self, level):
        self.log.setLevel(level)
        self.reader.log_level = level
        self.writer.log_level = level

    @deprecated
    def enable_logging(self, enable):
        """ Toggle `logging` on or off. """
        #TODO: -------------------[remove in v1.2.0]------------------------
#        deprecation('the enable_logging method will be removed in version 1.2.0, use the logging and log_level properties instead!')
        #TODO: -------------------[remove in v1.2.0]------------------------
        level = enable and logging.DEBUG or logging.NOTSET
        self.log.setLevel(level)
        self.reader.enable_logging(enable)
        self.writer.enable_logging(enable)

    @deprecated
    def is_enable_logging(self):
        """ True if `logging` is enabled, False otherwise. """
        #TODO: -------------------[remove in v1.2.0]------------------------
#        deprecation('the is_enabled_logging method will be removed in version 1.2.0, use the logging and log_level properties instead!')
        #TODO: -------------------[remove in v1.2.0]------------------------
        return (self.log.level == logging.DEBUG)

    def close(self):
        """ Close the `store`.

        Both the `reader` and the `writer` plugins are closed.
        See :func:`surf.plugin.writer.RDFWriter.close`
        and :func:`surf.plugin.reader.RDFReader.close` methods.

        """

        try:
            self.reader.close()
            self.log.debug('reader closed successfully')
        except Exception:
            self.log.exception("Error on closing the reader")

        try:
            self.writer.close()
            self.log.debug('writer closed successfully')
        except Exception:
            self.log.exception("Error on closing the writer")

    #---------------------------------------------------------------------------
    # the reader interface
    #---------------------------------------------------------------------------

    def get(self, resource, attribute, direct):
        """ :func:`surf.plugin.reader.RDFReader.get` method. """

        return self.reader.get(resource, attribute, direct)

    # cRud
    def load(self, resource, direct):
        """ :func:`surf.plugin.reader.RDFReader.load` method. """

        return self.reader.load(resource, direct)

    def is_present(self, resource):
        """ :func:`surf.plugin.reader.RDFReader.is_present` method. """

        return self.reader.is_present(resource)

    def concept(self, resource):
        """ :func:`surf.plugin.reader.RDFReader.concept` method. """

        return self.reader.concept(resource)

    def instances_by_attribute(self, resource, attributes, direct, context):
        """ :func:`surf.plugin.reader.RDFReader.instances_by_attribute` method. """

        context = self.__add_default_context(context)
        return self.reader.instances_by_attribute(resource, attributes,
                                                  direct, context)

    def get_by(self, params):
        params["context"] = self.__add_default_context(params.get("context"))
        return self.reader.get_by(params)

    #---------------------------------------------------------------------------
    # the query reader interface
    #---------------------------------------------------------------------------

    def execute(self, query):
        """see :meth:`surf.plugin.query_reader.RDFQueryReader.execute` method. """

        if hasattr(self.reader, 'execute') and isinstance(query, Query):
            return self.reader.execute(query)

        return None

    def execute_sparql(self, sparql_query, format = 'JSON'):
        """see :meth:`surf.plugin.query_reader.RDFQueryReader.execute_sparql` method. """

        if hasattr(self.reader, 'execute_sparql') and type(sparql_query) in [str, unicode]:
            return self.reader.execute_sparql(sparql_query, format = format)
        return None

    #---------------------------------------------------------------------------
    # the writer interface
    #---------------------------------------------------------------------------

    def clear(self, context = None):
        """ See :func:`surf.plugin.writer.RDFWriter.clear` method. """

        context = self.__add_default_context(context)
        self.writer.clear(context = context)

    # Crud
    def save(self, *resources):
        """ See :func:`surf.plugin.writer.RDFWriter.save` method. """

        self.writer.save(*resources)

        for resource in resources:
            resource.dirty = False

    # crUd
    def update(self, *resources):
        """ See :func:`surf.plugin.writer.RDFWriter.update` method. """

        self.writer.update(*resources)

        for resource in resources:
            resource.dirty = False

    # cruD
    def remove(self, *resources, **kwargs):
        """ See :func:`surf.plugin.writer.RDFWriter.remove` method. """

        self.writer.remove(*resources, **kwargs)

        for resource in resources:
            resource.dirty = False


    def size(self):
        """ See :func:`surf.plugin.writer.RDFWriter.size` method. """

        return self.writer.size()

    # triple level access methods
    def add_triple(self, s = None, p = None, o = None, context = None):
        """ See :func:`surf.plugin.writer.RDFWriter.add_triple` method. """

        context = self.__add_default_context(context)
        self.writer.add_triple(s = s, p = p, o = o, context = context)

    def set_triple(self, s = None, p = None, o = None, context = None):
        """ See :func:`surf.plugin.writer.RDFWriter.set_triple` method. """

        context = self.__add_default_context(context)
        self.writer.set_triple(s = s, p = p, o = o, context = context)

    def remove_triple(self, s = None, p = None, o = None, context = None):
        """ See :func:`surf.plugin.writer.RDFWriter.remove_triple` method. """

        context = self.__add_default_context(context)
        self.writer.remove_triple(s = s, p = p, o = o, context = context)

    def index_triples(self, **kwargs):
        """ See :func:`surf.plugin.writer.RDFWriter.index_triples` method. """

        return self.writer.index_triples(**kwargs)

    def load_triples(self, context=None, **kwargs):
        """ See :func:`surf.plugin.writer.RDFWriter.load_triples` method. """

        context = self.__add_default_context(context)
        return self.writer.load_triples(context=context, **kwargs)