If a wiki is to be used for more traditional, rigorous organization than CategoriesAndTopics on BackLinks, pages must support the addition of meta-data. However, adding many extra fields to the edit page makes it hard to keep everything AboveTheFold, and complicates the creation of a simple stub. It also limits the range of possible meta-data, or forces complex forms with variable numbers of fields. It also goes against the wiki tradition of putting everything important into a single stream of text.
Therefore, simply add meta-data to the top of a wiki (or other enhanced-plain-text format) page using a RFC822 header, prefixing the page like an e-mail:
Title: RFC 822 Meta-data Syntax Abstract: A popular human-readable syntax for adding meta-data Is-Part-Of: RdfForWikis Has-Format: PeriPeri:PeriPeri+FacetWiki:RdfForWikis Conforms-To: RFC 822
(These fields may be called statements, to conform to ResourceDescriptionFramework parlance.)
Extensions
Representation versus represented
Since Wiki pages can represent concepts, one may need to distinguish statements about the concept from statements about the representation. Representation metadata is prefixed with an asterisk (allowed by RFC822):
Title: Chris Purcell *Creator: ChrisPurcell *Created: 2001 *Contributor: SunirShah Identifier: Chris Purcell, born Bath, UK, 1981-02-17 Created: 1981-02-17
A different set of metadata tags may be permitted for representation metadata.
Reification
More complex meta-data, where a statement about a page itself has qualifying statements, can be made by creating a separate page and using [reification vocabulary]:
Subject: ChrisPurcell Predicate: Attends Object: Cambridge University Coverage: 1999-09 - 2006-06
Implementation
[Text::Header] is convenient, although it doesn't really handle metadata with multiple datum for a single field. Is there any better existing code?
It looks to me like the only problem is putting the results into a hash; Text::Header doesn't mention any subtleties like internally enforcing uniqueness.