Source code for franz.openrdf.sail.spec

################################################################################
# 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 functions for creating session specification strings.
See :meth:`~franz.openrdf.sail.allegrographserver.AllegroGraphServer.openSession`
"""

from __future__ import unicode_literals
from past.builtins import map, unicode
from future import standard_library
standard_library.install_aliases()

import urllib.request, urllib.parse, urllib.error


[docs]def local(name, catalog=None): """ Create a session spec for connecting to a store on the local server. :param name: Store name. :type name: string :param catalog: Catalog name (None = root catalog). :type catalog: string :return: A session spec string. :rtype: string """ if catalog: return "<%s:%s>" % (catalog, name) else: return "<%s>" % name
[docs]def remote(name, catalog=None, host="localhost", port=None, protocol="http"): """ Create a session spec for connecting to a store on another server. :param name: Store name. :type name: string :param catalog: Catalog name (None = root catalog). :type catalog: string :param host: Remote host address. :type host: string :param port: Port number on the remote host (default: 10035 for http, 10036 for https). :type port: int :param protocol: Protocol - `"http"` or `"https"`, the default is `"http"`. :type protocol: string :return: A session spec string. :rtype: string """ if port is None: port = 10035 if protocol == "http" else 10036 if catalog: catalog = "/catalogs/" + urllib.parse.quote(catalog) return "<%s://%s:%d%s/repositories/%s>" % (protocol, host, port, catalog or "", urllib.parse.quote(name))
[docs]def url(url): """ Create a session spec for connecting to a remote store with known URL. :param url: Remote store's address. :type url: string :return: A session spec string. :rtype: string """ return "<%s>" % url
[docs]def federate(*stores): """ Create a session spec for connecting to a federated store. :param stores: List of session specs to federate. :type stores: tuple[string] :return: A session spec string. :rtype: string """ return " + ".join(stores)
[docs]def reason(store, reasoner="rdfs++"): """ Create a session spec that adds reasoning support to another session. :param store: Base session spec. :type store: string :param reasoner: Reasoning type (e.g. `"rdfs++"`or `"restriction"`). :type reasoner: string :return: A session spec string. :rtype: string """ return "%s[%s]" % (store, reasoner)
[docs]def graphFilter(store, graphs): """ Create a graph-filtered session spec. :param store: Base session spec. :type store: string :param graphs: List of graph names. `None` means the default graph. :type graphs: list[string] :return: A session spec string. :rtype: string """ def asGraph(x): if x is None: return "null" else: return unicode(x) return "%s{%s}" % (store, " ".join(map(asGraph, graphs)))