Skip to main content

Python bindings for using the RDF graph database Tentris RDF rdflib

Project description

Running Tentris Using Python

Requirements

  • Python>=3.12
  • rdflib>=7
  • glibc>=2.34 (e.g. ubuntu-22.04 or later)

Note: Connecting to local/remote Tentris instances via HTTP is supported on all plattforms. Running Tentris within python is only supported on Linux.

Install

pip install tentris

or edit your requirements.txt as follows.

# ... your other dependencies
tentris

Getting Started

The Tentris Python library is a plugin for rdflib.

Native (Linux only)

With the native TentrisStore, Tentris is embedded in Python applications.

import tentris
import rdflib

# Create an RDFLib graph using Tentris as its backend
graph = rdflib.Graph(store="Tentris")

# Load the graph using the SPARQL Update operation `LOAD`
# https://www.w3.org/TR/2013/REC-sparql11-update-20130321/#load 
graph.update("LOAD <https://files.tentris.io/mona-lisa.ttl>")

# Query the Mona Lisa knowledge graph
query_str = """
   PREFIX foaf: <http://xmlns.com/foaf/0.1/>
   PREFIX dbr: <http://dbpedia.org/resource/>
   PREFIX dbo: <http://dbpedia.org/ontology/>

   SELECT ?name WHERE {
      dbr:Mona_Lisa dbo:author ?person .
      ?person foaf:name ?name .
   }
"""

for binding in graph.query(query_str):
   print(f"{binding.name.n3()}")

The TentrisStore operates in-memory and does not persist data in the disk. To use a disk-based instance of Tentris, the HTTP-based store should be used.

HTTP (Any Operating System)

Remote or local instances of Tentris can be queries using the HTTP-based TentrisHTTPStore.

Local

Assuming a Tentris server is running on the localhost listening to the default port, it can be queried as shown in the example below.

import tentris
import rdflib

graph = rdflib.Graph(store="TentrisHTTP")

for binding in graph.query("SELECT * WHERE { ?s ?p ?o } LIMIT 10"):
    print(f"{binding.s.n3()} {binding.p.n3()} {binding.o.n3()}")

Remote

To query remote instances of Tentris, the URL needs to be explicitly stated.

from tentris import TentrisHTTPStore
import rdflib

graph = rdflib.Graph(store=TentrisHTTPStore("https://dbpedia.data.dice-research.org"))

for binding in graph.query("SELECT * WHERE { ?s ?p ?o } LIMIT 10"):
    print(f"{binding.s.n3()} {binding.p.n3()} {binding.o.n3()}")

For more information about setting up a disk-based instance of Tentris, please refer to the chapter Binary.

Remote Login

To log into a remote instance of Tentris that has authentication enabled, the following can be used.

from tentris import TentrisHTTPStore
import rdflib
import requests

def login(url: str, user: str, password: str) -> str:
    s = requests.Session()
    s.post(f"{url}/login", {"username": user, "password": password})

    c = s.cookies.get("tentris")
    return f"tentris={c}"


SERVER = "https://remote-server-with-auth.example.com"

cookie = login(SERVER, "my-username", "my-password")
graph = rdflib.Graph(store=TentrisHTTPStore(SERVER, headers={"Cookie": cookie}))

for binding in graph.query("SELECT * WHERE { ?s ?p ?o } LIMIT 10"):
    print(f"{binding.s.n3()} {binding.p.n3()} {binding.o.n3()}")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

tentris-0.20.1b0-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

tentris-0.20.1b0-cp312-abi3-manylinux_2_34_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.34+ x86-64

File details

Details for the file tentris-0.20.1b0-py3-none-any.whl.

File metadata

  • Download URL: tentris-0.20.1b0-py3-none-any.whl
  • Upload date:
  • Size: 11.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for tentris-0.20.1b0-py3-none-any.whl
Algorithm Hash digest
SHA256 0cfde617dd3d924d26d28d816be03f287478c00c105c39efa53de62ebc4b77a5
MD5 b9fd2ca24ebe51856efcb81795ec4e8e
BLAKE2b-256 3d629f43c9f85ea249f9e9ca1a07e66b5fe78de0054c66e352a37b3f9142ec57

See more details on using hashes here.

File details

Details for the file tentris-0.20.1b0-cp312-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for tentris-0.20.1b0-cp312-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 5e859a0282129b0683a4c065261c35f2cb043d3d317333e970dc069535e3d9cd
MD5 451733ab4656f67cc944a33858d1b2fe
BLAKE2b-256 5ea8b073eebeb05e333ee9fe3b62391c7b29d7a039fcaf8534dec7722ce4437c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page