Crates.io | tribles |
lib.rs | tribles |
version | 0.3.0-alpha.5 |
source | src |
created_at | 2020-09-17 19:00:56.118603 |
updated_at | 2024-11-05 13:05:08.039085 |
description | The tribles knowledge base implementation for rust. |
homepage | https://tribles.space |
repository | |
max_upload_size | |
id | 289887 |
size | 399,027 |
The real tragedy would be if people forgot that you can have new ideas about programming models in the first place.
- Bret Victor
The trible.space is our answer to the question "what if we re-invented data storage from first principles". It is a knowledge graph standard for blob storage that provides metadata management capabilities similar to file- and version-control-systems with the queryability and convenience of an embedded database.
We hope to overcome the shortcomings of previous semantic web/triple-store technologies, through simplicity, easy canonicalization and cryptographic identifiers, clean distributed semantics and lightweight libraries empowered by idiomatic host-language capabilities.
By reifying most concepts and operations as first class citizens, we hope to provide a toolkit that can be flexibly combined to serve a variety of knowledge representation, database, and data exchange use cases.
If you have any questions or want to chat about graph databases hop into our discord.
use tribles::prelude::*;
use tribles::prelude::valueschemas::*;
use tribles::prelude::blobschemas::*;
NS! {
pub namespace literature {
"8F180883F9FD5F787E9E0AF0DF5866B9" as author: GenId;
"0DBB530B37B966D137C50B943700EDB2" as firstname: ShortString;
"6BAA463FD4EAF45F6A103DB9433E4545" as lastname: ShortString;
"A74AA63539354CDA47F387A4C3A8D54C" as title: ShortString;
"76AE5012877E09FF0EE0868FE9AA0343" as height: FR256;
"6A03BAF6CFB822F04DA164ADAAEB53F6" as quote: Handle<Blake3, LongString>;
}
}
fn main() -> std::io::Result<()> {
let mut blobs = BlobSet::new();
let mut set = TribleSet::new();
let author_id = ufoid();
set.union(literature::entity!(&author_id, {
firstname: "Frank",
lastname: "Herbert",
}));
set.union(literature::entity!({
title: "Dune",
author: &author_id,
quote: blobs.insert("Deep in the human unconscious is a \
pervasive need for a logical universe that makes sense. \
But the real universe is always one step beyond logic."),
quote: blobs.insert("I must not fear. Fear is the \
mind-killer. Fear is the little-death that brings total \
obliteration. I will face my fear. I will permit it to \
pass over me and through me. And when it has gone past I \
will turn the inner eye to see its path. Where the fear \
has gone there will be nothing. Only I will remain.")
}));
let title = "Dune";
for (_, f, l, q) in find!(ctx,
(author: (), first: String, last: Value<_>, quote),
literature::pattern!(ctx, &set, [
{ author @
firstname: first,
lastname: last
},
{
title: (title),
author: author,
quote: quote
}])) {
let q: &str = blobs.get(q).unwrap();
println!("'{q}'\n - from {title} by {f} {}.", l.from_value::<&str>())
}
Ok(())
}