Interface Summary
ConditionAtomiser An interface for classes that take a query plan (DNF vector) from a top-level NodeLogical) and break it down into conditions and phrases representing disjunctions of conditions, which can then be distributed across multiple sub-queries without destroying the sense of the original query.
ConditionDistributor An interface for classes that distribute minimal conditions (gleaned from a query) across new subqueries (SimpleQueries).
DeclarationOrderingScheme An interface for classes that take a list of variable declarations and provide a preferred ordering for them based on properties of the variables and/or their types.
QueryRewriter An interface for a class that accepts a query plan and can rewrite the contents according to a set of rewriting rules or heuristics, and also rewrite the results to match the form expected by the provider of the original query.
RewriterConstants A utility class providing constants for use across the rewriter package.

Class Summary
ConditionDistributorTemplate This class provides a template algorithm for the condition distribution process, implementing the features that should be common to any rewriting, while leaving as abstract the core distribution algorithm, which provides a solution to the constraint-satisfaction problem of distributing the remaining conditions.
DeclarableVariable A class encapsulating details about a variable which is to be declared in a suitable SimpleQuery during a query rewrite.
DefaultConditionAtomiser This implementation of ConditionAtomiser uses information internal to the NodeLogical in order to infer the points at which the constituent conditions of the query plan may be broken up.
DefaultConditionDistributor This implementation first creates skeleton subqueries without conditions, for any undeclared variables; orders them by the summed frequencies of the variables declared in each; then distributes the remaining conditions by placing them as early as possible in the sequence of subqueries.
DefaultDeclarationOrderingScheme This implementation of DeclarationOrderingScheme uses corpus statistics concerning the frequency of declared types to calculate scores for declarations.
DefaultQueryRewriter The default implementation of the QueryRewriter, implementing our first guess at a set of rewriting rules.
MinimalCondition A class encapsulating details about a condition (NodeLogical or NodeCondition) which is to be assigned to a new SimpleQuery during a query rewrite.
SimpleQueryCreator A class which creates SimpleQueries from DeclarableVariables and MinimalConditions.
SubqueryTemplate A class recording the information which will eventually be used to create a subquery Node for the new query.