Migration Guide

From 0.3 to 0.4

  • Python 3.7 and musllinux_1_1 support have been removed.

  • OSError is now raised instead of IOError on OS errors.

  • The mime_type parameter have been renamed to format in I/O functions. Using RdfFormat is recommended to describe formats.

  • Boolean SPARQL results are now encoded with the QueryBoolean class and not a simple bool.

  • A path parameter has been added to all I/O method to read from a file. The existing input parameter now consider str values to be a serialization to parse. For example, parse(path="foo.ttl") will parse the file foo.ttl whereas parse("foo", format=RdfFormat.N_TRIPLES) will parse a N-Triples file which content is foo.

From 0.2 to 0.3

  • Python 3.6 and manylinux2010 (PEP 571) support have been removed. The new minimal versions are Python 3.7 and manylinux2014 (PEP 599).

  • The on-disk storage system has been rebuilt on top of RocksDB. It is now implemented by the Store class that keeps the same API as the late SledStore class.

    To migrate you have to dump the store content using pyoxigraph 0.2 and the following code:

    from pyoxigraph import SledStore
    store = SledStore('MY_STORAGE_PATH')
    with open('temp_file.nq', 'wb') as fp:
        store.dump(fp, "application/n-quads")
    

    And then upgrade to pyoxigraph 0.3 and run:

    from pyoxigraph import Store
    store = Store('MY_NEW_STORAGE_PATH')
    with open('temp_file.nq', 'rb') as fp:
        store.bulk_load(fp, "application/n-quads")
    
  • The in-memory storage class MemoryStore has been merged into the Store class that provides the exact same API as the late MemoryStore. On platforms other than Linux, a temporary directory is created when opening the Store and automatically removed when it is garbage collected. No data is written in this directory.

  • Store operations are now transactional using the “repeatable read” isolation level: the store only exposes changes that have been “committed” (i.e. no partial writes) and the exposed state does not change for the complete duration of a read operation (e.g. a SPARQL query) or a read/write operation (e.g. a SPARQL update).

  • RDF-star is now supported (including serialization formats and SPARQL-star). Triple can now be used in Triple.object, Triple.object, Quad.subject and Quad.object.