rdf_fusion_functions/lib.rs
1#![doc(test(attr(deny(warnings))))]
2#![doc(
3 html_favicon_url = "https://raw.githubusercontent.com/tobixdev/rdf-fusion/main/misc/logo/logo.png"
4)]
5#![doc(
6 html_logo_url = "https://raw.githubusercontent.com/tobixdev/rdf-fusion/main/misc/logo/logo.png"
7)]
8
9//! This crate implements the SPARQL scalar and aggregate functions for [RDF Fusion](../../rdf-fusion).
10//!
11//! While all SPARQL functions are implemented as DataFusion user-defined functions (UDFs),
12//! we also provide additional support to simplify SPARQL function implementation.
13//!
14//! # Scalar Functions
15//!
16//! To implement a scalar function, implement the [`ScalarSparqlOp`](scalar::ScalarSparqlOp) trait.
17//! Then, use the [`ScalarSparqlOpAdapter`](scalar::ScalarSparqlOpAdapter) to make the SPARQL operation
18//! compatible with DataFusion’s UDF system.
19//!
20//! # Aggregate Functions
21//!
22//! Aggregate functions currently have limited support.
23//! They only support typed value encoding and do not yet provide a SPARQL-specific trait to simplify development.
24//! We plan to provide enhanced support for aggregate functions in the future.
25//!
26//! # Dispatch
27//!
28//! Dispatch functions are a toolkit designed to help implement "iterative" versions of SPARQL functions
29//! that operate on standard Rust types.
30//! However, this functionality may be removed in the future for the following reasons:
31//! 1. It often reduces performance compared to directly working on the arrays.
32//! 2. In its current form, it is incompatible with some planned future improvements.
33
34pub mod aggregates;
35pub mod builtin;
36pub mod registry;
37pub mod scalar;