Skip to main content

GraphStore

Trait GraphStore 

Source
pub trait GraphStore {
Show 35 methods // Required methods fn create_graph(&mut self, name: &str); fn drop_graph(&mut self, name: &str); fn graph_names(&self) -> Vec<String>; fn has_graph(&self, name: &str) -> bool; fn union_graphs( &mut self, g1: &str, g2: &str, target: &str, ) -> GraphStoreResult<()>; fn intersect_graphs( &mut self, g1: &str, g2: &str, target: &str, ) -> GraphStoreResult<()>; fn difference_graphs( &mut self, g1: &str, g2: &str, target: &str, ) -> GraphStoreResult<()>; fn copy_graph(&mut self, source: &str, target: &str) -> GraphStoreResult<()>; fn add_vertex( &mut self, vertex: Vertex, graph: &str, ) -> GraphStoreResult<()>; fn add_edge(&mut self, edge: Edge, graph: &str) -> GraphStoreResult<()>; fn remove_vertex( &mut self, vertex_id: VertexId, graph: &str, ) -> GraphStoreResult<()>; fn remove_edge( &mut self, edge_id: EdgeId, graph: &str, ) -> GraphStoreResult<()>; fn neighbors( &self, vertex_id: VertexId, label: Option<&str>, direction: Direction, graph: &str, ) -> GraphStoreResult<Vec<VertexId>>; fn vertices_by_label( &self, label: &str, graph: &str, ) -> GraphStoreResult<Vec<Vertex>>; fn vertices_in_graph(&self, graph: &str) -> GraphStoreResult<Vec<Vertex>>; fn edges_in_graph(&self, graph: &str) -> GraphStoreResult<Vec<Edge>>; fn vertex_graphs(&self, vertex_id: VertexId) -> BTreeSet<String>; fn out_edge_ids( &self, vertex_id: VertexId, graph: &str, ) -> GraphStoreResult<BTreeSet<EdgeId>>; fn in_edge_ids( &self, vertex_id: VertexId, graph: &str, ) -> GraphStoreResult<BTreeSet<EdgeId>>; fn edge_ids_by_label( &self, label: &str, graph: &str, ) -> GraphStoreResult<BTreeSet<EdgeId>>; fn vertex_ids_in_graph( &self, graph: &str, ) -> GraphStoreResult<BTreeSet<VertexId>>; fn degree_distribution( &self, graph: &str, ) -> GraphStoreResult<BTreeMap<VertexId, u64>>; fn label_degree(&self, label: &str, graph: &str) -> GraphStoreResult<f64>; fn vertex_label_counts( &self, graph: &str, ) -> GraphStoreResult<BTreeMap<String, u64>>; fn get_vertex(&self, vertex_id: VertexId) -> Option<&Vertex>; fn get_edge(&self, edge_id: EdgeId) -> Option<&Edge>; fn next_vertex_id(&mut self) -> GraphStoreResult<VertexId>; fn next_edge_id(&mut self) -> GraphStoreResult<EdgeId>; fn clear(&mut self); fn vertices(&self) -> BTreeMap<VertexId, Vertex>; fn edges(&self) -> BTreeMap<EdgeId, Edge>; // Provided methods fn vertex_ids_by_label( &self, label: &str, graph: &str, ) -> GraphStoreResult<Vec<VertexId>> { ... } fn require_vertex_in_graph( &self, vertex_id: VertexId, graph: &str, ) -> GraphStoreResult<()> { ... } fn allocate_vertex_id( &mut self, _label: &str, _graph: &str, ) -> GraphStoreResult<VertexId> { ... } fn allocate_edge_id( &mut self, _label: &str, _graph: &str, ) -> GraphStoreResult<EdgeId> { ... }
}
Expand description

Storage interface for named property graphs.

Each store hosts zero or more named graphs that share a single vertex / edge id space (a vertex can belong to multiple graphs). Mutations are scoped to a target graph by name.

Required Methods§

Source

fn create_graph(&mut self, name: &str)

Create a new named graph. No-op if it already exists.

Source

fn drop_graph(&mut self, name: &str)

Drop a named graph and all of its membership entries. Vertex / edge records that aren’t referenced by any other graph become unreachable and are released.

Source

fn graph_names(&self) -> Vec<String>

Return all graph names sorted ascending.

Source

fn has_graph(&self, name: &str) -> bool

Source

fn union_graphs( &mut self, g1: &str, g2: &str, target: &str, ) -> GraphStoreResult<()>

target := g1 union g2 over vertex and edge sets.

