Skip to main content

GraphCollection

Struct GraphCollection 

Source
pub struct GraphCollection { /* private fields */ }
Expand description

A graph collection storing typed relationships between nodes.

Node embeddings are optional: if dimension is None, no vector index is created.

§Examples

use velesdb_core::{GraphCollection, GraphSchema, GraphEdge, DistanceMetric};

let coll = GraphCollection::create(
    "./data/kg".into(),
    "knowledge",
    None,                    // no embeddings
    DistanceMetric::Cosine,  // unused when no embeddings
    GraphSchema::schemaless(),
)?;

let edge = GraphEdge::new(1, 100, 200, "KNOWS")?;
coll.add_edge(edge)?;

Implementations§

Source§

impl GraphCollection

Source

pub fn diagnostics(&self) -> CollectionDiagnostics

Returns diagnostic information about this collection.

Source§

impl GraphCollection

Source

pub fn create( path: PathBuf, name: &str, dimension: Option<usize>, metric: DistanceMetric, schema: GraphSchema, ) -> Result<Self>

Creates a new GraphCollection.

§Errors

Returns an error if the directory cannot be created or storage fails.

Source

pub fn open(path: PathBuf) -> Result<Self>

Opens an existing GraphCollection from disk.

§Errors

Returns an error if config or storage cannot be opened.

Source

pub fn flush(&self) -> Result<()>

Flushes all state to disk.

Issue #423: This fast-path flush skips vectors.idx serialization. The WAL provides crash recovery for the vector index.

§Errors

Returns an error if any flush operation fails.

Source

pub fn flush_full(&self) -> Result<()>

Full durability flush including vectors.idx serialization.

Issue #423: Use on graceful shutdown to avoid a full WAL replay on the next startup.

§Errors

Returns an error if any flush operation fails.

Source

pub fn name(&self) -> String

Returns the collection name.

Source

pub fn schema(&self) -> GraphSchema

Returns the graph schema stored in config.

Returns GraphSchema::schemaless() for collections that have no schema set.

Source

pub fn has_embeddings(&self) -> bool

Returns true if this collection stores node embeddings.

Source

pub fn add_edge(&self, edge: GraphEdge) -> Result<()>

Adds an edge between two nodes.

§Errors
  • Returns Error::EdgeExists if an edge with the same ID already exists.
§Examples
let edge = GraphEdge::new(1, 100, 200, "KNOWS")?;
coll.add_edge(edge)?;
Source

pub fn add_edges_batch(&self, edges: Vec<GraphEdge>) -> usize

Adds multiple edges in batch (much faster than calling add_edge in a loop).

Acquires locks once for the entire batch and rebuilds the CSR snapshot once at the end. Duplicate edge IDs are silently skipped.

§Returns

Number of edges successfully added.

Source

pub fn get_edges(&self, label: Option<&str>) -> Vec<GraphEdge>

Returns edges, optionally filtered by label.

Source

pub fn get_outgoing(&self, node_id: u64) -> Vec<GraphEdge>

Returns all outgoing edges from a node.

Source

pub fn get_incoming(&self, node_id: u64) -> Vec<GraphEdge>

Returns all incoming edges to a node.

Source

pub fn edge_count(&self) -> usize

Returns the total number of edges in the graph without materializing them.

Source

pub fn node_degree(&self, node_id: u64) -> (usize, usize)

Returns (in_degree, out_degree) for a node.

Source

pub fn all_node_ids(&self) -> Vec<u64>

Returns the IDs of all nodes that have a stored payload.

Nodes that appear only as edge endpoints without a stored payload are not included. Use GraphCollection::get_edges to discover all referenced node IDs.

Source

pub fn scroll_batch( &self, cursor: Option<u64>, batch_size: usize, filter: Option<&Filter>, ) -> Result<ScrollBatch>

Returns the next batch of points for scroll iteration.

Delegates to the inner collection’s scroll_batch (parallel implementation to VectorCollection::scroll_batch).

§Errors

Returns an error if batch_size is 0.

Source

pub fn len(&self) -> usize

Returns the number of nodes (points) stored in this collection.

Source

pub fn is_empty(&self) -> bool

Returns true if the collection contains no nodes.

Source

pub fn get(&self, ids: &[u64]) -> Vec<Option<Point>>

Retrieves nodes by IDs, returning None for missing entries.

Source

pub fn delete(&self, ids: &[u64]) -> Result<()>

Deletes nodes by IDs.

