rdflib extension adding SQLAlchemy as an AbstractSQLStore back-end store
Project description
RDFLib-SQLAlchemy
A SQLAlchemy-backed, formula-aware RDFLib Store. It stores its triples in the following partitions:
- Asserted non rdf:type statements.
- Asserted rdf:type statements (in a table which models Class membership). The motivation for this partition is primarily query speed and scalability as most graphs will always have more rdf:type statements than others.
- All Quoted statements.
In addition, it persists namespace mappings in a separate table. Table names are prefixed kb_{identifier_hash}, where identifier_hash is the first ten characters of the SHA1 hash of the given identifier.
Back-end persistence
Back-end persistence is provided by SQLAlchemy.
Tested dialects are:
- SQLite, using the built-in Python driver
- MySQL, using the MySQLdb-python driver or, for Python 3, mysql-connector
- PostgreSQL, using the psycopg2 driver or the pg8000 driver.
pysqlite: https://pypi.python.org/pypi/pysqlite
MySQLdb-python: https://pypi.python.org/pypi/MySQL-python
mysql-connector: http://dev.mysql.com/doc/connector-python/en/connector-python.html
psycopg2: https://pypi.python.org/pypi/psycopg2
pg8000: https://pypi.python.org/pypi/pg8000
Development
Note: Currently, rdflib-sqlalchemy is in maintenance mode. That means the current maintainer (@mwatts15) will do what he can to keep the package working for existing use-cases, but new features will not be added and newer versions of SQLAlchemy will not be supported. If you have an interest in further development of rdflib-sqlalchemy, please get in touch with @mwatts15 or core RDFLib project developers.
Github repository: https://github.com/RDFLib/rdflib-sqlalchemy
Continuous integration: https://travis-ci.org/RDFLib/rdflib-sqlalchemy/
An illustrative unit test:
import unittest
from rdflib import plugin, Graph, Literal, URIRef
from rdflib.store import Store
class SQLASQLiteGraphTestCase(unittest.TestCase):
ident = URIRef("rdflib_test")
uri = Literal("sqlite://")
def setUp(self):
self.graph = Graph("SQLAlchemy", identifier=self.ident)
self.graph.open(self.uri, create=True)
def tearDown(self):
self.graph.destroy(self.uri)
try:
self.graph.close()
except:
pass
def test01(self):
self.assert_(self.graph is not None)
print(self.graph)
if __name__ == '__main__':
unittest.main()
Running the tests
pytest is supported as a test runner, typically called via tox. Select the
SQL back-end by setting a DB environment variable. Select the database
connection by setting the DBURI variable. With tox, you can also specify
the Python version.
Using pytest::
DB='pgsql' DBURI='postgresql+psycopg2://user:password@host/dbname' pytest
Using tox::
DB='pgsql' DBURI='postgresql+psycopg2://user:password@host/dbname' tox -e py310
DB variants are 'pgsql', 'mysql' and 'sqlite'. Except in the case of SQLite, you'll need to create the database independently, before execution of the test.
Sample DBURI values::
dburi = Literal("mysql://username:password@hostname:port/database-name?other-parameter")
dburi = Literal("mysql+mysqldb://user:password@hostname:port/database?charset=utf8")
dburi = Literal('postgresql+psycopg2://user:password@hostname:port/database')
dburi = Literal('postgresql+pg8000://user:password@hostname:port/database')
dburi = Literal('sqlite:////absolute/path/to/foo.db')
dburi = Literal("sqlite:///%(here)s/development.sqlite" % {"here": os.getcwd()})
dburi = Literal('sqlite://') # In-memory
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file brickschema_rdflib_sqlalchemy-0.6.2.tar.gz.
File metadata
- Download URL: brickschema_rdflib_sqlalchemy-0.6.2.tar.gz
- Upload date:
- Size: 1.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
efdd4d8255cd80d041431c5c8f23d0f4b68bc7f641fa4dbd1696f338a5508510
|
|
| MD5 |
a2e15eeac522a54550efaed14aa09f99
|
|
| BLAKE2b-256 |
2e99b2ae995f14ae3ed0f18387ed980a9c338580f710d8880277c83ed560b726
|
File details
Details for the file brickschema_rdflib_sqlalchemy-0.6.2-py3-none-any.whl.
File metadata
- Download URL: brickschema_rdflib_sqlalchemy-0.6.2-py3-none-any.whl
- Upload date:
- Size: 21.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e987940ffae55803cd7bf1ac0d23afb643b4ea70aa71247cec301463faaf3a87
|
|
| MD5 |
a577bead8caf9df92a46b280c5246fa5
|
|
| BLAKE2b-256 |
0800cb97a355d05a30e85c157b4ccfd396164165a67b8bd0f8de086d478449cd
|