Expand description
rdfox-rs
RDFox is a product of Oxford Semantic Technologies RDFox.
RDFox is a high-performance, scalable and lightweight knowledge graph and semantic reasoning engine. It supports the storage, querying and reasoning over large-scale ontologies represented in RDF triples.
This crate provides a Rust interface to the RDFox database allowing you to use RDFox as database engine that is part of your program, no need to run a separate RDFox server (although that is also possible).
How this crate works
- It downloads the RDFox distribution zip file during build, straight from the vendor’s website to your target directory.
- It then generates bindings from
CRDFox.h
using bindgen (which requires llvm to be installed) - It either links to the dynamic link library
libRDFox.dylib
(if you use featurerdfox-dylib
) - Or else it links to the static RDFox library
libRDFox-static.a
by default. - It requires an RDFox license (see https://www.oxfordsemantic.tech/product)
- Copy the license file to
~/.RDFox/RDFox.lic
- Copy the license file to
- It provides a higher level rust-friendly interface over the RDFox C-API
Status
- All the basics work
- Proper documentation is still missing, check the tests/load.rs source code for an example
- Currently only supports RDFox 6.2 and RDFox 6.3
- RDFox itself is a C++ program with a C API that comes as a dynamic link library or a static library,
both of which are supported by this Rust crate.
- Use feature
rdfox-dylib
if you want to use the dynamic link library - At the moment, the static link library causes a
SIGSEGV
signal when running the tests.- This is being investigated.
- The RDFox API logging does not work when linking with the static library (issue in progress)
- Therefore, this crate is not ready for production yet.
- Use feature
- Has only been tested as an embedded database (meaning: running the whole RDFox database engine in your Rust process), however, in theory it should also be possible (with some tweaks that we have to add) to run it just as a client to a remote instance of RDFox.
Plans
- Get the static link library to not cause a
SIGSEGV
signal - Make high-level interface more abstract so that it can also be used for remote endpoints using REST calls
and potentially any other triple store product.
- Core components that are RDFox-independent have already been moved to the rdf-store-rs crate
Version
The major/minor version numbers of this crate are used to determine which version of RDFox needs to be downloaded and used.
How to run the tests
RUST_LOG=info cargo test
Or, if you want to see all output:
RUST_LOG=trace cargo test --package rdfox-rs --test load load_rdfox -- --exact --nocapture
If you want to run the tests with the dynamic link library of RDFox, then run this:
RUST_LOG=trace cargo test --package rdfox-rs --features rdfox-dylib --test load load_rdfox -- --exact --nocapture
Published where?
- Crate: https://crates.io/crates/rdfox-rs
- Documentation:
Modules
Macros
Structs
- Some simple queries about a
Class
- A pool-able connectable
DataStore
- A Cursor handles a query result.
- A
CursorRow
is a row of aCursor
, i.e., a set of bindings for the variables in the cursor’s answer. - A
DataStore
encapsulates a unit of logically related information. - A connection to a given
DataStore
. - A
GraphConnection
is a wrapper around aDataStoreConnection
with a specificGraph
and an optional ontologyGraph
. - A parsed mime or media type.
- A connection to a given
Server
. - SPARQL Statement
- A
Streamer
is a helper-object that’s created byevaluate_to_stream
to handle the various callbacks from the underlying C-API to RDFox.
Enums
Constants
Statics
Functions
- Find the license file in the given directory or in the home directory or check the environment variable RDFOX_LICENSE_CONTENT (which takes precedence).