Missing IDs are silently ignored.

§Errors

Returns an error if storage operations fail.

Source

pub fn remove_edge(&self, edge_id: u64) -> bool

Removes an edge from the graph by ID.

Returns true if the edge existed and was removed, false otherwise.

Source

pub fn traverse_bfs( &self, source_id: u64, config: &TraversalConfig, ) -> Vec<TraversalResult>

Performs BFS traversal from a source node.

§Examples
let config = TraversalConfig { max_depth: 3, ..TraversalConfig::default() };
let results = coll.traverse_bfs(100, &config);
for r in &results {
    println!("node={} depth={}", r.target_id, r.depth);
}
Source

pub fn traverse_dfs( &self, source_id: u64, config: &TraversalConfig, ) -> Vec<TraversalResult>

Performs DFS traversal from a source node.

Source

pub fn traverse_bfs_parallel( &self, start_nodes: &[u64], config: &TraversalConfig, ) -> Vec<TraversalResult>

Performs parallel BFS traversal from multiple start nodes.

When start_nodes exceeds the parallel threshold (100 nodes), rayon distributes independent per-start-node BFS traversals across CPU cores. Results are deduplicated by path signature and truncated to config.limit.

§Examples
let config = TraversalConfig { max_depth: 3, ..TraversalConfig::default() };
let results = coll.traverse_bfs_parallel(&[100, 200, 300], &config);
for r in &results {
    println!("node={} depth={}", r.target_id, r.depth);
}
Source

pub fn upsert_node_payload(&self, node_id: u64, payload: &Value) -> Result<()>

Inserts or updates node payload (properties).

§Errors

Returns an error if storage fails.

Source

pub fn store_node_payload(&self, node_id: u64, payload: &Value) -> Result<()>

👎Deprecated since 1.6.0:

Use upsert_node_payload() instead

Inserts or updates node payload (properties).

§Errors

Returns an error if storage fails.

Source

pub fn get_node_payload(&self, node_id: u64) -> Result<Option<Value>>

Retrieves node payload.

§Errors

Returns an error if retrieval fails.

Source

pub fn search_by_embedding( &self, query: &[f32], k: usize, ) -> Result<Vec<SearchResult>>

Searches for similar nodes by embedding (only available if has_embeddings()).

§Errors

Returns Error::VectorNotAllowed if this collection has no embeddings, or Error::DimensionMismatch if the query dimension is wrong.

Source

pub fn search(&self, query: &[f32], k: usize) -> Result<Vec<SearchResult>>

Alias for search_by_embedding.

Provided for API parity with crate::VectorCollection::search.

§Errors

Returns Error::VectorNotAllowed if this collection has no embeddings, or Error::DimensionMismatch if the query dimension is wrong.

Source§

impl GraphCollection

Source

pub fn execute_query( &self, query: &Query, params: &HashMap<String, Value>, ) -> Result<Vec<SearchResult>>

Executes a parsed VelesQL query.

§Errors

Returns an error if the query is invalid or execution fails.

Source

pub fn explain_analyze_query( &self, query: &Query, params: &HashMap<String, Value>, ) -> Result<ExplainOutput>

Executes a query with instrumentation and returns plan + actual stats.

Delegates to crate::Database::explain_analyze_query.

§Errors

Returns an error if the query is invalid or execution fails.

Source

pub fn execute_query_str( &self, sql: &str, params: &HashMap<String, Value>, ) -> Result<Vec<SearchResult>>

Executes a raw VelesQL string, parsing it before execution.

§Errors
  • Returns an error if the SQL string cannot be parsed.
  • Returns an error if query execution fails.
Source

pub fn execute_match( &self, match_clause: &MatchClause, params: &HashMap<String, Value>, ) -> Result<Vec<MatchResult>>

Executes a MATCH graph pattern query.

§Errors

Returns an error if the query cannot be executed.

Source

pub fn execute_match_with_similarity( &self, match_clause: &MatchClause, query_vector: &[f32], similarity_threshold: f32, params: &HashMap<String, Value>, ) -> Result<Vec<MatchResult>>

Executes a MATCH query with vector similarity scoring.

§Errors

Returns an error on dimension mismatch or execution failure.

Trait Implementations§

Source§

impl Clone for GraphCollection

Source§

fn clone(&self) -> GraphCollection

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Paint for T
where T: ?Sized,

Source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
Source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
Source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
Source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
Source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
Source§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1:

renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more