triblespace 0.18.0

The Triblespace: A lightweight knowledge base for rust.
Documentation
use triblespace::prelude::*;

mod names {
    use triblespace::prelude::*;

    attributes! {
        "D02189E4C5A74E84B0FCBFDE3C533A0B" as first: valueschemas::ShortString;
        "8F2E5E6A6D9C42F2A4BF6471C5FBF5E0" as last: valueschemas::ShortString;
    }
}

fn main() {
    let base = TribleSet::new();
    let mut kb = base.clone();

    let same = ufoid();
    kb += entity! { &same @ names::first: "Same", names::last: "Same" };

    let delta = kb.difference(&base);

    let _: Vec<_> = find!(
        (person: Value<_>),
        pattern!(&kb, [
            { ?person @ names::first: _?name, names::last: _?name }
        ])
    )
    .collect();

    let _: Vec<_> = find!(
        (person: Value<_>),
        pattern_changes!(&kb, &delta, [
            { ?person @ names::first: _?name, names::last: _?name }
        ])
    )
    .collect();
}