I've been thinking about this a bit, and I think the reason I didn't find it weird to name it `relation` is that with axiom I got used to objects which proxy to other objects of the same type. It's natural to have a single base relation, and then wrap it with other relation subtypes that apply different operations on it until you get the expected results.

Even the way mapping works could be described as an extension plus projection. The main difference is that you can't insert/update/delete from an extension; which a `ROM::Relation` allows.

The architecture we see here in is just an extension of the "nested enumerable" approach axiom uses. It's very powerful, but I think some of that power comes from the fact that any relation-like object can be wrapped in another relation subtype.