Skip to main content

Crate lance_csr

Crate lance_csr 

Source
Expand description

Lance Graph Query Engine

This crate provides graph query capabilities for Lance datasets using Cypher syntax. It interprets Lance datasets as property graphs and translates Cypher queries into DataFusion SQL queries for execution.

§Features

  • Cypher query parsing and AST representation
  • Graph pattern matching on columnar data
  • Property graph interpretation of Lance datasets
  • Translation to optimized SQL via DataFusion
  • Support for nodes, relationships, and properties
  • A CSR (compressed sparse row) adjacency index for multi-hop traversal

§Example

CypherEngine registers datasets once, optionally builds the CSR, and serves many queries. See engine for the full API and examples/embedded_query.rs for a runnable program.

use std::collections::HashMap;
use lance_csr::{CypherEngine, EngineSource, GraphConfig, Result};

let config = GraphConfig::builder()
    .node_table("Person", "person_id")
    .rel_table("KNOWS", "Person", "Person", "src_person_id", "dst_person_id")
    .build()?;
let sources = HashMap::from([
    ("Person".to_string(), EngineSource::open_lance("person.lance", None, HashMap::new()).await?),
    ("KNOWS".to_string(), EngineSource::open_lance("knows.lance", None, HashMap::new()).await?),
]);
let engine = CypherEngine::new(config, sources, true).await?;
let batch = engine
    .execute("MATCH (p:Person) WHERE p.age > 30 RETURN p.name", HashMap::new())
    .await?;

Re-exports§

pub use config::GraphConfig;
pub use config::NodeMapping;
pub use config::RelationshipMapping;
pub use csr_index::CsrIndex;
pub use csr_index::CsrIndexBuilder;
pub use engine::CypherEngine;
pub use engine::EngineSource;
pub use error::GraphError;
pub use error::Result;
pub use lance_vector_search::VectorSearch;
pub use query::CypherQuery;
pub use query::ExecutionStrategy;
pub use query::SqlDialect;
pub use sql_query::SqlQuery;

Modules§

ast
Abstract Syntax Tree for Cypher queries
case_insensitive
Case-insensitive string utilities
config
Graph configuration for mapping Lance datasets to property graphs
csr_expand
Experimental CSR-backed single-hop expansion.
csr_index
CSR (Compressed Sparse Row) adjacency index for native graph traversal
datafusion_planner
DataFusion-based physical planner for graph queries
engine
A Cypher engine that registers its datasets once and serves many queries.
error
Error types for the Lance graph query engine
key_statistics
Distinct-count statistics for join-key columns, so DataFusion sizes joins correctly.
lance_vector_search
Lance Vector Search API for lance-csr
logical_plan
Logical planning for graph queries
parameter_substitution
parser
Cypher query parser
query
High-level Cypher query interface for Lance datasets
semantic
Semantic analysis for graph queries
shortest_path
shortestPath / allShortestPaths as a breadth-first search over the adjacency.
spark_dialect
Spark SQL dialect for the DataFusion unparser.
sql_query
Direct SQL query interface for Lance datasets

Structs§

DirNamespace
A namespace that resolves table names relative to a base directory or URI.
InMemoryCatalog
A simple in-memory catalog useful for tests and bootstrap wiring.
SimpleTableSource
A trivial logical table source with a fixed schema.

Constants§

MAX_VARIABLE_LENGTH_HOPS
Maximum allowed hops for variable-length relationship expansion (e.g., *1..N)

Traits§

GraphSourceCatalog
A minimal catalog to resolve node labels and relationship types to logical table sources.