Persistence¶
RDFLib provides an abstracted Store API
for persistence of RDF and Notation 3. The
Graph
class works with instances of this API
(as the first argument to its constructor) for triple-based management
of an RDF store including: garbage collection, transaction management,
update, pattern matching, removal, length, and database management
(open()
/ close()
/ destroy()
).
Additional persistence mechanisms can be supported by implementing this API for a different store.
Stores currently shipped with core RDFLib¶
Memory
- not persistent!BerkeleyDB
- on disk persistence via Python’s berkeleydb packageSPARQLStore
- a read-only wrapper around a remote SPARQL Query endpointSPARQLUpdateStore
- a read-write wrapper around a remote SPARQL query/update endpoint pair
Usage¶
In most cases, passing the name of the store to the Graph constructor is enough:
from rdflib import Graph
graph = Graph(store='BerkeleyDB')
Most stores offering on-disk persistence will need to be opened before reading or writing. When peristing a triplestore, rather than a ConjuntiveGraph quadstore, you need to specify an identifier with which you can open the graph:
graph = Graph('BerkeleyDB', identifier='mygraph')
# first time create the store:
graph.open('/home/user/data/myRDFLibStore', create=True)
# work with the graph:
data = """
PREFIX : <https://example.org/>
:a :b :c .
:d :e :f .
:d :g :h .
"""
graph.parse(data=data, format="ttl")
# when done!
graph.close()
When done, close()
must be called to free the resources associated with the store.
Additional store plugins¶
More store implementations are available in RDFLib extension projects:
rdflib-sqlalchemy – a store which supports a wide-variety of RDBMS backends,
rdflib-leveldb – a store on top of Google’s LevelDB key-value store.
rdflib-kyotocabinet – a store on top of the Kyoto Cabinet key-value store.
Example¶
examples.berkeleydb_example
contains an example for using a BerkeleyDB store.examples.sparqlstore_example
contains an example for using a SPARQLStore.