hypersteeldb 0.5.3

A database that compiles questions instead of guessing answers: typed vocabulary discovered from your documents, queries type-checked before they run, roaring-bitmap set algebra over reified hyperedges, and Dempster-Shafer evidence with an explicit conflict guard.
Documentation
fn main() {
    let docs: Vec<String> = [
        "Acme Corp supplies the Defence Ministry with airframes in 2026.",
        "Acme Corp supplies the Defence Ministry with sensors in 2026.",
        "Acme Corp is not permitted to supply the Defence Ministry in 2026.",
        "A field survey recorded Acme Corp near Violet City at 240 m.",
        "A field survey recorded Beta Corp near Violet City at 310 m.",
        "A field survey recorded Gamma Corp near Violet City at 180 m.",
        "Beta Corp supplies the Defence Ministry with airframes in 2026.",
        "Gamma Corp is not permitted to supply the Defence Ministry in 2026.",
    ].iter().map(|s| s.to_string()).collect();
    let db = steeldb::SteelDb::ingest(docs).unwrap();
    println!("categories: {:?}", db.askable());
    println!("\nrelation tags actually produced:");
    for t in db.tags().get("rel").map(|v| v.as_slice()).unwrap_or(&[]).iter()
        .filter(|t| t.contains("supplies") || t.contains("permitted/-")) { println!("{t}"); }
    println!("\nbelief intervals:");
    for t in ["state/asserted","state/negated"] {
        let i = db.belief(t);
        println!("{t:16} [{:.2}, {:.2}]   ignorance {:.2}", i.belief, i.plausibility, i.ignorance());
    }
    println!("\nverbatim refusal:");
    match db.query("gene/brca1") { Ok(_)=>{}, Err(r)=>println!("{r}") }
}