pub trait GraphStore {
Show 31 methods
// Required methods
fn upsert_node(&self, node: &GraphNode) -> Result<()>;
fn upsert_edge(&self, edge: &GraphEdge) -> Result<()>;
fn delete_node(&self, id: &str) -> Result<usize>;
fn delete_edge(
&self,
from_id: &str,
to_id: &str,
kind: &str,
) -> Result<usize>;
fn node(&self, id: &str) -> Result<Option<GraphNode>>;
fn all_nodes(&self) -> Result<Vec<GraphNode>>;
fn all_edges(&self) -> Result<Vec<GraphEdge>>;
fn nodes_by_kind(&self, kind: &str) -> Result<Vec<GraphNode>>;
fn outgoing_edges(
&self,
from_id: &str,
kind: Option<&str>,
) -> Result<Vec<GraphEdge>>;
fn shortest_path(
&self,
from_id: &str,
to_id: &str,
kind: Option<&str>,
) -> Result<Option<GraphPath>>;
// Provided methods
fn nodes_by_ids(&self, ids: &[String]) -> Result<Vec<GraphNode>> { ... }
fn edge(&self, edge_id: &str) -> Result<Option<GraphEdge>> { ... }
fn graph_counts(&self) -> Result<(usize, usize)> { ... }
fn sample_edge(&self, kind: Option<&str>) -> Result<Option<GraphEdge>> { ... }
fn sample_edge_with_property(
&self,
) -> Result<Option<(GraphEdge, GraphPropertyFilter)>> { ... }
fn incident_edges(
&self,
node_id: &str,
kind: Option<&str>,
) -> Result<Vec<GraphEdge>> { ... }
fn semantic_seeded_expansion_edges(
&self,
current_id: &str,
options: &SemanticSeededNeighborhoodOptions,
) -> Result<SemanticSeededNeighborhoodExpansion> { ... }
fn paged_edges(
&self,
kind: Option<&str>,
options: GraphQueryOptions,
) -> Result<GraphPagedSubgraph> { ... }
fn paged_incident_edges(
&self,
node_id: &str,
kind: Option<&str>,
options: GraphQueryOptions,
) -> Result<GraphPagedSubgraph> { ... }
fn edges_between_nodes(
&self,
node_ids: &BTreeSet<String>,
) -> Result<Vec<GraphEdge>> { ... }
fn shortest_path_with_max_hops(
&self,
from_id: &str,
to_id: &str,
kind: Option<&str>,
max_hops: Option<usize>,
) -> Result<Option<GraphPath>> { ... }
fn neighborhood(
&self,
center_id: &str,
depth: usize,
kind: Option<&str>,
) -> Result<Option<GraphSubgraph>> { ... }
fn paged_nodes_by_kind(
&self,
kind: &str,
options: GraphQueryOptions,
) -> Result<GraphPagedSubgraph> { ... }
fn paged_neighborhood(
&self,
center_id: &str,
depth: usize,
kind: Option<&str>,
options: GraphQueryOptions,
) -> Result<Option<GraphPagedSubgraph>> { ... }
fn semantic_seeded_neighborhood(
&self,
seed_ids: &[String],
options: &SemanticSeededNeighborhoodOptions,
) -> Result<SemanticSeededNeighborhoodResult> { ... }
fn ranked_neighborhood(
&self,
center_id: &str,
options: &RankedNeighborhoodOptions,
) -> Result<Option<RankedNeighborhoodResult>> { ... }
fn reachable_nodes_by_kind(
&self,
from_id: &str,
kind: &str,
depth: usize,
limit: usize,
) -> Result<Vec<(GraphNode, GraphPath)>> { ... }
fn reachable_nodes_by_kinds(
&self,
from_id: &str,
kinds: &[&str],
depth: usize,
limit: usize,
) -> Result<BTreeMap<String, Vec<(GraphNode, GraphPath)>>> { ... }
fn semantic_top_candidates(
&self,
query_vector: &[f64],
kinds: &[&str],
limit: usize,
) -> Result<Vec<GraphSemanticCandidate>> { ... }
fn evidence_target_candidates(
&self,
target: &str,
kinds: &[&str],
preferred_path: Option<&str>,
) -> Result<Vec<GraphNode>> { ... }
fn resolve_evidence_target(
&self,
target: &str,
kinds: &[&str],
) -> Result<Option<GraphNode>> { ... }
}Required Methods§
fn upsert_node(&self, node: &GraphNode) -> Result<()>
fn upsert_edge(&self, edge: &GraphEdge) -> Result<()>
fn delete_node(&self, id: &str) -> Result<usize>
fn delete_edge(&self, from_id: &str, to_id: &str, kind: &str) -> Result<usize>
fn node(&self, id: &str) -> Result<Option<GraphNode>>
fn all_nodes(&self) -> Result<Vec<GraphNode>>
fn all_edges(&self) -> Result<Vec<GraphEdge>>
fn nodes_by_kind(&self, kind: &str) -> Result<Vec<GraphNode>>
fn outgoing_edges( &self, from_id: &str, kind: Option<&str>, ) -> Result<Vec<GraphEdge>>
fn shortest_path( &self, from_id: &str, to_id: &str, kind: Option<&str>, ) -> Result<Option<GraphPath>>
Provided Methods§
fn nodes_by_ids(&self, ids: &[String]) -> Result<Vec<GraphNode>>
fn edge(&self, edge_id: &str) -> Result<Option<GraphEdge>>
fn graph_counts(&self) -> Result<(usize, usize)>
fn sample_edge(&self, kind: Option<&str>) -> Result<Option<GraphEdge>>
fn sample_edge_with_property( &self, ) -> Result<Option<(GraphEdge, GraphPropertyFilter)>>
fn incident_edges( &self, node_id: &str, kind: Option<&str>, ) -> Result<Vec<GraphEdge>>
fn semantic_seeded_expansion_edges( &self, current_id: &str, options: &SemanticSeededNeighborhoodOptions, ) -> Result<SemanticSeededNeighborhoodExpansion>
fn paged_edges( &self, kind: Option<&str>, options: GraphQueryOptions, ) -> Result<GraphPagedSubgraph>
fn paged_incident_edges( &self, node_id: &str, kind: Option<&str>, options: GraphQueryOptions, ) -> Result<GraphPagedSubgraph>
fn edges_between_nodes( &self, node_ids: &BTreeSet<String>, ) -> Result<Vec<GraphEdge>>
fn shortest_path_with_max_hops( &self, from_id: &str, to_id: &str, kind: Option<&str>, max_hops: Option<usize>, ) -> Result<Option<GraphPath>>
fn neighborhood( &self, center_id: &str, depth: usize, kind: Option<&str>, ) -> Result<Option<GraphSubgraph>>
fn paged_nodes_by_kind( &self, kind: &str, options: GraphQueryOptions, ) -> Result<GraphPagedSubgraph>
fn paged_neighborhood( &self, center_id: &str, depth: usize, kind: Option<&str>, options: GraphQueryOptions, ) -> Result<Option<GraphPagedSubgraph>>
fn semantic_seeded_neighborhood( &self, seed_ids: &[String], options: &SemanticSeededNeighborhoodOptions, ) -> Result<SemanticSeededNeighborhoodResult>
fn ranked_neighborhood( &self, center_id: &str, options: &RankedNeighborhoodOptions, ) -> Result<Option<RankedNeighborhoodResult>>
fn reachable_nodes_by_kind( &self, from_id: &str, kind: &str, depth: usize, limit: usize, ) -> Result<Vec<(GraphNode, GraphPath)>>
fn reachable_nodes_by_kinds( &self, from_id: &str, kinds: &[&str], depth: usize, limit: usize, ) -> Result<BTreeMap<String, Vec<(GraphNode, GraphPath)>>>
fn semantic_top_candidates( &self, query_vector: &[f64], kinds: &[&str], limit: usize, ) -> Result<Vec<GraphSemanticCandidate>>
fn evidence_target_candidates( &self, target: &str, kinds: &[&str], preferred_path: Option<&str>, ) -> Result<Vec<GraphNode>>
fn resolve_evidence_target( &self, target: &str, kinds: &[&str], ) -> Result<Option<GraphNode>>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".