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
impl GraphCollection
Sourcepub fn create(
path: PathBuf,
name: &str,
dimension: Option<usize>,
metric: DistanceMetric,
schema: GraphSchema,
) -> Result<Self>
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.
Sourcepub fn open(path: PathBuf) -> Result<Self>
pub fn open(path: PathBuf) -> Result<Self>
Opens an existing GraphCollection from disk.
§Errors
Returns an error if config or storage cannot be opened.
Sourcepub fn schema(&self) -> GraphSchema
pub fn schema(&self) -> GraphSchema
Returns the graph schema stored in config.
Returns GraphSchema::schemaless() for collections that have no schema set.
Sourcepub fn has_embeddings(&self) -> bool
pub fn has_embeddings(&self) -> bool
Returns true if this collection stores node embeddings.
Sourcepub fn add_edge(&self, edge: GraphEdge) -> Result<()>
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.
Sourcepub fn get_edges(&self, label: Option<&str>) -> Vec<GraphEdge>
pub fn get_edges(&self, label: Option<&str>) -> Vec<GraphEdge>
Returns edges, optionally filtered by label.
Sourcepub fn get_outgoing(&self, node_id: u64) -> Vec<GraphEdge>
pub fn get_outgoing(&self, node_id: u64) -> Vec<GraphEdge>
Returns all outgoing edges from a node.
Sourcepub fn get_incoming(&self, node_id: u64) -> Vec<GraphEdge>
pub fn get_incoming(&self, node_id: u64) -> Vec<GraphEdge>
Returns all incoming edges to a node.
Sourcepub fn node_degree(&self, node_id: u64) -> (usize, usize)
pub fn node_degree(&self, node_id: u64) -> (usize, usize)
Returns (in_degree, out_degree) for a node.
Sourcepub fn traverse_bfs(
&self,
source_id: u64,
config: &TraversalConfig,
) -> Vec<TraversalResult>
pub fn traverse_bfs( &self, source_id: u64, config: &TraversalConfig, ) -> Vec<TraversalResult>
Performs BFS traversal from a source node.
Sourcepub fn traverse_dfs(
&self,
source_id: u64,
config: &TraversalConfig,
) -> Vec<TraversalResult>
pub fn traverse_dfs( &self, source_id: u64, config: &TraversalConfig, ) -> Vec<TraversalResult>
Performs DFS traversal from a source node.
Sourcepub fn search_by_embedding(
&self,
query: &[f32],
k: usize,
) -> Result<Vec<SearchResult>>
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.
Sourcepub fn execute_query(
&self,
query: &Query,
params: &HashMap<String, Value>,
) -> Result<Vec<SearchResult>>
pub fn execute_query( &self, query: &Query, params: &HashMap<String, Value>, ) -> Result<Vec<SearchResult>>
Trait Implementations§
Source§impl Clone for GraphCollection
impl Clone for GraphCollection
Source§fn clone(&self) -> GraphCollection
fn clone(&self) -> GraphCollection
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for GraphCollection
impl !RefUnwindSafe for GraphCollection
impl Send for GraphCollection
impl Sync for GraphCollection
impl Unpin for GraphCollection
impl UnsafeUnpin for GraphCollection
impl !UnwindSafe for GraphCollection
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
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 bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
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>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
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 rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
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 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.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
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);