@rulespace/rulespace
v0.1.1
Published
Rulespace: an incremental bottom-up rule engine ===============================================
Downloads
3
Maintainers
Readme
Rulespace: an incremental bottom-up rule engine
Rulespace is a framework for specifying and instantiating incremental bottom-up rule engines. It consists of the following main parts:
- Rulespace model and specification language for expressing facts and rules
- Compilation of rules and facts into an executable module (a JS constructor or ES module)
- Instantiation of Rulespace modules into a Rulespace instance that accepts fact deltas
Installation (developer)
git clone https://gitlab.soft.vub.ac.be/rulespace/common.git
git clone https://gitlab.soft.vub.ac.be/rulespace/rulespace.git
cd common
npm link
cd ..
cd rulespace
npm link common
npm test
Overview
Specification of rules and facts
A Rulespace program--a set rules and facts--is expressed using the AST defined in rsp.js
.
To facilitate the specification of rules and facts, and for testing and debugging purposes, this package also defines a surface syntax that is s-expression-based.
First, str2sexp
turns Rulespace syntax into s-expressions, and then sexp2rsp
transforms these s-expressions into a Rulespace AST.
Compiling into executable JavaScript
A Rulespace AST can be compiled into a JavaScript constructor or module using function rsp2js
.
The resulting function or module exposes an interface that accepts fact deltas, i.e., the addition or removal of facts.
Creating Rulespace instances
An instantiation of a Rulespace constructor, or the import of a Rulespace module, results in a fresh Rulespace instance that incrementally updates itself with every fact delta it receives.
Examples
Check the examples
directory.