We develop an extensible description logic for stating the content of optimalitytheoretic constraints in phonology, and specify a class of structures for interpreting it. The aim is a transparent formalisation of OT. We show how to state a wide range of constraints, including markedness, input–output faithfulness and base–reduplicant faithfulness. However, output–output correspondence and ‘intercandidate’ sympathy are revealed to be problematic: it is unclear that any reasonable class of structures can reconstruct their proponents’ intentions. But our contribution is positive. Proponents of both output–output correspondence and sympathy have offered alternatives that fit into the general OT picture. We show how to state these in a reasonable extension of our formalism. The problematic constraint types were developed to deal with opaque phenomena. We hope to shed new light on the debate about how to handle opacity, by subjecting some common responses to it within OT to critical investigation.