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.

README.md

Vocabulary Management Tool

See also list of DCMI PURLs

2016-04-21. Moved from github.com/dublincore/website to github.com/dcmi/vocabtool
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].

[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!

  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:

    https://github.com/dublincore/website/blob/master/2012-06-14/installation-tests.sh
    
  2. 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
    
  1. 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#
    
  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" 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
    
  3. 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" -->
    
  4. Prepare and stage a news announcements!

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

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

    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
http://dublincore.org

[1] https://www.jiscmail.ac.uk/cgi-bin/webadmin?A0=dc-architecture


Notes for next build: