This maintains a proper separation of concerns, where the domain is totally
unaware of the underlying storage engine. The same criteria can be used to
generate a SQL query or to filter an in-memory collection, either with hoa/ruler
or rulerz.