I'm finding that a lot of developers I talk to are simply overwhelmed
by MODS, and the schema is so flexible/loose that it allows for a lot
of mistakes for non-experts working with it.  I also found that in
writing my citation formatting code I needed to rely on a certain rigor
that MODS itself does not enforce.

So, I've started to write a "MODS Strict" schema that is a much more
tightly controlled subset of MODS.

So, not surprisingly, I'm writing it (from scratch, since I have to) in
RELAX NG, and basing a lot of the validation logic on a notion of
structural class that is tied into the genre system.  The reason why I
am doing this is that it allows me to ensure that the user enters the
correct associated content.

Here's what the categorization looks like, and I'd love if people could
offer feedback on my classification, which is no doubt off in places.
I think I may need to create another -- generic -- category of genres
that I move some of them into.

   ## adapt MARC genre list and categorize them into classes
   div {
     ## Not all genres can be grouped into a single class of record
     ## so here we have a more generic category.
     Genres-part = "short story" | "poetry" | "essay"
     Genres-part-inSerial =
       "abstract or summary"
       | "article"
       | "legal article"
       | "legal case"
       | "legislation"
       | "patent"
       | "reporting"
       | "review"
     Genres-part-inMonograph = "chapter" | "song" | "hearing"
     Genres-serial =
       "academic journal"
       | "conference publication"
       | "law report or digest"
       | "magazine"
       | "newspaper"
     Genres-monograph =
       | "art original"
       | "art reproduction"
       | "atlas"
       | "book"
       | "chart"
       | "database"
       | "dictionary"
       | "dissertation"
       | "graphic"
       | "handbook"
       | "interview"
       | "loose-leaf"
       | "map"
       | "memoir"
       | "microscope slide"
       | "motion picture"
       | "novel "
       | "numeric data"
       | "personal communication"
       | "remote sensing image"
       | "report"
       | "slide"
       | "speech"
       | "statistics"
       | "treaty"
       | "technical drawing"
       | "technical report"
       | "videorecording"
       | "web site"

Note that while I've used MARC terms, I've also added to them (the MARC
list needs to include the stuff I added -- magazine, academic journal,
hearing, personal communication, dissertation) or modified them (the
awkward "legal case and case notes" became just "legal case").