oxide_graph/lib.rs
1//! # `oxide-graph` — Semantic Knowledge Graph
2//!
3//! In-memory typed property graph used by Rust Oxide to fuse data from
4//! `oxide-mirror` (structured API rows), `oxide-browser-sh` (web
5//! extractions), and any other module that emits facts. The graph stays
6//! pure-Rust + dependency-free so it works in tests and embedded contexts;
7//! the same shape can later back onto a remote Neo4j / Dgraph cluster via an
8//! alternate [`GraphStore`] implementation.
9//!
10//! Layout:
11//!
12//! * [`graph`] — `Node`, `Edge`, in-memory [`InMemoryGraph`] with id-keyed
13//! storage, label / property indices, and undirected lookup.
14//! * [`query`] — `NodeQuery`, `EdgeQuery`, traversal primitives.
15//! * [`ingest`] — build helpers that translate mirrored records into nodes
16//! and follow JSON references to seed edges.
17//! * [`kernel`] — [`GraphModule`](kernel::GraphModule) wires the graph onto
18//! the `oxide-k` message bus.
19
20#![deny(rust_2018_idioms)]
21#![warn(missing_docs)]
22
23pub mod error;
24pub mod graph;
25pub mod ingest;
26pub mod kernel;
27#[cfg(feature = "neo4j")]
28pub mod neo4j;
29#[cfg(feature = "persist")]
30pub mod persist;
31pub mod query;
32
33pub use error::{GraphError, Result};
34pub use graph::{Edge, EdgeId, GraphStore, InMemoryGraph, Node, NodeId};
35pub use ingest::{ingest_record, RecordRef};
36pub use kernel::GraphModule;
37#[cfg(feature = "neo4j")]
38pub use neo4j::Neo4jGraph;
39pub use query::{EdgeQuery, NodeQuery};