Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

The Dublin Core Metadata Initiative Website

branch: master
README
Vocabulary Management Tool 

2012-06-14

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].

[1] http://dublincore.org/documents/dcmi-terms/
[2] http://dublincore.org/2012/06/14/.htaccess
[3] http://dublincore.org/documents/2012/06/14/dcmi-terms/jump2location.js
[4] https://github.com/dublincore/website


======================================================================
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):

        2012-06-14/xmldata/dcam.xml
        2012-06-14/xmldata/dcelements.xml
        2012-06-14/xmldata/dcterms-classes.xml
        2012-06-14/xmldata/dcterms-properties.xml
        2012-06-14/xmldata/dcterms-ses.xml
        2012-06-14/xmldata/dcterms-ves.xml
        2012-06-14/xmldata/dctype.xml

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

    :%s/2010-10-11/2012-06-14/

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

    2012-06-14/headers/header-doc-dcterms.xml
        <Identifier property="dcterms:identifier">http://dublincore.org/documents/2012/06/14/dcmi-terms/</Identifier>

    2012-06-14/headers/header-doc-dcterms.xml
        <Date-Issued property="dcterms:issued">2012-06-14</Date-Issued>

    2012-06-14/headers/header-doc-history.xml
        <Identifier property="dcterms:identifier">http://dublincore.org/usage/terms/history/2012/06/14/</Identifier>

    2012-06-14/headers/header-doc-history.xml
        <Date-Issued property="dcterms:issued">2012-06-14</Date-Issued>

    2012-06-14/headers/header-rdf-dcam.xml
        <Date-Modified>2012-06-14</Date-Modified> 

    2012-06-14/headers/header-rdf-dcelements.xml
        <Date-Modified>2012-06-14</Date-Modified> 

    2012-06-14/headers/header-rdf-dcterms.xml
        <Date-Modified>2012-06-14</Date-Modified> 

    2012-06-14/headers/header-rdf-dctype.xml
        <Date-Modified>2012-06-14</Date-Modified> 

5. Edit the introductory text to DCMI Metadata Terms and the historical versioning
   document as needed:

         2012-06-14/headers/intro.dcmi-terms.xml
         2012-06-14/headers/intro.history.xml

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

         build/dcam.rdf
         build/dcam.ttl
         build/dcelements.rdf
         build/dcelements.ttl
         build/dcterms.rdf
         build/dcterms.ttl
         build/dctype.rdf
         build/dctype.ttl
         build/html/dcmi-terms/index.shtml
         build/html/history/index.shtml

   NOTE: Do _not_ delete:

         build/.htaccess
         build/html/dcmi-terms/jump2location.js

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:

        build/dcam.rdf
        build/dcelements.rdf
        build/dcterms.rdf
        build/dctype.rdf
        build/html/dcmi-terms/index.shtml
        build/html/history/index.shtml

   Check that the following files are still present:

        build/.htaccess
        build/html/dcmi-terms/jump2location.js

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:

    http://dublincore.org:8080/2012/06/14/.htaccess        
    http://dublincore.org:8080/2012/06/14/dcam.rdf         
    http://dublincore.org:8080/2012/06/14/dcelements.rdf   
    http://dublincore.org:8080/2012/06/14/dcterms.rdf      
    http://dublincore.org:8080/2012/06/14/dctype.rdf       
    http://dublincore.org:8080/2012/06/14/dcam.ttl         
    http://dublincore.org:8080/2012/06/14/dcelements.ttl   
    http://dublincore.org:8080/2012/06/14/dcterms.ttl      
    http://dublincore.org:8080/2012/06/14/dctype.ttl       

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:

    http://dublincore.org:8080/documents/2012/06/14/dcmi-terms/index.shtml 

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:

    http://dublincore.org:8080/usage/terms/history/2012/06/14/index.shtml

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.

    http://dublincore.org:8080/documents/2012/06/14/dces/index.shtml
         http://dublincore.org/documents/2012/06/14/dces/index.shtml

    NOTE: Any changes to the fifteen properties of DCMES will need to be made
    in this document by hand!

15. 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:

    https://github.com/dublincore/website/blob/master/2012-06-14/installation-tests.sh

16. Ask for a build of the stage server to production and test all of the 
    following

    --  RDF, TTL, and .htaccess

        http://dublincore.org/2012/06/14/.htaccess        
        http://dublincore.org/2012/06/14/dcam.rdf         
        http://dublincore.org/2012/06/14/dcelements.rdf   
        http://dublincore.org/2012/06/14/dcterms.rdf      
        http://dublincore.org/2012/06/14/dctype.rdf       
        http://dublincore.org/2012/06/14/dcam.ttl         
        http://dublincore.org/2012/06/14/dcelements.ttl   
        http://dublincore.org/2012/06/14/dcterms.ttl      
        http://dublincore.org/2012/06/14/dctype.ttl       

   --   DCMI Metadata Terms (with RDFa)

        http://dublincore.org/documents/2012/06/14/dcmi-terms/index.shtml 

   --   Version history document (without RDFa)

        http://dublincore.org/usage/terms/history/2012/06/14/index.shtml

17. Set up test partial-redirect PURLs at http://purl.org, e.g.:

        http://purl.org/dc/test/elements/ => http://dublincore.org/2012/06/14/dcelements#
        http://purl.org/dc/test/terms/    => http://dublincore.org/2012/06/14/dcterms#
        http://purl.org/dc/test/type/     => http://dublincore.org/2012/06/14/dctype#
        http://purl.org/dc/test/am/       => http://dublincore.org/2012/06/14/dcam#

18. 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" http://purl.org/dc/test/terms/instructionalMethod
        curl -L -I  --header "Accept: application/rdf+turtle" http://purl.org/dc/test/terms/instructionalMethod
        curl -L -I  --header "Accept: application/turtle" http://purl.org/dc/test/type/Image
        curl -L -I  --header "Accept: text/turtle" http://purl.org/dc/test/terms/instructionalMethod

19. Prepare for the final publication by editing and commiting the "latest 
    version" URLs to point to the latest version:

    http://dublincore.org:8080/documents/dcmi-terms/index.shtml  
        <!--#include virtual="/documents/2012/06/14/dcmi-terms/index.shtml" -->

    http://dublincore.org:8080/usage/terms/history/index.shtml
        <!--#include virtual="/usage/terms/history/2012/06/14/index.shtml" -->

    http://dublincore.org:8080/documents/dces/index.shtml
        <!--#include virtual="/documents/2012/06/14/dces/index.shtml" -->

20. Prepare and stage a news announcements!

21. Add references to the new RDF schemas to http://dublincore.org/schemas/rdfs/.

21. Build the production server from stage.

22. Immediately after the the production server is published, edit the following PURLs (all
    as "partial redirect PURLs"):

    http://purl.org/dc/dcam/          => http://dublincore.org/2012/06/14/dcam#
    http://purl.org/dc/dcmitype/      => http://dublincore.org/2012/06/14/dctype#
    http://purl.org/dc/elements/1.1/  => http://dublincore.org/2012/06/14/dcelements#
    http://purl.org/dc/terms/         => http://dublincore.org/2012/06/14/dcterms#

    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 tom@tombaker.org indicating whether or not they may be shared
with the list.

Tom Baker <tom@tombaker.org>
CIO, Dublin Core Metadata Initiative Ltd.
http://dublincore.org

[1] http://www.jiscmail.ac.uk/lists/dc-architecture.html
Something went wrong with that request. Please try again.