Skip to content

Rust library and Python bindings for parsing the OGC CQL2 filter language

License

Notifications You must be signed in to change notification settings

developmentseed/cql2-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

697bbb6 · Mar 12, 2025
Feb 17, 2025
Feb 17, 2025
Mar 12, 2025
Mar 12, 2025
Feb 20, 2025
Mar 12, 2025
Feb 27, 2025
Jan 27, 2025
Feb 18, 2025
Oct 10, 2024
Mar 12, 2025
Oct 8, 2024
Mar 12, 2025
Mar 12, 2025
Oct 8, 2024
Dec 9, 2024
Nov 14, 2024
Feb 20, 2025
Mar 12, 2025
Dec 9, 2024
Oct 1, 2024
Dec 9, 2024

Repository files navigation

cql2-rs

CI

Parse, validate, and convert Common Query Language (CQL2) text and JSON.

Usage

API

[dependencies]
cql = "0.3"

Then:

use cql2::Expr;

let expr: Expr = "landsat:scene_id = 'LC82030282019133LGN00'".parse().unwrap();
assert!(expr.is_valid());
println!("{}", expr.to_json().unwrap());

See the documentation for more.

CLI

See the cql2-cli README for details.

Responses

Responses may not match the input.

cql2-text differences

  • All identifiers in output are double quoted
  • The position of "NOT" keywords is standardized to be before the expression (ie "... NOT LIKE ..." will become "NOT ... LIKE ..."
  • The negative operator on anything besides a literal number becomes "* -1"
  • Parentheses are added around all expressions

Development

Get uv and Rust. Then:

git clone git@github.com:developmentseed/cql2-rs.git
cd cql2-rs
uv sync
scripts/test

To lint all files:

scripts/lint

To serve the docs locally:

uv run mkdocs serve  # http://127.0.0.1:8000/cql2-rs/

See CONTRIBUTING.md for more information about contributing to this project.

License

cql2-rs is licensed under the MIT license. See LICENSE for details.