The reason is for historical reasons: objects with a $ref property aren't considered schemas, but instead they're a "JSON Reference", which used to be a separate, re-usable specification. This wasn't a good idea for several reasons, so in a removed the reference, but had to keep the same behavior: Since other properties in these objects weren't considered schemas, they're ignored.
As of recently, JSON Schema no longer has this restriction, however for compatibility, I would put $ref references inside an allOf statement:
"wholesale": {
"allOf": [ { "$ref": "#/definitions/abstract-base" } ],
"minimum": 20
},
One more note, when you add keywords like this, what you're doing is creating a subset, which sometimes isn't
quite the same thing as a subclass, depending on how you're going about it.