Qwiratry

Declarative query and data-walking architecture for Raku, with transformers, molds, walkers, and I/O pipelines.

Qwiratry

A Raku architecture for declarative queries and flexible data walking, suitable for trees, tables, relational structures, logic-programming environments, and anything reasonably structured and traversable.

Overview

Qwiratry provides a general-purpose query execution pipeline that separates what to query from how to walk the data. This design enables the same query to work across different data models without forcing a single semantic interpretation.

The framework is built around five core architectural groups:

  • Query Group: Declarative, immutable query specifications (what to find)

  • Walker Group: Traversal strategies and execution plans (how to walk)

  • Strategy Group: Element-level behavior and reusable processing logic

  • Transformer Group: Declarative data transformations using molds

  • Per-Traversal Group: Mutable state management (Context) and incremental result streaming (QueryIterator)

Key Features

  • Separation of Concerns: Queries describe intent; Walkers interpret and execute; QueryIterators yield results

  • Reusability: Walkers can produce multiple iterators; queries can be reused and optimized

  • Composability: Supports composite walker handovers for multi-domain queries

  • Declarative Transformations: XSLT-like mold system for structured data manipulation

  • Flexible Execution: Supports backtracking, multi-phase execution, and optimization planning

  • Domain Flexibility: Works with trees (ASTs, XML, JSON), tables, logic programming, and hybrid systems

Installation

zef install Qwiratry

Or install from source:

git clone <repository-url>
cd raku-Qwiratry
zef install .

Either way, you'll need to set RAKUDO_RAKUAST=1 to run it

Plugin setup

After installing Qwiratry, run the interactive setup helper to discover and install the plugins/addons which will suit you best (eg. JSON, HTTP, and the like).

qwiratry-setup
# or: qwiratry-setup --dry-run

Quick Start

#!/usr/bin/env raku

use	lib 'lib';

use     Qwiratry::Mold::Slang;
use	Qwiratry;

my %data-structure = type => 'element', value => 42;

# Declare a transformer with molds.
transformer MyTransform {
	# Match and transform specific elements
	mold when { .<type> eq 'element' } do {
		%( |$_, transformed => True )
	}

	# Pass through by default
	mold do {
		$_
	}
}

# Apply the transformer to the tree
say MyTransform(%data-structure);

Architecture

Qwiratry's architecture enables:

  • Multiple traversal strategies for the same query

  • Query optimization before execution

  • Streaming results via lazy iterators

  • Composite execution across multiple domains

  • Pluggable strategies for element processing

Documentation

  • Specification.md - Complete architecture specification

  • Operators.md - Query operator reference

  • t/spec/ - Functional tests keyed to those specs

  • t/examples/ - Example code and usage patterns

Requirements

  • Raku 6.e or later

  • Slangify module

  • Implementation::Loader v0.0.7 or later

  • Set RAKUDO_RAKUAST=1 in your environment

License

Licensed under the same terms as Raku itself.

Author

Tim Nelson (wayland at wayland dot id dot au)

Qwiratry v0.0.9

Declarative query and data-walking architecture for Raku, with transformers, molds, walkers, and I/O pipelines.

Authors

  • Tim Nelson

License

Dependencies

SlangifyImplementation::Loader:ver<0.0.9+>Glob::Grammar

Test Dependencies

Provides

  • Qwiratry
  • Qwiratry::Context
  • Qwiratry::Format
  • Qwiratry::Format::Base
  • Qwiratry::Format::CSVdemo
  • Qwiratry::Format::JSONdemo
  • Qwiratry::Location
  • Qwiratry::Location::Base
  • Qwiratry::Location::File
  • Qwiratry::Mold
  • Qwiratry::Mold::Compiler
  • Qwiratry::Mold::Registry
  • Qwiratry::Mold::Slang
  • Qwiratry::Operator::Capability
  • Qwiratry::Operator::IO
  • Qwiratry::Operator::MapReduce
  • Qwiratry::Operator::Navigation
  • Qwiratry::Operator::Set
  • Qwiratry::Query::Evaluator::Eager
  • Qwiratry::Query::Evaluator::Filter
  • Qwiratry::Query::Evaluator::Join
  • Qwiratry::Query::Evaluator::Lazy
  • Qwiratry::Query::Evaluator::MapReduce
  • Qwiratry::Query::Evaluator::Navigation
  • Qwiratry::Query::Evaluator::Relational
  • Qwiratry::Query::Evaluator::Row
  • Qwiratry::Query::Evaluator::Set
  • Qwiratry::Query::Evaluator::Union
  • Qwiratry::Query::Extract
  • Qwiratry::Query::NamedJoins
  • Qwiratry::Query::RelationCommon
  • Qwiratry::Query::Runtime
  • Qwiratry::Query::Selector
  • Qwiratry::Query::Slang
  • Qwiratry::Query::Specificity
  • Qwiratry::Query::Topic
  • Qwiratry::QueryIterator
  • Qwiratry::QueryMatch
  • Qwiratry::Setup
  • Qwiratry::Strategy
  • Qwiratry::Strategy::ControlSignal
  • Qwiratry::Strategy::FinishResult
  • Qwiratry::Strategy::RewriteSpec
  • Qwiratry::Strategy::Traversal
  • Qwiratry::Suggest
  • Qwiratry::Table
  • Qwiratry::Table::Schema
  • Qwiratry::Transformer
  • Qwiratry::Transformer::Copy
  • Qwiratry::Transformer::TreeRewrite
  • Qwiratry::Tree::Navigator
  • Qwiratry::Tree::Navigator::Base
  • Qwiratry::Tree::Navigator::Filesystem
  • Qwiratry::Tree::Navigator::Match
  • Qwiratry::Tree::Navigator::RakuAST
  • Qwiratry::Tree::Replace
  • Qwiratry::Walker
  • Qwiratry::Walker::Capabilities
  • Qwiratry::Walker::Factory
  • Qwiratry::Walker::Implementation::Table
  • Qwiratry::Walker::Implementation::Tree
  • Qwiratry::Walker::Master
  • Qwiratry::Walker::Providing
  • X::Qwiratry

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.