Nemo v0.1.0
Version 0.1.0 of Nemo already provides core features that make it usable as a fast in-memory rule reasoner. The command-line client nmo
can be used to access this functionality (use nmo --help
for a brief documentation).
New Features
At this version, Nemo includes support for the following features:
- Execution (materialization) of Datalog extended with existential rules (tuple-generating dependencies)
- Loading input data from CSV and TSV files, and writing results to CSV files
- Compatibility with RDF and SPARQL syntax for IRIs and literals
- Datatypes
integer
(whole numbers),float64
(64bit floating point numbers), andany
(union type that can represent any element; default) - Support for built-ins
<=
,<
,>=
, and>
for typeinteger
Nemo v0.1.0 is built for mid-sized computing tasks that can still be processed on a normal laptop in seconds or minutes (typically hundreds of thousands to hundreds of millions of facts). In such cases, Nemo is already quite fast – at least fast enough to outperform existing free rule engines on all tests we conducted so far. Example tasks and benchmark results can be found in our sister repository Nemo examples and benchmarks.
Known Limitations
There is a known problem with the binaries that were automatically built for this release. For best performance, please do not use the attached files but build Nemo on your machine using Rust (command cargo build -r
from the nemo directory).
The following features are not included in v0.1.0 yet and will be added in the next release:
- Stratified negation
- Support for RDF input and output
- More built-ins for datatypes, and more datatypes (note that already now Nemo can represent all kinds of values in type
any
, but it will be convenient to restrict to special cases such asstring
)
Moreover, the documentation is still very limited. This will be expanded gradually.
Feedback and issue reports are welcome!