Note: The recipes here are for PmWiki versions 0.6 and 1.0 only. For PmWiki 2.0 recipes, see Cookbook.


The point is to provide Dublin Core (DC) metadata for wiki pages, according to the Dublin Core recommendation for encoding DC metadata in RDF/XML.

    [(approve links)

It should follow the suggestions for Dublin Core for wikis, as seen here:

There's also a variation for Creative Commons ( metadata, as defined here:



This script was developed using PmWiki 1.0.5, but it should work with any 0.6.x or 1.0.x version.


To install, unpack the tarball or zip file, and recursively copy all the contents of the directory it creates to your pmwiki directory:

    tar zxvf pmwiki-metadata-0.6.tar.gz
    cp -R pmwiki-metadata-0.6/* /path/to/pmwiki

Add the following line to your 'local/config.php' file:


That should probably be enough.

Configuration variables

There are a number of configuration variables to change the output of this script.

  • $AboutPage -- this is the page that will be defined for the <dc:publisher> element, if it exists. It defaults to '$DefaultGroup.$WikiTitle'.
  • $CopyrightPage -- the page that explains the copyright policy for your wiki site. If this is defined and the page exists, it will be used as the URL for the <dc:rights> element.
  • $LicenseUrl -- an URL that explains the copyright policy for your wiki site. Use this if you use a well-known content license like the GNU Free Documentation License, a Creative Commons license, or the like.
  • $CopyrightText -- some plain text for your copyright policy (like 'Copyright 2004 My Company. All Rights Reserved'). This is only used if the $CopyrightPage is undefined or doesn't exist, and if the $LicenseUrl is undefined.

Note that you really only want to have one of $CopyrightPage or $CopyrightText defined.

  • $RdfMimeType -- the MIME type to use for the returned Dublin Core RDF. The recommended MIME type for RDF is 'application/rdf+xml', but some processors (like Web browsers) choke on this. So, the default is to return 'text/xml'.

See Also

[(approve links) edit diff] for implementing Dublin Core in XML.

Why? I think the guidelines are for including DC elements in another XML schema or DTD. The standards supported in this module are defined by Dublin Core and Creative Commons. So it's not really all that much about mixing in DC elements. --EvanProdromou
Some countries (Australia and New Zealand among them) have government metadata standards that are modified Dublin Core -- adding non-DC elements to DC metadata. They also use qualified DC as well as simple DC. The MetaData module as it currently stands doesn't support either qualified DC or non-DC elements. The above link covers both topics, as well as simple DC. The title of the page (MetaData) led this reader to suppose it takes a broader approach to metadata than the one given in the goal. To quote from the link above:
"Many metadata applications will mix Dublin Core metadata with properties taken from other metadata schemas. There are several reasons for wanting to do this including the need for DC-based metadata applications to incorporate semantics that are not available within the DCMES and the desire to incorporate DCMES elements within other metadata applications."
So to meet the local standard means generating some simple DC, some qualified DC and some AGLS/NZGLS elements. This recipe looked as if it might be a useful starting point, but it doesn't solve this reader's problem. --jr


  • 22 Mar 2004: 0.1. First release.
  • 23 Mar 2004: 0.2. Added Creative Commons metadata, some bug fixes.
  • 21 Apr 2004: 0.3. Support GPL and LGPL in Creative Commons code.
  • 26 May 2004: 0.4. Support Creative Commons 2.0 licenses, fix some instructions in README.
  • 31 May 2004: 0.5. Fixed bug when pagename was blank.
  • 20 Jul 2004: 0.6. New layout per ComplexRecipes.

Comments & Bugs

Is there a reason the DublinCore script doesn't include dc:relation and the isPartOf qualifier, with a reference to the $DefaultPage? Is this perhaps planned as a future extension?

I plan to implement the proposed recommendation for [(approve links) edit diff] at some point soon. That will probably have all the isPartOf, hasVersion, and that kind of stuff. --EvanProdromou

I also want to re-architect the code so it uses [(approve links) edit diff] to build the model and serialize it. That'd separate out the data itself from the presentation. Finally, I'd also like to allow editing of a page's metadata in the page itself, with (say) Notation3.

For example,

  %n3% <> dc:summary "This is the page summary." ;
            dc:subject "RDF", "Metadata", "Extensions" ;
            rdfs:seeAlso <> . %% 



Copyright 2004, Evan Prodromou. Available under the General Public License (GPL). pmwiki-2.2.113 -- Last modified by {{EvanProdromou}}

from IP: ip should be disabled by default for security reasons