(this stems from a #drupal-dojo discussion)
Meta-data will be stored as resource or file ID, key name ("Author" etc.), and value. There will be a second table that lists what resource types can have each key (YouTube video ID applies to YouTube videos but not private image files).
On install, a resource type module should add allowed keys to the database. The idea is that these will be customizable (through an interface eventually), but we still want to have some fields that are standard for other modules to reference as needed.
Some kind of resource type hierarchy is desirable, so that a YouTube video is an Image + some extra metadata and a Flickr photo is an Image + some extra metadata.
Interface and workflow for adding metadata to a resource:
* Meta-data form will contain a type select (Image, Video, etc.), and fields to enter the title, genre, etc. metadata associated with the type
* Tags, genres, etc. seem to make more sense as autocomplete, selects (respectively), rather than having all metadata be text fields
* Choose a file for upload. While it is transferring, we make an educated guess about file type based on extension. Pre-select the type (Image, etc.) from the metadata select.
* If our initial guess is wrong, user selects a different type. If we don't have enough information to make a guess, user still selects a type. No real penalty for being wrong.