Today the OASIS OpenDocument Technical Committee approved enhanced metadata support [pdf] for inclusion in ODF 1.2.
What do we mean by enhanced metadata support? We mean that you can:
- describe your document the way you want to describe it; no longer are you limited to a pre-selected list of properties
- describe different parts within your document: images, tables, paragraphs, and so forth
- tag pieces of document content as metadata; you can say this heading is a title, this fragment is the name of some person, and so forth
- create dynamic content fields based on this flexible metadata system
So how did we do this? What technology did we use?
At the heart the new metadata system is a standard model: RDF. We allow encoding of that model in two different ways; first, as RDF/XML graphs in the file package. Here developers can include custom metadata in the file package. They simply register their files in the new RDF-based metadata manifest, and they make it available for integration with the document.
Second, we also borrow some concepts from RDFa for in-content tagging. Elias Torres from IBM helped us greatly with figuring out how to elegantly knit RDF into ODF content, showing us along the way a very cool demo his team had put together in which they reworked OpenOffice Calc to store RDF natively. In this case every cell in the spreadsheet became layered with additional metadata, and the content could be mashed up dynamically with a Google map. The in-content metadata attributes will allow this sort of use case on top of existing spreadsheets, word-processing documents, and presentations.
RDF, then, provides a simple, extensible, and mixable data model. Using this model means not just that we provide extensibility within a particular domain (say bibliographic citations), but the ability to seamlessly blend and merge information across domains (say contact data and citations, image metadata and rights, etc., etc.).
All that remains if for developers to exploit the possibilities we’ve put in place. It will be interesting to see who implements it first. OpenOffice? KOffice? Google?