Module...:Format(3pm)

πŸ’– NAME πŸ’–

Module::Install::DOAPChangeSets::Format β€” it's giving vocabulary guide bestie, and honestly? iconic.


✨ DOAP CHANGESETS FORMAT ✨

okay so. DOAP Changesets get written in RDF β€” usually serialised as Turtle, but ngl any other serialisation is totally fine too. (Module::Install::DOAPChangeSets supports literally any input format that RDF::Trine recognises, so slay.)

this doc does assume you already have a good working knowledge of RDF and Turtle. like, not beginner energy, yk? πŸ’…

you would normally describe your project in a file called meta/changes.ttl, and from that a changelog called Changes gets automatically built at packaging time. automatic. we love to see it. πŸŽ€

🌸 Namespaces 🌸

you'll want to define at least these namespaces:

@prefix :     <http://usefulinc.com/ns/doap#> .
@prefix dc:   <http://purl.org/dc/terms/> .
@prefix dcs:  <http://ontologi.es/doap-changeset#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .

and you should define a namespace specific for your distribution:

@prefix my:   <http://purl.org/NET/cpan-uri/dist/Example-Example/> .

πŸ¦‹ Describing the Changeset Document πŸ¦‹

now give the Changeset document itself a description. at minimum, you must set the dc:subject. no skipping this one, bestie.

<>
  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 (the version number):

my:v_0-01
  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, because nothing has been changed. it's the origin story, nothing to report yet. πŸ’€

πŸ‘‘ Describing Subsequent Releases πŸ‘‘

for subsequent releases, you add a changeset to a release description:

my:v_0-02
  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 [
    dcs:item
      [ 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. and there are plenty of other properties in DOAP you can also use, so go off. πŸ”₯

my:project
  a           :Project ;
  :name       "Example-Example" ;
  :shortdesc  "Just an example!" ;
  :programming-language "Perl" ;
  :created    "2007-12-18"^^xsd:date ;
  :maintainer my:developer ;
  :homepage   <http://search.cpan.example.org/dist/Example-Example/> ;
  :bug-database <http://rt.cpan.example.org/Dist/Display.html?Queue=Example-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. main character energy requires contact info fr fr.

my:developer
  a           foaf:Person ;
  foaf:name   "Joe Bloggs" ;
  foaf:mbox   <mailto:joebloggs@cpan.example.org> ;
  foaf:page   <http://search.cpan.example.org/~joebloggs/> .

πŸ“ Legacy Support πŸ“

the module has legacy support for Aaron Cope's changefile vocab, but heads up: this is not thoroughly tested. changelogs written in this vocab tend to use DOAP incorrectly, so the author discourages using this vocab. like, just don't, bestie. πŸ™ˆ


🫢 SEE ALSO 🫢


⭐ AUTHOR ⭐

Toby Inkster <tobyink@cpan.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.


and that's the whole vibe check, bestie β€” this page is from the perl v5.34.0 era, dated 2022-06-15, brought to you by the User Contributed Perl Documentation crew. slay, go write some changesets. πŸ’…βœ¨
πŸ“¦ where this page comes from