To my knowledge, there is no commonly agreed taxonomy of work types.
Setting up any such form of classification would be a huge undertaking, and subject to changes …
I would take a different approach, less structured, but which I find more practical.
I would use tagging, to flag works with attributes useful to select them.
For example, you could have “sonata”, “piano” tags for a piano sonata, “sonata”, “violin” for violin sonata, etc …