Для соответствия целям расширяемости проекта Sturburst было решено, что система правил является подходящей платформой, позволяющей легко добавлять к системе правила преобразований с последующим их переупорядочением и обновлением. Для наших целей не подходили существующие процессоры правил, и поэтому мы разработали собственную систему. Как будет ясно из дальнейшего обсуждения, нам требовались многочисленные возможности, недоступные в типичных системах правил (таких как OPS5 [BFKM85]). Процессор правил Query Rewrite проекта Sturburst обладает следующими особенностями:
Средство работы с контекстом: Структура данных, передаваемая каждому вызову системы правил, включает указатель на информацию пользователя, которая, в свою очередь, передается в сами функции правил, где ее можно читать и модифицировать. Для наших целей в Query Rewrite мы используем этот указатель для сохранения текущего «контекста» в QGM (блока, квантификатора или предиката), и наши правила перезаписи пишутся с использованием ссылки на этот контекст. Это позволяет обеспечивать обсуждавшуются ранее локальность правил. К набору правил добавляются специальные правила для «продвижения» контекста, когда мы исчерпываем возможности модификации текущего контекста. Так что эти правила «обходят» граф QGM.
Классы правил и расширяемое разрешение конфликтов: Мы разделяем наш набор правил на классы, каждый из которых можно считать отдельным набором правил.