Sophia v0.7 was released


This is the late announcement of Sophia  v0.7. (http://crates.io/crates/sophia). It was actually released in last July, but I didn't take the time to blog about it. Recently I released an updated v0.7.1, containing bug fixes and improved documentation.

What's new?

  • All code has been moved out of the general sophia crate into smalled focused crates (see list in README). Developers now have the choice to include the "all-inclusive" sophia crate, or a selection of smaller ones.
  • A new API for SPARQL-enabled datasets is now available. No implementation is currently provided in Sophia itself, but I wrote a small proof-of-concept implementation as an example.
  • Two new serializers are now available: Turtle and TriG. They have two modes: stream (the default one, which aims to be fast and memory-efficient) and pretty (which strives to create compact and human-readable serializations).
  • In addition to the developer documentation, @huhn511 initiated a user documentation. This is still über-minimalistic at the moment, but I plan to flesh it out in a no-too-distant future.

What's next?

A new feature should be coming to stable Rust soon: Generic Associated Types (GATs). We have known for a long time (see issues #23 and #24) that this feature could help make Sophia's API simpler and more powerful. Therefore, it seems timely to introduce them.

This has two consequences:

  • Since this will cause many breacking changes in this API, I will take this opportunity to apply a number of other breaking changes that I think would improve the overall usability and quality of Sophia. Therefore, v0.8 will be largely backward incompatible with v0.7. I will still try my best to make the migration path as painless as possible.
  • It has always been important to me that Sophia could be used as widely as possible, and therefore I have always kept it in the stable branch of the Rust toolchain. GATs, however, as currently only supported in nightly. Some future commits on the main branch may therefore require nightly to compile. My plan is, however, to wait until this feature lands in stable to release v0.8, so that released versions of Sophia are still usable in stable.

Oh, and by the way, one of the reasons for using GATs is that it will make it easier for Sophia to support RDF-star... which I'm (obviously) very excited about!