If we have a registry where `pizza_basal` refers to `basal` and a query for `basal` means we also need to return `pizza_basal` events, then the querying proposition becomes a lot more difficult.

Specifically, we must first look up all potential children of Basal and do a large OR query in order to actually respond to the query.  If we want something that resembles a "hierarchical" structure to things, I would be more in favor of `subType` becoming an array of tags, where each tag represents a set of fields that exist.  Then querying can be done a lot easier and I don't believe we lose any expressiveness.

I'm also not quite sure what the benefit of arbitrary subclassing of "first-class" types is.  I think I'd rather the first-class types be a strongly curated set of things and have an event (i.e. `grabbag`) that is reserved for arbitrary user-generated schemas.