Source

fn intersect_graphs( &mut self, g1: &str, g2: &str, target: &str, ) -> GraphStoreResult<()>

target := g1 intersect g2.

Source

fn difference_graphs( &mut self, g1: &str, g2: &str, target: &str, ) -> GraphStoreResult<()>

target := g1 \ g2.

Source

fn copy_graph(&mut self, source: &str, target: &str) -> GraphStoreResult<()>

Source

fn add_vertex(&mut self, vertex: Vertex, graph: &str) -> GraphStoreResult<()>

Source

fn add_edge(&mut self, edge: Edge, graph: &str) -> GraphStoreResult<()>

Source

fn remove_vertex( &mut self, vertex_id: VertexId, graph: &str, ) -> GraphStoreResult<()>

Source

fn remove_edge(&mut self, edge_id: EdgeId, graph: &str) -> GraphStoreResult<()>

Source

fn neighbors( &self, vertex_id: VertexId, label: Option<&str>, direction: Direction, graph: &str, ) -> GraphStoreResult<Vec<VertexId>>

Neighbor vertex ids reached from vertex_id along edges with the given label (or any label when label is None) in the given direction.

Source

fn vertices_by_label( &self, label: &str, graph: &str, ) -> GraphStoreResult<Vec<Vertex>>

Source

fn vertices_in_graph(&self, graph: &str) -> GraphStoreResult<Vec<Vertex>>

Source

fn edges_in_graph(&self, graph: &str) -> GraphStoreResult<Vec<Edge>>

Source

fn vertex_graphs(&self, vertex_id: VertexId) -> BTreeSet<String>

Source

fn out_edge_ids( &self, vertex_id: VertexId, graph: &str, ) -> GraphStoreResult<BTreeSet<EdgeId>>

Source

fn in_edge_ids( &self, vertex_id: VertexId, graph: &str, ) -> GraphStoreResult<BTreeSet<EdgeId>>

Source

fn edge_ids_by_label( &self, label: &str, graph: &str, ) -> GraphStoreResult<BTreeSet<EdgeId>>

Source

fn vertex_ids_in_graph( &self, graph: &str, ) -> GraphStoreResult<BTreeSet<VertexId>>

Source

fn degree_distribution( &self, graph: &str, ) -> GraphStoreResult<BTreeMap<VertexId, u64>>

Source

fn label_degree(&self, label: &str, graph: &str) -> GraphStoreResult<f64>

Source

fn vertex_label_counts( &self, graph: &str, ) -> GraphStoreResult<BTreeMap<String, u64>>

Source

fn get_vertex(&self, vertex_id: VertexId) -> Option<&Vertex>

Source

fn get_edge(&self, edge_id: EdgeId) -> Option<&Edge>

Source

fn next_vertex_id(&mut self) -> GraphStoreResult<VertexId>

Returns and advances the next available vertex id.

Source

fn next_edge_id(&mut self) -> GraphStoreResult<EdgeId>

Returns and advances the next available edge id.

Source

fn clear(&mut self)

Source

fn vertices(&self) -> BTreeMap<VertexId, Vertex>

Snapshot every vertex in the store, keyed by id. Mirrors the vertices property on the current abstract GraphStore.

Source

fn edges(&self) -> BTreeMap<EdgeId, Edge>

Snapshot every edge in the store, keyed by id. Mirrors the edges property on the current abstract GraphStore.

Provided Methods§

Source

fn vertex_ids_by_label( &self, label: &str, graph: &str, ) -> GraphStoreResult<Vec<VertexId>>

Return only the vertex ids for a label. Stores with a label index should override this to avoid materializing full vertices.

Source

fn require_vertex_in_graph( &self, vertex_id: VertexId, graph: &str, ) -> GraphStoreResult<()>

Require an explicit query vertex to be a live member of graph. Implementations may override this with a cheaper membership lookup. Missing query input is distinct from a valid vertex with no edges and must not be reported as an empty neighborhood/path result.

Source

fn allocate_vertex_id( &mut self, _label: &str, _graph: &str, ) -> GraphStoreResult<VertexId>

Allocate a vertex id for a new entity with label inside graph. Stores that implement the Apache AGE graphid scheme override this to return (label_id << 48) | sequence; the default falls back to the store-wide counter.

Source

fn allocate_edge_id( &mut self, _label: &str, _graph: &str, ) -> GraphStoreResult<EdgeId>

Allocate an edge id for a new entity with label inside graph. See GraphStore::allocate_vertex_id.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§