CIM v1.5

This page provides documentation for ticket:709.

It describes the changes made to the CIM in moving from v1.4 to v1.5

Here is some documentation:

  • r1507 made dataStorage/dataFormat optional
  • r1508 made dataDistribution/responsibleParty optional
  • r1509 cleaned up calendar structure; Made distinction between OpenDateRange and ClosedDateRange clearer (start/end date are optional for an open range but required for a closed range); added "length" attribute for calendar to be used with the "units" attribute.
  • r1510 made NumericalRequirement/id optional
  • r1511 cleaned up StandardName structure (currently used in dataObject/content/topic/standardName); previously a standardName was just a characterstring, now it is a complexType with two sub-elements: a standard element which is an extensible CV bound to terms like "CF" and a name element which is text; Also a dataObject can belong to multiple standards (ie: the standardName element has a cardinality of 0..*)
  • r1512 changed the cardinality on some data attributes, as per Mark E.'s comments in the tables of wiki:tickets/249
  • r1513 made more data attributes optional (most of the ones dealing with dataStorage), as per wiki:tickets/249
  • r1515 made one more data attribute optional: distribution/distributionFormat
  • r1516 added optional "name" attribute to Change; This is being used to capture the "mnemonic" associated with a ModelMod asked for by the Questionnaire
  • r1535 made dataContent/frequency a CIM type instead of a more cumbersome GMD type (gmd:MD_MaitenanceFrequencyCode_PropertyType)
  • r1539 connection/type made optional (can be inferred from coupling/type)
  • r1543 connection/@purpose made optional (can be inferred from coupling/@purpose)
  • r1544 platform/machine/machineSystem and platform/machine/machineOperatingSystem both made optional
  • r1545 closedDateRange/endDate made type dateTime (previously, it had no type - this was an error)
  • r1546 startPoint and endPoint of a simulationRun and simulationComposite were changed from type ClosedDateRange (which included both a start and end date of type xs:dateTime) to just a simpleType xs:dateTime.
  • r1547 all uses of "other" have been changed to "Other" (by modifying concim2appcim.xsl)
  • r1554 some more documentation has been added to README.txt (no structural changes to the schemas were made)
  • r1555 changed CIM namespace format to "<version>" (inserted the term "schemas")
  • r1556 made specifying the range of a calendar optional
  • r1557 added ParameterChange and CodeChange to ChangePropertyType CV (to use with conformances)
  • r1558 made change/detail/@id optional (and restructured where in the XSD change id & description appear)
  • r1637 added externalID to all CIM documents (to record, for example, DOI); this describes the id string and the standard name of that id
  • r1664 changed name of DataObject/LocalFileStorage to FileStorage
  • r1665 added several new terms to DataHierarchyType. These correspond to DRS terminology and reflect how THREDDS categorises its data. Within a hierarchical set of DataObjects, the DataHierarchyLevelName and DataHierarchyLevelValue define the logic for grouping together DataObjects at that particular level.
  • r1733 made the cardinality of changes of a reference 0..*
  • r1734 moved change type and description from individual change details to the top-level change element.
  • r1735 individual change properties (in the context of modelMods) now have a name as well as a value
  • r1736 added AncillaryFile, BoundaryCondition, and InitialCondition to the set of ChangePropertyTypes (these are specific types of InputMods, just like ParameterChange and CodeChange are specific types of ModelMods)
  • r1738 removed 'target' attribute from InitialCondition and BoundaryCondition (types of NumericalRequirements)
  • r1744 added an explicit EnsembleMember class. This contains a reference to a simulation (where the "change" attribute of the reference is used to document how the ensembleMember differs from other members) and an externalID (which is expected to capture the DRS name of the member is expected).
  • r1746 made "rationale" attribute of an Activity optional
  • r1755 added optional externalID (of type StandardName) to the reference stereotype. This will allow CIM documents to reference other documents that haven't yet been archived or even defined, and therefore don't yet have GUIDs. This is done partly in response to ticket:746, but more work is needed to fully close that ticket.
  • r1765 added a Parallelisation class. This describes how a Deployment has been parallelised across a Platform. It includes the number of processors being used and the rank of the executable. It is a sub-element of a deployment, which now also includes an executibleName and a set of executibleArguments. To support models parallelised across different platforms a SoftwareComponent (or a Simulation) can be associated with multiple deployments. This has all been done to make the CIM compatible with OASIS4.
  • r1766 replaced explicit !cfName feature of ComponentProperty with the more general !standardName.
  • r1767 added '1D' to SpatialRegriddingDimensionType. This has been done to make the CIM compatible with OASIS4.
  • r1768 added optional attributes to PropertyValue: valueMin, valueMax, fillValue, and numericalType. This has been done to make the CIM compatible with OASIS4.
  • r1769 updated documentation regarding using multiple connections & couplings. No structure changes associated with this revision.
  • r1770 revamped SpatialRegridding structure: wherever SpatialRegridding is used in the CIM, its cardinality has been set to 1..* to reflect the possibility of separate regriddings for all three dimensions (either as 3D, 2D + 1D, or 1D + 1D + 1D). A new class, SpatialRegriddingMethod with enumerated values (linear, near-neighbour, etc.) has been added to SpatialRegridding and the !conservativeSpatialRegridding and !spatialRegriddingOrder have been removed. SpatialRegridding can also take an arbitrary number of "SpatialRegriddingProperties" (just name/value pairs) to describe OASIS-specific concepts (like masked, order, normalisation, etc.). This has all been done to make the CIM compatible with OASIS4.
  • r1771 added ConnectionProperty and CouplingProperty to the CIM. These will be used for OASIS-specific concepts (like masked or notmasked).
  • r1772 removed "lagged" and "none" from TimeMappingType. Instead these concepts will be handled by the ConnectionProperty or CouplingProperty. This has been done to make the CIM compatible with OASIS4.
  • r1773 reinstated the DataProperty class to be used to record CF properties (like scale_factor, packing, etc.) for OASIS.
  • r1779 made DataContent a specialisation of DataSource. Thus, like DataObject, SoftwareComponent, and SoftwareComponent it can also satisfy a NumericalRequirement within a Conformance. Unfortunately, all four of these classes can form the endpoints of _both_ Couplings and Connection. Ideally, only a DataObject (file) or SoftwareComponent (model) can form the endpoint of a Coupling, while a DataContent (variable) or ComponentProperty (variable) can form the endpoint of a Connection. However, neither the UML nor XSD can enforce this restriction.
  • r1795 restructured NumericalRequirement as per ticket #744. This is to enable grouping sets of related requirements together. For example, consider a requirement to use _either_ BoundaryCondition a _or_ BoundaryCondition b. Specific changes for this revision include: 1) Introducing a new class, RequirementOption. This inherits from NumericalRequirement and simply includes a reference to a requirement and an "optionRelationship" attribute which the relationship that requirement should have with requirements grouped at the same level (OR, XOR, or AND). Having this relationship on the "child" requirements instead of the "parent" requirement (as it was before) allows for arbitrarily complex logical relationships among sets of requirements.
  • r1796 In order to accomodate RequirementOptions (see above), made NumericalRequirement abstract, which has the effect of providing an xs:choice element wherever NumericalRequirement occurs allowing users to describe either a BoundaryCondition, InitialCondition, or SpatioTemporalConstraint. An arbitrary number of RequirementOptions can be associated with any of these specialisations of NumericalRequirement. The only confusing point is that there is no "generic" requirement type, so if a user wants to describe a set of related boundary condition (or initial condition or whatever) requirements, they would group them together in a "parent" boundary condition (or whatever). If this is unsatisfactory, then a specific RequirementSet class can be included in a future revision.
  • r1827 added "fixedVersionOf" to set of SimulationRelationshipTypes in order to match the terms used in the CMIP5 Questionnaire
  • r1828 added "controlSimulation" to Simulation. This is a reference to another Simulation. Note that it is the _derived_ simulation that identifies a given simulation as a control; a simulation should not know itself if it is being used as a control run for some other simulation.
  • r1829 changed CIM to better handle spinup. A simulation now has an optional "spinupDateRange" and "spinupSimulation." These are used in conjuction with one another; If a simulation has the former but not the latter, then one can assume that the simulation is performing its own spinup.
  • r1838 removed documentInternalID since it's role was already being fulfilled by externalID
  • r1852 removed experimentID from Experiment and added experimentName to NumericalExperiment as per ticket #769. Previously experiment "ids" (which, in fact, were just CMIP5-Questionnaire-specific numbers corresponding to their order) were appended to the experiments' shortNames. Now that information has its own place. This revision also altered the concim2appcim.xsl code to recognise the datatype 'Number' (it maps it to xs:double).
  • r1857 allowed for multiple externalIDs per document
  • r1873 added document stereotype to quality
  • r1876 just modified some of the display settings on the shared package diagram in Enterprise Architect (to make it clearer for NUOPC to review the CIM)
  • r1884 added gmd:CI_OnlineResource element to SoftwareComponent so that NUOPC can record a componen's URL
  • r1910 fixed capitalisation of CI_RoleCode in quality package
  • r1921 added an optional description to Calendar. This was an old request (made by Gerry and Charlotte in February 2010) meant to give clarity for particularly confusing time profiles.
  • r1974 fixed a typo in the ChangeType CV: "ancilaryFile" to "ancillaryFile"
  • r1975 changed the name of the Calendar attribute of a Simulation from 'duration' to 'calendar' because the former was confusing with respect to also specifying the start/end time of a SimulationRun.
  • r1987 added Duration class and used it in SimulationRun and SimulationComposite. A Duration is based on xs:duration and can be used instead of endPoint to specify the simulation length. It can be used as either an "absolute" or "relative" length (specified as an attribute of duration).
  • r1997 just updated sofware.png diagram; no structural changes
  • r1998 added ExperimentDriven and Mixed to the set of EnsembleTypes (to match the list used by the Questionnaire)
  • r1999 modified concim2appcim.xsl to better handle extensible items; now it distinguishes between extending derived types (ie: defined for the CIM) and built-in types.
  • r2000 added an extensible authorsList element to simulations
  • r2007 made several small changes for OASIS compatability: longName in modelComponent made optional, deployment/parallelisation/rank made optional, fixed typos "executibleName" and "executibleValue", componentProperty/longName made optional, valueMin/Max renamed to validMin/Max.
  • r2016 added several classes to quality package as per ticket #824. Note that this is not finished yet, and currently the Schemas are invalid. Also changed simulation/duration to type xs:duration instead of a separate Duration class with a type (as in r1987).
  • r2033 updated the quality schema (and diagram) so that it now validates. The UML calls for a "result" attribute of DQ_Element to have a cardinality of [1..2] and a (same-named) "result" attribute of CIM_DomainConsistency, which is a specialisation of DQ_Element, to have a cardinality of [1..3]. The UML to XSD translator was mapping this to an invalid schema - one that violated the Unique Particle Attribution constraint. To get around this, I've changed the cardinality of "result" in DQ_Element to [1..3] and marked the result attribute of CIM_DomainConsistency with the unused stereotype. This was all done as part of ticket #824.
  • r2035 updated how CVs are described in the CIM (see ticket #778). Also ensured that the "value" attribute of a CV (now that it is no longer bound to an enumerated type) cannot be empty.
  • r2037 separated out platform/machine and platform/compiler into their own class (MachineCompilerUnit) so that multiple machines can be associated with single platform. This was a requirement of OASIS.
  • r2038 added a relationship "direction" attribute with possible values of "toTarget" and "fromTarget". This was in response to confusion over whether relationships like "previousVersion" meant that the referring document was the previous version of the referenced document or vice-versa; now it can be explicitly stated in CIM instances.
  • r2043 ignoring the "open" tagged_value of CVs in the CIM. This means that there is no longer an "open" attribute of the controlledVocabulary element and all CVs in the CIM are mixed elements. This is because it's been suggested that whether or not a CV is extensible is a property of the CV itself and not the description of the CV in the CONCIM. However, I'm not sure if this is a good idea or not.
  • r2045 changed StandardName to a CV. Previously it had a "name" and "standard" sub-element. Those have been removed. Now the name is listed in the "value" attribute and details about the standard can be given in the "controlledVocabulary" sub-element.
  • r2051 changed Ensemble/ensembleMember/externalID to Ensemble/ensembleMember/ensembleMemberID to distinguish it from other instances of externalID used in Ensembles.
  • r2208 removed extranneous marks in MD_ScopeTypeCode enumeration
  • r2211 added reference to sourceSimulation to DataObjects. This allows a link to be made to datasets as they are ingested from THREDDS to the appropriate simulation
  • r2244 whether a CIM element can override the content of a cv is a property of the CONCIM and not the CV. The CONCIM uses an "open" tagged_value for codelists. This gets translated to an xs:boolean "open" attribute in the APPCIM. If set to false, the "value" attribute must derive from the cv. If set to true, "value" can be "other" and the text content of that node can be anything.
  • r2256 the first round of changes to make the quality package ISO compatible: This time around I am using the actual ISO classes (albeit by using their _types and _propertytype complexTypes instead of referencing their element serialisations), instead of the copies that were in the quality package.
  • r2317 quality/scope/target has been made a <<reference>> to allow multiple ways to associate a quality record with a CIM document (or element w/in a CIM document).
  • r2332 made ReferenceList in grids package use gmd:CI_Citation_Type instead of xs:string (as per ticket #883)
  • r2347 added "mnemonic" attribute to GridTile and GridMosaic as per ticket #889.
  • r2357 added instanceID attribute to DataSource for disambiguating _which_ component instance is being coupled to/from in a composition. Note, that it's unclear how to specify this attribute from a _reference_.
  • r2358 added couplingFramework attribute to SoftwareComponent. This is bound to an enumeration, CouplingFrameworkType (currently contains, BFG, ESMF, and OASIS). Currently this has cardinality 0..1, should it have 0..* (can a component conform to multiple coupling frameworks)?
  • r2360 added the GridExtent class to the grids package to use as an optional attribute of GridTile and GridMosaic. A GridExtent includes the lat/lon max/min of the grid and the units those properties are in. This satisfies ticket #885.
  • r2367 SpatialRegridding (optionally used by a Coupling, Connection, or ProcessorComponent) has been changed. Instead of just having a dimension and method, where method was bound to an enumeration, it now has an optional standard method (again, bound to an enumeration) _or_ a user method which includes a name and a reference to a file. This latter class allows a user to specify a custom set of weights and addresses for the regridding. The standard method has also been made optional. A CIM document can specify either a standard method or a user method; it should not specify both. This was done to ensure compatibility with OASIS4.
  • r2368 added documentation to SpatialRegridding class. No structural changes.
  • r2384 added scheduling/dependency information for BFG. A new class EntryPoint has been created. This includes a name, and a "follows" and "proceeds" which are both simple lists of the names of other entry points that they follow or preceed. I had to modify concim2appcim.xsl to recognise the concept of lists for this. A set of EntryPoints is bundled in the class Dependencies, and every SoftwareComponent has an optional Dependencies. Taken together, this describes the constraints on a schedule for a coupled model. The actual schedule that is used will be described elsewhere. I have added a "schedule" element to a Deployment/Parallelisation? but it is tagged as "unused" and so does not appear in the APPCIM.
  • r2385 added a ComponentLanguage class. This describes the programming language that a SoftwareComponent is written in. There is an assumption that all EntryPoints use the same programming language. A ComponentLanguage has a name and a set of ComponentLanguageProperties. These are basically name/value pairs. They allow a user to specify language-specific attributes. For example, in the case of Fortran, properties might include "reserved units" or "reserved names."
  • r2386 Allowed for multiple component types.
  • r2387 removed instanceID from DataSource (previously added that at r2357). Instead created a new class, CouplingEndPoint and included an optional instanceID there. CouplingEndPoint is used as the source/target of a coupling. It also includes a reference to a DataSource. Associating an instanceID with a DataSource is needed by BFG to distinguish which particular instance is being coupled in case the same DataSource is used more than once in a composition. For consistency's sake, I also created a ConnectionEndPoint class which has an optional instanceID and a reference to a DataSource. It is unlikely that instanceID would be used at the level of a connection.
  • r2388 added a new boolean attribute, variableRate, to Timing. Also made Timing/rate optional. If variable rate is "true," then rate should not be specified.
  • r2389 A method for linking an EntryPoint with its arguments (ComponentProperties) was needed; I added a set of references to ComponentProperties to the EntryPoint class.
  • r2390 ComponentProperties, NumericalProperties, and ScientificProperties have been made optional and the sets of ComponentProperty that they contain have been made required (1..*), rather than the other way around. This was requested by Cerfacs. It is not necessary, but it does make things clearer.
  • r2391 cardinality of compiler in MachineCompilerUnit (used as "unit" element of a platform) changed from [1..*] to [0..*] so that users don't have to specify the full details of the compilers on each machine.
  • r2392 allowed for multiple "rank" elements in a parallelisation element. This is a requirement of OASIS.
  • r2411 created a separate Rank class to use in parallelisation. Rank has a rankMin, rankMax, rankIncrement, and rankValue. This is all needed by OASIS.
  • r2412 platform within deployment has been made optional. This is needed by OASIS which requires parallisation information, but not necessarily platform information.
  • r2425 added instances of CouplingProperty and ConnectionProperty to CouplingEndPoint and ConnectionEndPoint respectively. This is a place to describe transformations that are specific to a coupling/connection source or target. This was required by OASIS.
  • r2426 changed name of "source" in Coupling/ConnectionEndPoint to "dataSource." It was confusing to have an XML structure like: coupling/couplingTarget/source.
  • r2486 All "references" within the grids package have been renamed "citations" to maintain consistency with other packages. This was done in response to ticket #911.
  • r2529 Made several grid attributes optional as per ticket #912
  • r2532 changed type of DataObject/citation/citation from the ISO class gmd:CI_Citation_PropertyType to just gmd:CI_Citation_Type (this changed stemmed from ticket #848)
  • r2533 changed several types in the Grid Package from gml:PointPropertyType to just gml:PointType (this change stemmed from ticket #848)
  • r2543 Added a new ChangePropertyType called "Unused." This is in response to ticket #922 which requested a "component off" type of modification. This new feature will allow users to specify that something has been modified by no longer being used.
  • r2567 CIM_Measure is now being used w/in Quality Package
  • r2568 CIMRecord has been deprececated and CIMRecordSet has been renamed to CIMDocumentSet (in response to tickets #901 and #487)
  • r2569 made the APPCIM namespace a parameter to be passed to the concim2appcim code. The value of that parameter should correspond to the actual location of the CIM schemas.
  • r2571 changed the namespace parameter back to '' so that CIM tools don't need to be changed until a new server location for the CIM is deployed.
  • r2632 made dataObject/@dataStatus optional - since the Questionnaire does not ask for this information.
  • r2633 added refinementScheme attribute to gridTile and gridMosaic as per ticket #890
  • r2635 added custom dateTime type so that users can specify either a standard dateTime, just a date, or just a year (as per ticket #803)
  • r2636 rationalised the use of calendar/duration/requiredDuration/etc. as required by ticket #830. The "calendar" element remains, "duration" has been removed, "requiredDuration" has moved into a SpatioTemporalConstraint, and "outputPeriod" has moved into a new class "OutputConstraint?." That new class is of type NumericalRequirement and has been added in response to ticket #744. Some of the content that was in SpatioTemporalConstraint has moved into OutputConstraint.
  • r2637 renamed OutputConstraint to OutputRequirement.
  • r2638 added optional "type" attribute to an entrypoint (this is primarily for ESMF models which require a subroutine to be labelled as "init," "run," or "finalise.")
  • r2640 duration attribute added to abstract DateRange class; primarily this is to allow NumericalExperiments to specify their required durations as a SpatioTemporalConstraint.
  • r2641 replaced separate startPoint, endPoint, and duration of a SimulationRun or SimulationComposite with a DateRange which (as of r2640) includes all three.
  • r2642 the <<abstract>> stereotype of PropertyGroup was removed. Because there were no other classes that specialised it, while it was abstract the concim2appcim code (rightfully) never implemented it. This meant that wherever it appeared in the CIM, it had no child elements and hence no content (since abstract classes are implemented as choices among all of their specialisations). Now it has the appropriate content.
  • r2644 removed the explicit "id" and "version" attribute of a GridSpec since, as a <<document>> it gets those anyway. This was done in response to a request made in ticket #870.
  • r2645 removed dataHolder from NumericalActivity. It was there in case we needed to specify the dataHolder before any DataObjects have been created. As pointed out in ticket #870, however, there ought to be "an empty associated data record, rather than attributes of non-existing data tacked onto the numerical activity."
  • r2647 added content to CIM_FeatureType enumeration in quality package. Content includes "file" and "diagnostic." More are surely needed.
  • r2673 modified concim2appcim.xsl to recognise specialisations of non-abstract classes. Previously, if a class had an association to another class that was a generalisation of yet other classes. Then those specialisations would only be added if the generalised class were abstract; now it generates an xs:choice element for the generalised class and all specialisations. For example, a simulation's conformance can now be a Conformance or a PhysicalModification.
  • r2674 changed concim2appcim.xsl again so that the xs:choice element is preceded by the roleName/associationName.
  • r2676 modified concim2appcim.xsl to handle cases where abstract classes have specialisations that are themselves abstract or generalisations of other classes. This makes the AbstractTemplate "function" recursive. The former case can be seen in the use of DataSource (found in coupling/connection endPoints); it used to be serialised into a choice between DataObject, DataContent, ComponentProperty, and SoftwareComponent. Now it offers a choice of ModelComponent or ProccessorComponent instead of SoftwareComponent. The latter case is not currently used in the CIM, but the transformation code supports it.
  • r2764 made assimilation a document.
  • r2765 made endDate optional in ClosedDateRange. Instead, this concept can be described using a startDate and the duration.
  • r2767 restructured HorizontalResolution as per ticket #903; a HorizontalResolution has changed from a string to a class with a string description and a set of properties.
  • r2768 a new ConformanceType <enumeration> class has been created. a type attribute of this class has been added to conformance. This was all in support of ticket #893.
  • r2776 restructured VerticalResolution to mirror HorizontalResolution.
  • r2781 restructured GridTile/zCoords; A new class, VerticalCoordList, which specialises CoordList, has been created. This has a coordinateType and coordinateForm attribute, both bound to enumerations, and an optional set of GridProperties.
  • r2782 renamed CIM namespace to use purl: "" This satisfies part of ticket #908, it only remains to actually setup the purl reference
  • r2784 added another enumeration ("depth") to VerticalCoordinateFormTypeEnum.
  • r2807 re-ordered subelements in APPCIM (was mistakenly lexically ordered; is now their natural order as defined by the CONCIM)
  • r2808 added compilerType to Compiler class. (CompilerType codelist already existed, it just somehow wasn't part of the Compiler class).
  • r2809 changed experimentNumber to experimentID (of type Identifier which gets translated to xs:token).
  • r2811 compilerType made optional.
  • r2812 updated documentation.
  • r2816 Added new enumerated types to the grids package.
  • r2826 made externalIDs not controlled vocabularies. This was done in response to confusion over how to record a DRS, but it's a good idea anyway.
  • r2829 Changed externalIDs (StandardName) again; all of these changes are informed by ticket #965. A StandardName is now a special type of CodeList - one that isn't bound to a CV. So a CV has the following structure:
    <element open="true" value="myCVTerm">
        <description>this is an example of a CV</description>
    and a StandardName has the following similar structure:
    <element open="true" value="myStandardTerm">
        <description>this is an example of a standard name</description>
  • r2830 Added an "open" attribute to StandardName just like that of CVs. Where a tagged_value of "open" exists in the CONCIM, it is mapped to this required attribute in the APPCIM.
  • r2832 added new terms to the enumeration ExperimentRelationships as per ticket #957.
  • r2845 updated CIM namespace as per ticket #908 (now has the term "schemas" after the version)
  • r2846 renamed ExperimentRelationship enumerations as per ticket #957
  • r2847 updated CIM namespaces again (now uses the structure "" instead of just "")
  • r2863 made sourceSimulation in DataObject optional
  • r2907 added "spherical_harmonics" as a grid discretization type
  • r2908 last revision accidentally reverted to lexical ordering of attributes; changing them back in this revision
  • r2912 made spatialRegriddingDimension optional, added more enumerations to spatialRegriddingStandardMethod optional, also made timeProfile/@variableRate optional

list of CIM v1.5 tickets:

Ticket Status Owner Summary
#664 closed allyn vocab difference between cmip5 questionnaire and CIM schema
#709 closed allyn CIM v1.5
#711 closed allyn review whether any CVs should _not_ be extensible
#901 closed allyn CIMRecordSet to be renamed and CIMRecord to be deprecated