Skip to main content

oxirs_arq/
lib.rs

1//! # OxiRS ARQ - SPARQL Query Engine
2//!
3//! [![Version](https://img.shields.io/badge/version-0.1.0-blue)](https://github.com/cool-japan/oxirs/releases)
4//! [![docs.rs](https://docs.rs/oxirs-arq/badge.svg)](https://docs.rs/oxirs-arq)
5//!
6//! **Status**: Production Release (v0.1.0)
7//! **Stability**: Public APIs are stable. Production-ready with comprehensive testing.
8//!
9//! Advanced SPARQL 1.1/1.2 query engine with optimization, federation support, and custom functions.
10//! Provides Jena ARQ-style SPARQL algebra with modern Rust performance.
11//!
12//! ## Features
13//!
14//! - **SPARQL 1.1 Query** - Complete SPARQL 1.1 query support
15//! - **Query Optimization** - Cost-based optimization and join reordering
16//! - **Parallel Execution** - Multi-threaded query processing
17//! - **Custom Functions** - Extensible function framework
18//! - **Federation Support** - Basic federated query capabilities
19//! - **Result Streaming** - Memory-efficient result iteration
20//!
21//! ## Quick Start
22//!
23//! ```rust
24//! use oxirs_core::query::QueryEngine;
25//! use oxirs_core::RdfStore;
26//!
27//! # fn example() -> Result<(), Box<dyn std::error::Error>> {
28//! let engine = QueryEngine::new();
29//! let store = RdfStore::new()?;
30//!
31//! let sparql = "SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 10";
32//! let results = engine.query(sparql, &store)?;
33//! # Ok(())
34//! # }
35//! ```
36//!
37//! ## See Also
38//!
39//! - [`oxirs-core`](https://docs.rs/oxirs-core) - RDF data model
40//! - [`oxirs-fuseki`](https://docs.rs/oxirs-fuseki) - SPARQL HTTP server
41
42// Core modules
43pub mod adaptive_execution;
44pub mod aggregates_ext;
45pub mod algebra;
46pub mod algebra_generation;
47pub mod analytics;
48pub mod bgp_optimizer;
49pub mod bgp_optimizer_types;
50pub mod buffer_management;
51pub mod builtin;
52pub mod builtin_fixed;
53pub mod cache;
54pub mod cache_integration;
55pub mod cardinality_estimator;
56pub mod cost_model;
57pub mod debug_utilities;
58pub mod distributed;
59pub mod executor;
60pub mod executor_pipeline;
61pub mod expression;
62pub mod expression_compiler;
63pub mod extensions;
64pub mod federation;
65pub mod gpu_accelerated_ops;
66pub mod graphql_translator;
67pub mod integrated_query_planner;
68pub mod interactive_query_builder;
69pub mod jit_compiler;
70pub mod join_algorithms;
71pub mod lateral_join;
72pub mod materialization;
73pub mod materialized_views;
74pub mod optimizer;
75pub mod parallel;
76pub mod path;
77pub mod path_extensions;
78pub mod plan_visualizer;
79pub mod procedures;
80pub mod production;
81pub mod property_functions;
82pub mod query;
83pub mod query_analysis;
84pub mod query_builder;
85pub mod query_cache_lru;
86pub mod query_plan_cache;
87pub mod query_profiler;
88pub mod query_rewriter;
89pub mod query_validator;
90pub mod result_formats;
91pub mod results;
92pub mod scirs_optimize_integration;
93pub mod service_description;
94pub mod simd_query_ops;
95pub mod statistics_collector;
96pub mod stats;
97pub mod streaming;
98pub mod string_functions_ext;
99pub mod system_load_monitor;
100pub mod term;
101pub mod triple_functions;
102pub mod update;
103pub mod update_graph_management;
104pub mod update_protocol;
105pub mod values_support;
106pub mod vector_query_optimizer;
107pub mod websocket_streaming;
108
109// Advanced modules
110pub mod adaptive_index_advisor;
111pub mod cost_model_calibration;
112pub mod query_batch_executor;
113pub mod query_execution_history;
114pub mod query_fingerprinting;
115pub mod query_hints;
116pub mod query_optimization_advisor;
117pub mod query_pagination;
118pub mod query_plan_diff;
119pub mod query_plan_export;
120pub mod query_regression_testing;
121pub mod query_result_cache;
122pub mod query_templates;
123
124// RDF-star / SPARQL-star integration
125#[cfg(test)]
126pub mod conformance;
127pub mod execution;
128pub mod rdf_star;
129#[cfg(feature = "star")]
130pub mod star_integration;
131pub mod statistics;
132
133// Adaptive query optimization and parallel evaluation (v0.2.0 Phase 2)
134pub use execution::{ParallelBgpEvaluator, PatternDependencyGraph, TripleStore};
135pub use optimizer::adaptive::{
136    AdaptiveJoinOrderOptimizer, AdaptiveStatsStore, JoinAlgorithm, JoinPlanNode, PatternTerm,
137    PlanTimer, RuntimeStats, TriplePatternInfo,
138};
139pub use optimizer::materialized_view::{
140    BindingRow, MaterializedView, MaterializedViewManager, RdfTerm, ViewManagerConfig,
141    ViewManagerStats,
142};
143// Adaptive join ordering (v0.2.0 Phase 2 - join_order)
144pub use optimizer::join_order::{
145    AdaptiveQueryPlan, CardinalityEstimate, JoinGraphStats, JoinOrderOptimizer, PatternCost,
146};
147// View registry (v0.2.0 Phase 2 - view_registry)
148pub use optimizer::view_registry::{algebra_hash, BindingSet, ViewDefinition, ViewRegistry};
149// Parallel pipeline executor (v0.2.0 Phase 2)
150pub use executor_pipeline::{BindingMap, ParallelPipelineStage, UnionParallelExecutor};
151// LRU query cache (v0.2.0 Phase 2)
152pub use query_cache_lru::{
153    CacheEntry, CacheFingerprint, CacheManagerStats, CompiledQueryCache, LruQueryCache,
154    QueryCacheManager,
155};
156
157// Advanced modules
158pub mod advanced_optimizer;
159pub mod explain;
160pub mod timeout;
161// Temporarily disabled - require scirs2-core API migration
162// TODO: Complete API migration in future release when scirs2-core API stabilizes
163// pub mod advanced_statistics;
164// pub mod ai_shape_learning;
165// pub mod distributed_consensus;
166// pub mod memory_management;
167// pub mod quantum_optimization;
168// pub mod realtime_streaming;
169// pub mod unified_optimization_framework;
170
171// Re-export commonly used types
172pub use aggregates_ext::{
173    Accumulator, AggregateFactory, AggregateMetadata, AggregateOptimization, AggregateRegistry,
174    MemoryUsage,
175};
176pub use algebra::{
177    Aggregate, Algebra, BinaryOperator, Binding, Expression, GroupCondition, Iri, Literal,
178    OrderCondition, Solution, Term, TriplePattern, UnaryOperator, Variable,
179};
180pub use debug_utilities::{
181    DebugBreakpoint, DebugConfig, DebugReport, ExecutionState as DebugExecutionState, JoinType,
182    Operation, QueryDebugger, RewriteStep, TraceEntry, VariableBinding, VisualizationFormat,
183};
184pub use executor::{Dataset, ExecutionContext, InMemoryDataset, ParallelConfig, QueryExecutor};
185pub use graphql_translator::{
186    GraphQLDirective, GraphQLDocument, GraphQLField, GraphQLFragment, GraphQLOperation,
187    GraphQLOperationType, GraphQLSelection, GraphQLTranslator, GraphQLValue,
188    GraphQLVariableDefinition, SchemaMapping, TranslationError, TranslationResult,
189    TranslationStats, TranslatorConfig,
190};
191pub use jit_compiler::{
192    CompiledQuery, CompilerStats, ExecutionPlan, ExecutionStats, FilterType, JitCompilerConfig,
193    JitJoinStrategy, PatternType, PlanOperation, QueryJitCompiler, QueryMetadata, Specialization,
194    SpecializationType,
195};
196pub use path_extensions::{
197    BidirectionalPathSearch, CacheStats, CachedPathEvaluator, CostBasedPathOptimizer, PathAnalyzer,
198    PathCache, PathComplexity, PathEvaluationStrategy, PathOptimizationConfig,
199    PathOptimizationHint, PathStatistics, ReachabilityIndex, StrategyCostEstimate,
200};
201pub use procedures::{
202    Procedure, ProcedureArgs, ProcedureContext, ProcedureFactory, ProcedureRegistry,
203    ProcedureResult,
204};
205pub use property_functions::{
206    PropFuncArg, PropertyFunction, PropertyFunctionContext, PropertyFunctionRegistry,
207    PropertyFunctionResult,
208};
209pub use query_builder::{AskBuilder, ConstructBuilder, DescribeBuilder, SelectBuilder};
210pub use query_plan_cache::{
211    CacheStats as QueryPlanCacheStats, CachedPlan, CachingConfig, QueryPlanCache, QuerySignature,
212    StatisticsSnapshot,
213};
214pub use query_profiler::{AverageStats, QueryPhase, QueryProfiler, QueryStats};
215pub use query_validator::{
216    QueryValidator, ValidationConfig, ValidationResult, ValidationStatistics, ValidationWarning,
217    ValidationWarningType,
218};
219pub use result_formats::{
220    BinaryResultSerializer, CustomFormatSerializer, FormatConverter, FormatRegistry,
221    StreamingResultIterator, XmlResultSerializer,
222};
223pub use results::{QueryResult, ResultFormat, ResultSerializer};
224pub use scirs_optimize_integration::{
225    OptimizationResult, PerformanceAnalysis, QueryInfo, QueryOptimizationConfig,
226    SciRS2QueryOptimizer,
227};
228pub use service_description::{
229    create_default_service_description, AggregateInfo, DatasetDescription, ExtensionFunction,
230    Feature, LanguageExtension, NamedGraphDescription, ParameterInfo, ProcedureInfo,
231    PropertyFunctionInfo, ServiceDescription, ServiceDescriptionBuilder,
232    ServiceDescriptionRegistry, ServiceLimitations,
233};
234pub use string_functions_ext::{
235    StrAfterFunction, StrBeforeFunction, StrDtFunction, StrLangDirFunction, StrLangFunction,
236};
237pub use triple_functions::{
238    IsTripleFunction, ObjectFunction, PredicateFunction, SubjectFunction, TripleFunction,
239};
240pub use values_support::{
241    IndexedValues, JoinStrategy, OptimizedValues, ValuesBuilder, ValuesClause,
242    ValuesExecutionStrategy, ValuesExecutor, ValuesJoinOptimizer, ValuesOptimizer,
243    ValuesStatistics,
244};
245// Temporarily disabled - require scirs2-core beta.4 APIs
246/*
247pub use memory_management::{
248    MemoryConfig, MemoryManagedContext, MemoryPerformanceReport, MemoryStats, MemoryLeakReport,
249    ProcessedSolution, MemoryPressureStrategy,
250};
251pub use quantum_optimization::{
252    QuantumOptimizationConfig, QuantumJoinOptimizer, QuantumCardinalityEstimator,
253    HybridQuantumOptimizer, QuantumOptimizationStats, HybridOptimizationStats,
254    QuantumOptimizationStrategy, QuantumQueryState,
255};
256pub use realtime_streaming::{
257    StreamingSparqlProcessor, StreamingConfig, StreamingTriple, WindowedResult,
258    SignalPipelineConfig, StreamingStatistics, DetectedPattern, AnomalyIndicator,
259    PatternType, AnomalyType, WatermarkStrategy,
260};
261pub use ai_shape_learning::{
262    AIShapeLearner, ShapeLearningConfig, LearnedShape, PropertyConstraint,
263    ValidationResult, ValidationViolation, ShapeLearningStatistics,
264    RdfDataBatch, ValidationStrategy, PatternConstraint,
265};
266pub use distributed_consensus::{
267    DistributedConsensusCoordinator, ConsensusConfig, ConsensusValue, ConsensusResult,
268    ConsensusState, ConsensusStatistics, ConsensusAlgorithm, ByzantineConfig,
269};
270*/
271
272pub use lateral_join::{
273    LateralCostEstimate, LateralJoin, LateralJoinConfig, LateralJoinError, LateralJoinExecutor,
274    LateralJoinStats, LateralOptimizer, LateralOptimizerConfig, LateralParser, LateralStrategy,
275    LateralSubquery, LateralValidationResult, LateralValidator, LateralValue, OrderSpec,
276    SolutionMapping,
277};
278
279pub use adaptive_index_advisor::{
280    AccessPattern, AdvisorConfig, AdvisorStatistics, AnalysisSummary, IndexAdvisor,
281    IndexAnalysisReport, IndexConfiguration, IndexRecommendation, IndexType, IndexUsageStats,
282    PatternComponent, QueryPattern, RecommendationPriority,
283};
284pub use cost_model_calibration::{
285    CalibrationConfig, CalibrationExport, CalibrationReport, CalibratorStatistics,
286    CostModelCalibrator, CostModelParameters, ExecutionSample, OperationCalibrationExport,
287    OperationCalibrationStats, OperationSummary, OperationType,
288};
289pub use federation::{
290    EndpointCapabilities, EndpointCriteria, EndpointDiscovery, EndpointHealth, FederatedSubquery,
291    FederationConfig, FederationExecutor, FederationStats, LoadBalancingStrategy,
292};
293pub use gpu_accelerated_ops::{DeviceSelection, GpuConfig, GpuOperationStats, GpuQueryEngine};
294pub use interactive_query_builder::{
295    helpers as query_helpers, InteractiveQueryBuilder, PatternBuilder, QueryType,
296};
297pub use materialization::{
298    MaterializationAnalysis, MaterializationConfig, MaterializationSelector, MaterializationStats,
299    MaterializationStrategy, MaterializedResults, ResultIterator, VariableStats,
300};
301pub use production::{
302    // Core production types
303    AuditEventType,
304    // Beta.2 enhancements
305    BaselineTrackerConfig,
306    CostEstimatorConfig,
307    CostEstimatorStatistics,
308    CostRecommendation,
309    ErrorSeverity,
310    GlobalStatistics,
311    HealthStatus,
312    MemoryStats,
313    PerformanceBaselineTracker,
314    PerformanceTrend,
315    PrioritizedQuery,
316    PrioritySchedulerConfig,
317    PrioritySchedulerStats,
318    QueryAuditEvent,
319    QueryAuditTrail,
320    QueryCancellationToken,
321    QueryCircuitBreaker,
322    QueryCostEstimate,
323    QueryCostEstimator,
324    QueryEngineHealth,
325    QueryErrorContext,
326    QueryFeatures,
327    QueryMemoryTracker,
328    QueryPriority,
329    QueryPriorityScheduler,
330    QueryRateLimiter,
331    QueryResourceQuota,
332    QuerySession,
333    QuerySessionManager,
334    QueryStatistics,
335    QueryTimeoutManager,
336    QueryTimeoutState,
337    RegressionReport,
338    RegressionSeverity,
339    SparqlPerformanceMonitor,
340    SparqlProductionError,
341    TimeoutAction,
342    TimeoutCheckResult,
343};
344pub use query_execution_history::{
345    ExecutionMetrics, ExecutionRecord, ExecutionStatus, FormDistribution, HistoryAnalysis,
346    HistoryConfig, HistoryStatistics, PeriodStatistics, QueryExecutionHistory, QueryFormType,
347    QueryGroupStats, SlowQueryEntry,
348};
349pub use query_fingerprinting::{
350    FingerprintConfig, FingerprintingStatistics, HashAlgorithm, ParameterSlot, ParameterType,
351    QueryFeatures as FingerprintQueryFeatures, QueryFingerprint, QueryFingerprinter,
352    QueryForm as FingerprintQueryForm,
353};
354pub use query_hints::{
355    CacheHint, CardinalityHint, FilterHint, FilterPushdownDirective, HintApplicationResult,
356    HintParser, HintParserStats, HintValidationWarning, HintValidator, IndexDirective, IndexHint,
357    JoinAlgorithmHint, JoinBuildSide, JoinHint, JoinOrderHint, JoinOrderStrategy,
358    MaterializationHint, MaterializationStrategy as HintMaterializationStrategy, MemoryHint,
359    ParallelismHint, QueryHints, QueryHintsBuilder, WarningSeverity,
360};
361pub use query_plan_export::{
362    CostEstimate, ExecutionStats as PlanExecutionStats, ExportConfig, ExportError, ExportFormat,
363    ExporterStats, OperatorType, PlanNode, QueryPlanExporter,
364};
365pub use query_regression_testing::{
366    ExecutionResult as RegressionExecutionResult, ExecutionStatistics as RegressionExecutionStats,
367    GoldenQuery, QueryRegressionAnalysis, RegressionConfig,
368    RegressionReport as QueryRegressionReport, RegressionStatus, RegressionTestSuite,
369    RegressionTestSuiteBuilder, ReportComparison, ReportSummary, SuiteExport, SuiteStatistics,
370};
371pub use query_result_cache::{
372    CacheConfig as ResultCacheConfig, CacheStatistics as ResultCacheStatistics, QueryResultCache,
373    QueryResultCacheBuilder,
374};
375// Cache invalidation system (v0.2.0 Phase 1.1)
376pub use cache::{
377    CacheCoordinator, CacheLevel, DependencyGraph, InvalidationConfig, InvalidationEngine,
378    InvalidationStatistics, InvalidationStrategy, RdfUpdateListener,
379};
380pub use simd_query_ops::{
381    ComparisonOp, JoinStats, SimdAggregations, SimdConfig, SimdFilterEvaluator, SimdHashJoin,
382    SimdStringOps, SimdTripleMatcher, TripleCandidate,
383};
384pub use websocket_streaming::{
385    ConnectionStats, ManagerStats, WebSocketConfig, WebSocketManager, WebSocketMessage,
386    WebSocketSession,
387};
388
389// RDF-star / SPARQL-star exports (when feature is enabled)
390#[cfg(feature = "star")]
391pub use star_integration::{
392    pattern_matching, sparql_star_functions, star_statistics::SparqlStarStatistics,
393    SparqlStarExecutor,
394};
395
396// Common Result type for the crate
397pub use explain::{
398    ExplainFormat, IndexType as ExplainIndexType, PlanNode as ExplainPlanNode, QueryExplainer,
399    QueryExplainerBuilder, QueryPlan as QueryExplainPlan,
400};
401pub use rdf_star::{
402    bind_pattern, instantiate_quoted_triple, sparql_star_builtins, AnnotatedTriple, Annotation,
403    QuotedTriple, RdfStarStore, StarBinding, StarObject, StarOperator, StarPattern, StarPredicate,
404    StarSubject,
405};
406
407pub type Result<T> = anyhow::Result<T>;
408
409// Graph analytics exports (v0.3.0)
410pub use analytics::{
411    is_dag, is_reachable, BetweennessCentrality, ConnectedComponents, DegreeCentrality, EdgeWeight,
412    GraphStats, GraphStatsSummary, LouvainCommunities, NodeId, PageRank, RdfGraphAdapter,
413    ShortestPaths,
414};
415
416// SPARQL 1.1 UPDATE Graph Management Operations (v0.3.0)
417pub use update_graph_management::{
418    GraphManagementDataset, GraphManagementExecutor, GraphManagementOp, GraphManagementResult,
419    GraphManagementTarget, Triple as GraphManagementTriple,
420};
421
422// Runtime statistics collector (v0.2.0 enhancement)
423pub use stats::{PatternStats, QueryExecutionStats, RuntimeStatsCollector};
424
425// SPARQL 1.1 Update Protocol — standalone parser and in-memory executor (v0.2.0 enhancement)
426pub use update_protocol::{
427    ArqError as UpdateArqError, ClearType, DropType, ParseError as UpdateParseError,
428    PatternTerm as UpdatePatternTerm, SparqlUpdate, SparqlUpdateParser, Triple as UpdateTriple,
429    TriplePattern as UpdateTriplePattern, UpdateExecutor as SparqlUpdateExecutor,
430    UpdateResult as SparqlUpdateResult,
431};
432
433// Optimizer passes (v0.2.0 enhancement)
434pub use optimizer::{
435    ConstantFoldingPass, OptimizationPass, OptimizationPipeline, PipelineResult,
436    RedundantJoinEliminationPass, UnusedVariableEliminationPass,
437};
438
439// Subgraph isomorphism / pattern matching (v1.1.0 round 5)
440pub mod subgraph_matcher;
441
442// SPARQL 1.1 aggregate function executor (v1.1.0 round 6)
443pub mod aggregate_executor;
444
445// SPARQL-style window functions: ROW_NUMBER, RANK, DENSE_RANK, NTILE, LAG, LEAD (v1.1.0 round 7)
446pub mod window_function;
447
448// SPARQL 1.1 VALUES clause (inline data) (v1.1.0 round 9)
449pub mod values_clause;
450
451// SPARQL 1.1 SERVICE clause for federated queries (v1.1.0 round 10)
452pub mod service_clause;
453
454// SPARQL subquery (SELECT within SELECT) support (v1.1.0 round 11)
455pub mod subquery;
456
457// Cost-based join reordering for SPARQL query optimization (v1.1.0 round 12)
458pub mod join_optimizer;
459
460// SPARQL 1.1 expression/filter evaluator (v1.1.0 round 13)
461pub mod expression_evaluator;
462
463// SPARQL 1.1 GROUP BY clause evaluator (v1.1.0 round 11)
464pub mod group_by_evaluator;
465
466// SPARQL 1.1 OPTIONAL clause evaluator (left outer join) (v1.1.0 round 12)
467pub mod optional_evaluator;
468
469// SPARQL CONSTRUCT query builder — template instantiation, blank nodes, deduplication (v1.1.0 round 13)
470pub mod construct_builder;
471
472// SPARQL MINUS pattern evaluation (set-difference algebra) (v1.1.0 round 14)
473pub mod minus_evaluator;
474
475// SPARQL EXISTS and NOT EXISTS graph pattern evaluation (v1.1.0 round 15)
476pub mod exists_evaluator;
477
478// SPARQL 1.1 property path expression parser and evaluator (v1.1.0 round 16)
479pub mod path_expression;