Source code for franz.openrdf.connect

################################################################################
# Copyright (c) 2006-2017 Franz Inc.  
# All rights reserved. This program and the accompanying materials are
# made available under the terms of the MIT License which accompanies
# this distribution, and is available at http://opensource.org/licenses/MIT
################################################################################

"""
Helper function for opening connections.
"""
import os

from franz.openrdf.repository import Repository
from franz.openrdf.repository.repositoryconnection import RepositoryConnection
from franz.openrdf.sail import AllegroGraphServer


# Note that the default values come from AllegroGraphServer.__init__
[docs]def ag_connect(repo, catalog=None, create=True, fail_if_exists=False, clear=False, session=False, autocommit=False, lifetime=None, loadinitfile=False, host=None, port=None, protocol=None, user=None, password=None, cainfo=None, sslcert=None, verifyhost=None, verifypeer=None, indices=None, proxy=os.environ.get('AGRAPH_PROXY')): """ Create a connection to an AllegroGraph repository. When closed the connection will take care of releasing all intermediate resources that were created in order to open it. :param repo: Repository name. :type repo: string :param catalog: Catalog name (optional, root catalog is the default). :type catalog: string :param create: if `True` (default) create the repository if it does not exist. :type create: bool :param fail_if_exists: if `True` and the repository exists raise an exception. This applies only if `create` is `True`. The default value is `False`. :type fail_if_exists: bool :param clear: if `True` delete all data after creating the connection. The default is `False`. :type clear: bool :param session: If ``True`` start a session after creating the connection. The default is ``False``. :type session: bool :param autocommit: When opening a session: if ``True``, commits are done on each request, otherwise you will need to call :meth:`.commit` or :meth:`.rollback` as appropriate for your application. The default value is ``False``. :type autocommit: bool :param lifetime: Time (in seconds) before the session expires when idle. Note that the client maintains a thread that ping the session before this happens. Ignored if not starting a session. :type lifetime: int :param loadinitfile: if ``True`` then the current initfile will be loaded for you when the session starts. The default is ``False``. Ignored if not starting a session. :type loadinitfile: bool :param host: AllegroGraph server host (default: ``'127.0.0.1'`` or the value of the AGRAPH_HOST environment variable if that is defined.` Can also be used to supply protocol and port number (e.g. ``https://localhost:10036``). :type host: string :param protocol: Either ``"http"`` or ``"https"``. The default is ``"http"``. Overrides the protocol specified in ``host``. :type protocol: string :param port: AllegroGraph server port (default: `10035` for http and `10036` for https, or the AGRAPH_PORT environment variable if that is defined). Overrides the port number provided in ``host``. :type port: int :param user: Username for authentication (default: value of the ``AGRAPH_USER`` environment variable). :type user: string :param password: Password for authentication (default: value of the ``AGRAPH_PASSWORD`` environment variable). :type password: string :param cainfo: Path to file or directory with CA certificates. :type cainfo: string :param sslcert: Path to a client certificate to use for authentication instead of username and password. :type sslcert: string :param verifyhost: See https://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYHOST.html :type verifyhost: int :param verifypeer: See https://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYPEER.html :type verifypeer: int :param indices: List of indices to create if creating a new repository. :type indices: list[string] :param proxy: Proxy specification string. The format is SCHEME://HOST:PORT. Supported schemes are 'http', 'socks4' and 'socks5'. Note that for SOCKS proxies DNS requests are performed by the proxy server. The default value is taken from the AGRAPH_PROXY environment variable. :type proxy: string :return: A :class:`.RepositoryConnection` object. :rtype: franz.openrdf.repositoryconnection.RepositoryConnection """ server = AllegroGraphServer(host=host, port=port, protcol=protocol, user=user, password=password, sslcert=sslcert, cainfo=cainfo, verifyhost=verifyhost, verifypeer=verifypeer, proxy=proxy) cat_handle = server.openCatalog(catalog) repo_exists = repo in cat_handle.listRepositories() if not repo_exists: if create: repo_handle = cat_handle.createRepository(repo, indices) else: raise Exception('Store %s does not exist.' % repo) else: if fail_if_exists and create: raise Exception('Store %s already exists.' % repo) mode = Repository.RENEW if clear else Repository.OPEN repo_handle = cat_handle.getRepository(repo, mode) conn = RepositoryConnection(repo_handle, close_repo=True) if session: # conn.close will close it if necessary conn.openSession(autocommit=autocommit, lifetime=lifetime, loadinitfile=loadinitfile) return conn