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
§Example
use lance_graph::{CypherQuery, GraphConfig, Result};
let config = GraphConfig::builder()
.with_node_label("Person", "person_id")
.with_relationship("KNOWS", "src_person_id", "dst_person_id")
.build()?;
let query = CypherQuery::new("MATCH (p:Person) WHERE p.age > 30 RETURN p.name")?
.with_config(config);
// Execute against a dataset (would need actual dataset integration)
// let results = query.execute(&dataset).await?;Re-exports§
pub use config::GraphConfig;pub use config::NodeMapping;pub use config::RelationshipMapping;pub use error::GraphError;pub use error::Result;pub use query::CypherQuery;pub use query::ExecutionStrategy;
Modules§
- ast
- Abstract Syntax Tree for Cypher queries
- config
- Graph configuration for mapping Lance datasets to property graphs
- datafusion_
planner - DataFusion-based physical planner for graph queries
- error
- Error types for the Lance graph query engine
- lance_
native_ planner - Lance Native physical planner (placeholder)
- logical_
plan - Logical planning for graph queries
- parser
- Cypher query parser
- query
- High-level Cypher query interface for Lance datasets
- query_
processor - Unified query processor implementing the full pipeline
- semantic
- Semantic analysis for graph queries
- simple_
executor - Simple single-table query executor with limited Cypher feature support
- source_
catalog - Context-free source catalog for DataFusion logical planning.
- sql_
converter - SQL converter for logical plans
Constants§
- MAX_
VARIABLE_ LENGTH_ HOPS - Maximum allowed hops for variable-length relationship expansion (e.g., *1..N)