Source and scripts for generating DCMI Metadata Terms documentation
XSLT Shell Java ApacheConf JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
2007-06-17 Initial commit of Dublin Core Vocabulary Management Tool. May 8, 2010
2007-08-15 Initial commit of Dublin Core Vocabulary Management Tool. May 8, 2010
2007-12-07 Initial commit of Dublin Core Vocabulary Management Tool. May 8, 2010
2007-12-18 Initial commit of Dublin Core Vocabulary Management Tool. May 8, 2010
2008-01-14 Update to use 2012-05-14 files. May 11, 2012
2010-10-11 Adding 2010-10-11 and 2012-05-14 data directories May 10, 2012 Adding 2013-01-09 build materials Jan 3, 2013
2012-06-14 Add curl test to README and Jun 13, 2012 Adding 2013-01-09 build materials Jan 3, 2013
2013-01-09 Adding 2013-01-09 build materials Jan 3, 2013
web/xsl Merge pull request #14 from nagamori/master Dec 10, 2012
LICENSE Initial commit of Dublin Core Vocabulary Management Tool. May 8, 2010

Vocabulary Management Tool

See also list of DCMI PURLs

2016-04-21. Moved from to
2012-06-14. How-to instructions added

This tool was developed in circa 2002 by Mitsuharu Nagamori and Harry Wagner in order to generate the RDF schemas and Web pages which document DCMI Metadata Terms.

In 2012, Hugh Barnes and Gregg Kellogg extensively edited the tool to add support for generating the main HTML document [1] with an embedded RDF description using RDFa 1.1. Mitsuharu Nagamori cleaned and streamlined the resulting code.

Jon Phipps (with help from Tom Baker) made two further improvements:

  • Added an .htaccess file to the RDF directory for managing content negotiation of PURLs to RDF, Turtle, or HTML [2].

  • Added a Javascript script to the directory for the RDFa/HTML document in order to support resolution of PURLs for specific terms to specific-term HTML anchors in the document [3].

The source code for this tool is maintained in a github repository [4].


How to prepare a new release of DCMI Metadata Terms

  1. Make a copy of the latest data set to a new time-stamped directory, e.g.:

    $ cp -Rip 2010-10-11 2012-06-14

    It is important to copy the entire directory to ensure that the dot file ".htaccess" is not omitted.

  2. Edit the data in the new time stamped directory (add new terms, etc):

  3. Edit build.xml to point to the new data directory, e.g.:


  4. Edit the included "header" files as follows:

         <Identifier property="dcterms:identifier"></Identifier>
         <Date-Issued property="dcterms:issued">2012-06-14</Date-Issued>
         <Identifier property="dcterms:identifier"></Identifier>
         <Date-Issued property="dcterms:issued">2012-06-14</Date-Issued>
  5. Edit the introductory text to DCMI Metadata Terms and the historical versioning document as needed:

  6. Delete the TTL, RDF, and SHTML files in /build:


    NOTE: Do not delete:

  7. Edit the following lines in build/.htaccess to reflect the date of the new build:

    RewriteRule ^(dcelements)$ HTTP://%{HTTP_HOST}/documents/2012/06/14/dcmi-terms\?v=elements [R=303,L,NE,NC]
    RewriteRule ^(dcterms)$ HTTP://%{HTTP_HOST}/documents/2012/06/14/dcmi-terms\?v=terms [R=303,L,NE,NC]
    RewriteRule ^(dctype)$ HTTP://%{HTTP_HOST}/documents/2012/06/14/dcmi-terms\?v=dcmitype [R=303,L,NE,NC]
    RewriteRule ^(dcam)$ HTTP://%{HTTP_HOST}/documents/2012/06/14/dcmi-terms\?v=dcam [R=303,L,NE,NC]
    RewriteRule ^(.*)$ HTTP://%{HTTP_HOST}/documents/2012/06/14/dcmi-terms/ [R=303,L,NE]
  8. Apache Ant (version 1.7 or higher) is required to run the program. From the top directory, execute:

    $ ant

    The following output will be written to the "build" directory:


    Check that the following files are still present:

  9. Use "rapper -o turtle" (or some similar tool) to generate Turtle files from the RDF:

    $ rapper -o turtle dcam.rdf       >dcam.ttl
    $ rapper -o turtle dcelements.rdf >dcelements.ttl
    $ rapper -o turtle dcterms.rdf    >dcterms.ttl
    $ rapper -o turtle dctype.rdf     >dctype.ttl
  10. Do not forget to commit everything to the git repository and push to github! In general, commit early and often, with explicit commit comments.

  11. Copy the contents of build/ directory (RDF, TTL, and .htaccess files) to a new timestamped directory in the admin/web SVN project -- listed here with their "stage" and "production" server addresses:                      
  12. Copy build/html/dcmi-terms/index.shtml to a new timestamped directory under the /documents tree in the SVN project -- listed here with its "stage" and "production" server addresses: 
  13. Copy build/html/history/index.shtml to a new timestamped directory under the /usage/terms/history/ tree in the SVN project -- listed here with its "stage" and "production" server addresses:
  14. Note that as of June 2012, the stand-alone DCMES document is currently maintained by hand. Edit the following file to change the date of publication.
  • NOTE: Any changes to the fifteen properties of DCMES will need to be made in this document by hand!

  1. Check your work with diffs to ensure that files were generated correctly, with no unexpected results. See, for example, the tests run for the 2012-06-14 build:
  2. Ask for a build of the stage server to production and test all of the following

  • RDF, TTL, and .htaccess                      
  • DCMI Metadata Terms (with RDFa) 
  • Version history document (without RDFa)
  1. Set up test partial-redirect PURLs at, e.g.: =>    =>     =>       =>
  2. Ensure that content negotiation is working correctly by editing a test PURL and sending different accept requests, e.g.:

    curl -L -I  --header "Accept: application/rdf+xml"
    curl -L -I  --header "Accept: application/rdf+turtle"
    curl -L -I  --header "Accept: application/turtle"
    curl -L -I  --header "Accept: text/turtle"
  3. Prepare for the final publication by editing and commiting the "latest version" URLs to point to the latest version:  
        <!--#include virtual="/documents/2012/06/14/dcmi-terms/index.shtml" -->
        <!--#include virtual="/usage/terms/history/2012/06/14/index.shtml" -->
        <!--#include virtual="/documents/2012/06/14/dces/index.shtml" -->
  4. Prepare and stage a news announcements!

  5. Add references to the new RDF schemas to

  6. Build the production server from stage.

  7. Immediately after the the production server is published, edit the following PURLs (all as "partial redirect PURLs"):          =>      =>  =>         =>
  • Test the PURLs to ensure that they resolve as expected.

  • NOTE: There are four types of partial-redirect PURLs, of which the first should be selected:

      --> Partial-redirect PURL
      not Partial-redirect PURL with appended file extension(s)
      not Partial-redirect PURL with ignored file extension(s)
      not Partial-redirect PURL with replaced file extension(s)

Any comments or feedback on this tool or the general approach to publishing DCMI Metadata Terms (such as versioning) is most welcome. To submit a comment, please either subscribe to the dc-architecture mailing list [2] and post there or send comments to indicating whether or not they may be shared with the list.

Tom Baker
CIO, Dublin Core Metadata Initiative


Notes for next build: