Skip to content

Session

Tripper provides simple support for sessions.

First you should configure some triplestores you want to use. This is done in a YAML where each configured triplestore is identified with a unique name.

The default location of this configuration file depends on the system:

  • Linux: $HOME/.config/tripper/session.yaml
  • Windows: $HOME/AppData/Local/tripper/Config/session.yaml
  • Darwin: $HOME/Library/Config/tripper/session.yaml

The schema of the YAML file is simple. A session should have a name that identifies it and should be followed by keyword arguments accepted by the Triplestore constructor.

Here is an example of a possible session file:

---

RdflibTest:
  backend: rdflib

GraphDBTest:
  backend: sparqlwrapper
  base_iri: http://localhost:7200/repositories/test_repo
  update_iri: http://localhost:7200/repositories/test_repo/statements
  check_url: http://localhost:7200/repositories

FusekiTest:
  backend: sparqlwrapper
  base_iri: http://localhost:3030/test_repo
  update_iri: http://localhost:3030/test_repo/update
  check_url: http://localhost:3030
  username: admin
  password: admin0

MyKB:
  backend: sparqlwrapper
  base_iri: https://graphdb.myproject.eu/repositories/test_repo
  update_iri: https://graphdb.myproject.eu/repositories/test_repo/statements
  check_url: https://graphdb.myproject.eu/repositories
  username: myname
  password: KEYRING

The first entry is an in-memory rdflib backend.

The second and third entries correspond to GraphDB and Fuseki services, respectively. These can be started with docker as described in the developers section.

The fourth entry is just a dummy example, showing how to use keyring.

Each entry starts with the name identifying the configured triplestore. The keywords following it, correspond to the keyword arguments passed to the Triplestore constructor.

If an entry has a password keyword with the special value "KEYRING", the value is replaced with the password looked up using the keyring library.

Example

If you have started the Fuseki service (as described on developers), you can now do:

>>> from tripper import Literal, Session

# Normally you will call Session with no arguments
>>> session = Session()  # doctest: +SKIP

# ...but it is also possible to specify the config file explicitly
>>> session = Session("tests/input/session.yaml")
>>> ts = session.get_triplestore("FusekiTest")
>>> EX = ts.bind("ex", "http://example.com#")

>>> ts.remove()  # clear the triplestore  # doctest: +ELLIPSIS
<SPARQLWrapper.Wrapper.QueryResult object at 0x...>

>>> ts.add_triples([
...     (EX.john, EX.hasName, Literal("John")),
...     (EX.john, EX.hasSon, EX.lars),
... ])
>>> list(ts.triples())  # doctest: +NORMALIZE_WHITESPACE
[('http://example.com#john', 'http://example.com#hasName', Literal('John')),
 ('http://example.com#john', 'http://example.com#hasSon', 'http://example.com#lars')]