The subjectScheme in DITA is a suitable format for creating a taxonomy of metadata, but how should it really be used? Specifically, my question regards the following:
I'm going to do my best to address your original questions. Overall, the subjectScheme specialization is designed to create subject classifications and controlled values. It has great functionality for defining subject classifications that can be used for retrieval, as well as defining and controlling attribute values. Currently, the DITA-OT only provides functionality in the area of controlled values for attributes.
Question: "Can it be used to represent metadata elements or only metadata attributes"?
Answer: I would not say that its purpose is to "represent elements or attributes". It is designed to represent subjects and controlled values. Its design is based on keys and so makes heavy use of attributes.
Question: If you want to add a definition for an attribute value, where do you do so?
Answer: You have several options for doing this:
Question: Can you use the subjectScheme specialization with metadata elements?
Answer: Yes. Off the top of my head, here is one immediate possibility and design for an HTML-based output format:
Question: Can you publish subject schemes?
Answer: Yes, if topics are referenced for subjectdef elements using the @href attribute. While by default, the @processing-role attribute for the subjectScheme element is set to "resource-only" and the @toc attribute is set to "no," you can modify those values and they will cascade throughout the map, making it possible to generate output. Of course, this is simply what one can currently do using the DITA-OT; with custom processing implementations, the possibilities are boundless.
I think subjectScheme maps and the classification domain offer lots of exciting possibilities, including faceted and filtered browsing (for output) and faceted searching (for DITA source).
I hope that people building implementations that make use of subjectScheme and classification will share stories, demo their implementations, and so forth. I think that would make what can be done with this part of the DITA architecture clearer and more accessible for people.