Hierarchical data

The app from which these examples are drawn is largely
about reservations, which contain one or more (permitted) procedure/animal pairs. I
want to show a "picture" of the "shape" of reservation I
want, and then let an engine fill in the blanks.

For example, the most common reservation used in the tests
is one group with
one procedure/animal pair. In many many cases, I don't
actually care which procedure and which animal I use. I want
to describe it like this:

(reservation?> [- -] [- -])

... and get back a data structure something like this:

([["hank""hoof trim"] ["betty""superovulation"]] ...)

Then a database-population routine (that would look
extremely like the one that already exists to add a
reservation from json data) would take over.

Sometimes you'd want constraints. Some of those can be
expressed in abbreviated form. Suppose I want two pairs, the
first containing Hank the Horse and some appropriate procedure, the
second containing a cow. That would look like this:

(reservation?> ["hank" -] [{:species:bovine} -])

I have a prototype of this working. The big question is
whether it's a plausible stunted framework: one that's not so
universal that it's too hard to learn and too fiddly to work
with, but that doesn't require so much customization that
it's not worthwhile?

Another question: Logic programming is esoteric. The
framework aims to write most of a core.logic query for
you, but you need to provide some help. Can you use this
framework without having to be an expert in core.logic?

And: is Clojure a large enough language community? one that
builds the sort of apps that need sophisticated test data generation?