some guidelines for developing the CIM
As you develop CIM UML packages in Enterprise Architect, you should always export that package as XMI and then upload it to your branch. Additionally, if any pictures change or if you feel additional pictures would be useful, you should upload all PNGs to your branch.
If you want to generate the APPCIM then concim2appcim.xsl should be run on cim.xmi (as opposed to an individual package). This means that you will have to regenerate cim.xmi (in addition to your subpackage XMI) with your changes.
The XSL must use XSLT v2.0; I have simply been running it in Oxygen (with the built-in Saxon-B 9.1.0.3 processor). It will generate an XSD file for each package in cim.xmi as well as a single output XML file with debugging statements.
The XSL takes a single parameter, version. It should be set appropriately. (Actually, the XSL takes another parameter, sort-case, which indicates whether UML attributes should be sorted alphabetically before processing; the default value is "false" and, unless you're particularly perverse, it shouldn't need to be changed.)
All the XSD files will be produced in the same directory. You should manually copy them to the appropriate subpackage directory.
Standards and Naming Conventions
(Some of these rules come directly from here.)
| stereotype / tagged value | XML equivalent | definition |
| abstract | an xs:simpleType or xs:complexType, but not an xs:element or xs:attribute | an abstract type is not expected to ever be instantiated; it is generally used as a parent class. |
| document | at least an xs:element that can form a document root; may also be of type xs:complexType or xs:simpleType. a document element has a pre-defined set of elements and attributes (things like id, parent reference, author, etc.). | a document is something that can be downloaded as a complete XML document. obviously, <<document>> and <<abstract>> are mutually exclusive. |
| enumeration | an xs:restriction based on xs:string with xs:enumeration values | a restricted set of values; a controlled vocabulary |
| enumeration.href | the (optional) location of the "vocabulary server" where the enumeration is maintained. some basic enumerations can be defined locally in UML, but others - which have a lifecycle separate from the CIM, and which METAFOR does not govern - will be imported at run-time via a server. | |
| codelist | a xs:union of an enumeration (above) and xs:string | an extendible set of values; a non-exclusive controlled vocabulary |
| codelist.href | the (optional) location of the "vocabulary server" where the codelist is maintained | |
| unused | ignored | a UML class that is not used or not ready to be implemented in XSL (these should be minimised as much as possible, else the UML diagrams will be needlessly cluttered). |
UML package and class names should be upper camel case. UML attribute and role names should be lower camel case. This will correspond to upper camel case xs:complexTypes and xs:simpleTypes and lower camel case will be used for xs:elements.
Multiple inheritance is not allowed.
Enumerations and codelists should use "Type" as a suffix.
Wiki Index
- WP1: the starting point for WP1: Project Management
- WP1/Amendment3: Amendment 3: Metafor project extension
- WP1/SoftwareManagement: Live Deliverables
- WP1/TelcoMinutes: Teleconference minutes
- WP1/TelcoMinutes/20Sept2011
- WP1/TelcoMinutes/Telco138_27Sept2011: Telco 138 - 27th September 2011
- WP1/TelcoMinutes/Telco139_4Oct2011: Telco 139 - 4th Oct 2011
- WP1/TelcoMinutes/Telco140_11Oct2011: Telco 140 11th October 2011
- WP1/TelcoMinutes/Telco141_1Nov2011: Telco 141 1st November 2011
- WP1/TelcoMinutes/Telco142_6Dec2011
- WP1/TelcoMinutes/Telco143_5Jan2012: Telco 143 5th January 2012
- WP1/TelcoMinutes/Telco144_2Feb2012: Telco 144 2nd February 2012
- WP1/TelcoMinutes/Telco145_6Mar2012: Telco 145 6th March 2012
- WP1/TelcoMinutes/Telco146_2Apr2012: Telco 146 2nd April 2012
- WP1/TelcoMinutes/Telco147_10May2012: Telco 147 10th May 2012
- WP2: the starting point for WP2: The CIM
- WP2/ControlledVocabulariesList: A flat list of controlled vocabulary terms for the CIM
- WP2/DevelopingTheCIM: Wiki Index
- WP3: the starting point for WP3: testing/populating
- WP3/Agile: Metafor WP3 Group - Agile Management
- WP3/Agile/Sprints/01: Metafor WP3 Group - Sprint 01
- WP3/docs
- WP3/telcos
- WP3/telcos/03/agenda
- WP3/telcos/04
- WP3/telcos/05: Agenda
- WP4: the starting point for WP4: Services
- WP4/Agile: Services Group - Agile Management
- WP4/Agile/Sprints/01: Services Group - Development Sprint 01
- WP4/Agile/Sprints/02: Services Group - Development Sprint 02
- WP4/Agile/Sprints/03: Services Group - Development Sprint 03
- WP4/Agile/Sprints/03/url-design: Initial Thoughts on Metafor URL design to supplement attached note
- WP4/Agile/Sprints/04: Services Group - Development Sprint 04
- WP4/Agile/Sprints/05: Services Group - Development Sprint 05
- WP4/Agile/Sprints/06: Services Group - Development Sprint 06
- WP4/Agile/Sprints/07: Services Group - Development Sprint 07
- WP4/Agile/Sprints/08: Services Group - Development Sprint 08
- WP4/Agile/Sprints/08/Agenda
- WP4/Agile/Sprints/09: Services Group - Development Sprint 09
- WP4/Agile/Sprints/11
- WP4/Agile/Sprints/12: Services Group - Development Sprint 12
- WP4/Agile/Sprints/19
- WP4/Deliverables
- WP4/MF-ISENES-Timeline
- WP4/NumSim: WP4/NumSim
- WP4/PortalDeployment: pre-requisites
- WP4/QDeployment: Deploying the questionnaire
- WP4/QSandbox: Notes on building questionnaire sandboxes
- WP4/ServicesPlanningDocument: Metafor Services (WP4, WP5, & WP6): Deliverables, Dependencies, and …
- WP4/URIstructure: WP4/URIstructure - The Metafor URI structure(s)
- WP5: the starting point for WP5: Tools
- WP6: the starting point for WP6: CIM Creation
- WP7: the starting point for WP7: Dissemination
- CMIP5: the starting point for CMIP5
- CMIP5/FileMetadata: CMIP5 Internal File Metadata
- CMIP5/QuestionaireBetaTesting: Comments, queries and issues raised by our beta testers
- CMIP5/QuestionaireIssues: Alpha 5 release of the CMIP5 questionnaire: …
- CMIP5/QuestionaireRequirements: CMIP5 questionnaire requirements
- CMIP5/QuestionaireTimeline
- CMIP5/QuestionnaireAccess: Instructions for Access to the CMIP5 Questionnaire …
- CMIP5/QuestionnaireCentres
- CMIP5/QuestionnaireOpenLetter: Open letter to our users
- CMIP5/QuestionnaireTimeline
- CMIP5/Storyline
- CMIP5/VarURIStructure: CMIP5/Variable Structures
- CMIP5_CVSoft
- requirements: METAFOR requirements
- requirements/testRequirement: requirement: make sure that thingies contain widgets (sample requirement)
- use-cases: METAFOR use-cases
- use-cases/AnnotateCIMRecord: Use-Case: Annotate a CIM Record
- use-cases/BrowseCIMRepository: Use-Case: Browse a CIM Repository
- use-cases/CaptureGridDefinition: Use-Case: Capture a Grid Definition
- use-cases/FindCIMRepository
- use-cases/FindExperimentsForModel: Use-Case: Find Experiments Based On Model X
- use-cases/FindModelsForExperiment: Use-Case: Find Models Used In Experiment X
- use-cases/FindModelsToCouple: Use-Case: Find Models To Couple
- use-cases/FindRelatedCIMRecords: Use-Case: Find Related CIM Records
- use-cases/FindRelatedCitations: Use-Case: Find Related Citations
- use-cases/KeywordSearchCIMRepository: Use-Case: Keyword Search a CIM Repository
- use-cases/QueryCIMRepository: Use-Case: Query a CIM Repository
- use-cases/ViewCIMRecord: Use-Case: View a CIM Record
- use-cases/ViewDatasetQualityReport: Use-Case: Find Related Citations
- use-cases/create-qc-record: Use-Case: Modify or Create a quality control record
- use-cases/template: Use-Case: <name>
- use-cases/testUseCase: Use-Case: a sample use-case
- tickets/1008: QC for CMIP5 Questionnaire Records
- tickets/167: CIM sequence document & diagrams
- tickets/180: notes for ticket 180
- tickets/181: notes for ticket 181
- tickets/182: The Wiki page for documenting progress on the ConCIM activity package: …
- tickets/184: Existing Controlled Vocabulary lists
- tickets/185: notes for ticket 185
- tickets/189: Use Cases for interacting with the UMUI Minutes from a meeting that …
- tickets/191: Experiment relationships for CMIP5
- tickets/192: CMIP5 Questionnaire
- tickets/193: Extracting CIM metadata from code and verifying CIM metadata and code are …
- tickets/214: Figure out how the Controlled Vocabulary should integrate with the CIM
- tickets/215: tidy the CIM (as per the Y1 meeting)
- tickets/226: restructure the wiki
- tickets/232: create a widget for the thingie (sample ticket)
- tickets/236: tidy the CIM (to make it less XML specific)
- tickets/237: include sequencing info in the CIM
- tickets/239: Outstanding CIM Issues
- tickets/241: Implement Tree Navigation for the CMIP5 Questionnaire
- tickets/244: Processing the mindmaps (bundled version) to create XML suitable for …
- tickets/245: Work in progress
- tickets/247: Ingest ESG metadata into mindmaps
- tickets/248: CMIP5 Questionnaire Timeline
- tickets/249: Questionnaire to CIM Conversion
- tickets/250: CMIP5 Conformance wiki for ticket #250
- tickets/253: Questionnaire Metadata Validation
- tickets/254: Table 1: CMIP5 constraints not enforced by the Questionnaire
- tickets/277: Proposed updates to the CIM Grid logical data model
- tickets/280: add / revise definitions of terms used in the CIM
- tickets/281: when should references use XPath and when should they embed documents …
- tickets/31
- tickets/326/aerosols
- tickets/326/atmos
- tickets/326/atmos_chem
- tickets/326/land_ice
- tickets/326/land_surf
- tickets/326/ocean: Herafter is the previous version of definitions tables for Ocean, included …
- tickets/326/ocean_biochem
- tickets/326/sea_ice: Herafter is the previous version of definitions tables for Ocean, included …
- tickets/485: CMIP5 Questionnaire
- tickets/509: What Deployment/Hardware/Configuration? Information Should Be Recorded?
- tickets/519
- tickets/55: Metafor Governance
- tickets/636: Wiki Page for Ticket #636 (Review of Grid Properties in MindMaps)
- tickets/684: Discussion of Ensemble Handling Issues
- tickets/707: THREDDS to CIM instances tool
- tickets/709: CIM v1.5
- tickets/715: METAFOR Success Criteria
- tickets/778: Integrate Controlled Vocabularies with the CIM
- tickets/78
- tickets/79: CIM Differencing Tool Design Document
- tickets/810
- tickets/862: Required CIM Software Component Properties
- tickets/868: Some Documentation of Issues associated with ticket:868
- tickets/870: Moving towards CIM2.0
- tickets/888: Definition of unconfigured vs configured model
- tickets/92: Outstanding CIM Prototype Human GUI Issues
- tickets/920: O&M
- tickets/920/options4om1: Initial Step
- tickets/920/sidl: Scientific Interface Definition Language (SIDL)
- tickets/921
- tickets/925: A Common Information Model paired with scientific Controlled Vocabularies …
- tickets/926: EGU abstract - The CMIP5 questionnnaire: web-based metadata collection for …
- tickets/927
- tickets/986: CIM v1.7
