sourCEntral - mobile manpages




Module::Install::DOAPChangeSets::Format − vocabulary guide


DOAP Changesets are written in RDF − normally serialised as Turtle, though other serialisations are fine. (The Module::Install::DOAPChangeSets module supports any input format recognised by RDF::Trine.)

This document assumes a good working knowledge of RDF and Turtle.

You would normally describe your project in a file called "meta/changes.ttl" from which a changelog called "Changes" will be automatically built at packaging time.

You will want to define at least the following namespaces:

  @prefix :     <> .
  @prefix dc:   <> .
  @prefix dcs:  <−changeset#> .
  @prefix foaf: <> .
  @prefix rdfs: <−schema#> .
  @prefix xsd:  <> .

And you should define a namespace specific for your distribution:

  @prefix my:   <−uri/dist/Example−Example/> .

Describing the Changeset Document
You should now give the Changeset document itself a description. At a minimum, you must set the dc:subject.

    dc:title     "Changes for Example−Example" ;
    dc:subject   my:project ;
    dc:creator   my:developer .

Describing the First Release of the Distribution
Use DOAP to describe the first version of the distribution. At the very least you need to include its revision (version number):

    a           :Version ;
    dc:issued   "2007−12−20"^^xsd:date ;
    :revision   "0.01"^^xsd:string .

You would not normally list any changes against the first release, as nothing has been changed.

Describing Subsequent Releases
For subsequent releases, you add a changeset to a release description:

    a           :Version ;
    dc:issued   "2007−12−29"^^xsd:date ;
    :revision   "0.02"^^xsd:string ;
    rdfs:label  "The 0.02nd Coming" ;  ## a "title" for the release
    dcs:changeset [
        [ rdfs:label "Example change." ] ,
        [ rdfs:label "Example bugfix." ; a dcs:Bugfix ] ,
        [ rdfs:label "Example new feature." ; a dcs:Addition ] ,
        [ rdfs:label "Example removal." ; a dcs:Removal ]
    ] .

Describing the Distribution
Use DOAP to describe the distribution. At the very least you need to assert that the project is a Project and provide a name for it. You must also list all the releases you wish to appear in the human-readable Changes file generated by the Module::Install::DOAPChangeSets module. There are plenty of other properties in DOAP which you can also use.

    a           :Project ;
    :name       "Example−Example" ;
    :shortdesc  "Just an example!" ;
    :programming−language "Perl" ;
    :created    "2007−12−18"^^xsd:date ;
    :maintainer my:developer ;
    :homepage   <−Example/> ;
    :bug−database <−Example> ;
    :release    my:v_0−01 , my:v_0−02 .

Describing a Developer
Developers should be described using FOAF. At the very least, include a name. A CPAN e−mail address is also a good idea.

    a           foaf:Person ;
    foaf:name   "Joe Bloggs" ;
    foaf:mbox   <mailto:joebloggs AT cpan DOT example DOT org> ;
    foaf:page   <> .

Legacy Support
The module has legacy support for Aaron Cope’s "changefile" vocab, but this is not thoroughly tested. Changelogs written in this vocab tend to use DOAP incorrectly, so I discourage using this vocab.


Module::Install, Module::Install::DOAPChangeSets .

<>, <−uri/>.


Toby Inkster <tobyink AT cpan DOT org>.


Copyright (C) 2010−2011 by Toby Inkster

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.