Sounds great. I am really interested in the group querying.
About naming, toScope: is a bit too similar to atScope: and I think the user will have a hard time understanding the difference. Last night I thought a bit about the names spawned by a remark of why the methods are called like atClassScope. Indeed, if we think about it, atClassScope is more of an implementation issue. The user wants to know what he gets. So, one possibility would be to call the same thing #classes or #justClasses or #onlyClasses or #collectClasses. Like this:
m queryAllOutgoingAssociations opposite classes
m queryAllOutgoingAssociations opposite justClasses
If we revamp the whole thing, we can also take the opportunity to rethink the API. What do you think?