ChAMP is designed to be flexible - the parts can used and reused in many different ways by developers.  That is a good thing because it allows development to be defined by the application area.  However, developers may have a had time knowing where to start, so what follows is a set of best practices (and guidelines) for implementation of ChAMP or any similar project.

Best Practices

  • Look at how ChAMP is organized.  Think about your project in a similar way.
  • Define the scope of your application. Articulate specifically what areas it will not cover.
  • After defining metadata needed for your application evaluate which items can be represented by ontologies that already exist (not just CAO)
  • Wherever possible, make the name singular.  This may seem strange relative to common usage but makes better sense when multiple terms get separated in, for instance, RDF
  • Do not include numeric digits or special characters in metadata names
  • Use camel case (e.g. camelCase) for metadata names that would logically have spaces
  • For each metadata item
    • define its data type (use of the XML data types is recommended)
    • decide whether it should be represented by a controlled vocabulary, enum list, or set of terms
    • determine if the metadata item should occur multiple times or only once for the thing it is describing
  • For those metadata that should be controlled vocabulary based, use published vocabularies from national organizations in the domain OR if none exists consider working with a discipline group to create and publish an open vocabulary
  • In cases where a large amount of metadata is needed, consider separating the items into categories to help manage them and think at a higher level about the types of metadata that are important to project.  This makes it easier to see gaps in metadata coverage.


  •  Look at the examples on this website.  They show concrete implementations of ChAMP in both XML and JSON-LD