source: TI01-discovery/trunk/schema/numsim/NumSim.xsd @ 2189

Subversion URL:
Revision 2189, 19.6 KB checked in by lawrence, 15 years ago (diff)

Minor modifications to NumSim schema (now v8.001) to support linking
between codebase and experiments. Needs checking with real documents.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
1<?xml version="1.0" encoding="UTF-8"?>
2<xs:schema xmlns:xs="" xmlns:xlink=""
3    xmlns:gco="" xmlns:gmd=""
4    xmlns:moles="" version="00801">
5    <xs:annotation>
6        <xs:documentation>Author: Bryan Lawrence; Version Date: Feb 20, 2007</xs:documentation>
7        <xs:documentation> Previous Version: Bryan Lawrence, May 10th, 2006 </xs:documentation>
8        <xs:documentation>The expectation is that this schema will be used initially by import into
9            discovery records (ideally ISO19115 based). While such discovery records already include
10            adequate possibilities to include free text information and/or URI references which
11            would allow such discrimination for a human reader, they do not allow the construction
12            of sensible automatic discriminants, which would allow a software agent to identify, for
13            example, all simulation datasets based on the IPCC SRESA1 forcing specification by the
14            HADCM3 model. Such a software agent is necessary to provide meaningful discovery
15            services on an archive holding multiple simulation datasets, and thus, there is a
16            requirement to build information structures to support such software agents. The NumSim
17            schema provides a minimum set of such metadata structures aimed at supporting the widest
18            possible set of simulation codes. It is expected that more detailed discipline specific
19            metadata schema will exist, such as the Numerical Model Metadata Suite (hereafter the
20            NMM). Where such schema and instances exist, it is desirable that the NumSim instances
21            are automatically generated from the more detailed metadata. </xs:documentation>
22        <xs:documentation>The NumSim schema exists in a context where NumSim compliant xml metadata
23            is to included in a document conforming to an (extensible) parent schema. That parent
24            schema is assumed to have adequate tags to fully describe the data produced by the
25            simulation, the point of the NumSim metadata is to discriminate between such datasets,
26            as a consequence all dataset description is offloaded to the parent schema, but there
27            are some tags which might appear in both the parent and the NumSim schema. In such a
28            case, the scope of the tag in the NumSim schema is simply the scope of the parent
29            element, while the scope of the tag in the parent document should be assumed to be
30            either that of the parent element, or in regard to the data, not the simulation. (For
31            example, reference lists may appear in multiple places in a discovery document, but
32            their scope and applicability is related to where they appear. By doing this it is
33            possible to search for datasets created by simulations with a particular model component
34            which was described in a particular reference.</xs:documentation>
35        <xs:documentation>The simulated element is intended to appear as part of a dataset
36            description, and is used to discriminate between differing simulations of the same
37            phenomena. There are essentially three different cases where it is expected be used, and
38            for which it has been designed: (1) Where the dataset consists of one realization of the
39            simulated phenomena (a single integration of a numerical code). (2) Where the dataset
40            consists of multiple realizations of the phenomena (an ensemble), and (3) Where the
41            dataset consists of a single realization of the simulated phenomena, but where that
42            realization has been generated from an ensemble average (an ensemble “climatology”). </xs:documentation>
43        <xs:documentation>There are a number of schema which are imported here, copies of which are
44            loaded into a directory of schema. These include xlinks.xsd and a number of draft
45            ISO19139 schema components. </xs:documentation>
46    </xs:annotation>
47    <xs:import namespace=""
48        schemaLocation="../"/>
49    <xs:import namespace=""
50        schemaLocation="../iso19139/gml3.1.1version/gco/gco.xsd"/>
51    <xs:import namespace=""
52        schemaLocation="../iso19139/gml3.1.1version/gmd/citation.xsd"/>
53    <xs:import namespace=""
54        schemaLocation=""/>
55    <xs:attributeGroup name="NS_xlink">
56        <xs:annotation>
57            <xs:documentation> The attributes are those of a hyperlink, with the addition of a role
58                which we might later want to control in a vocabulary</xs:documentation>
59        </xs:annotation>
60        <xs:attribute ref="xlink:href" use="required"/>
61        <xs:attribute ref="xlink:title" use="required"/>
62        <xs:attribute ref="xlink:role" use="optional"/>
63        <xs:attribute name="dateOfCitation" type="gco:Date_Type" use="optional"/>
64    </xs:attributeGroup>
65    <xs:complexType name="NS_Link">
66        <xs:all>
67            <xs:element name="NS_NumSimDoc" type="moles:dgMetadataIDType" minOccurs="0"/>
68        </xs:all>
69        <xs:attributeGroup ref="NS_xlink"/>
70    </xs:complexType>
71    <xs:complexType name="NS_RelatedTo">
72        <xs:annotation>
73            <xs:documentation> Used for any relationships.</xs:documentation>
74        </xs:annotation>
75        <xs:sequence>
76            <xs:element name="NS_Relationship" minOccurs="1" maxOccurs="1" type="xs:string"/>
77            <xs:element name="NS_LinkTarget" type="NS_Link"/>
78        </xs:sequence>
79    </xs:complexType>
80    <xs:complexType name="NS_Description" mixed="true">
81        <xs:sequence>
82            <xs:element name="NS_RelatedURI" type="NS_RelatedTo" minOccurs="0" maxOccurs="unbounded"
83            />
84        </xs:sequence>
85    </xs:complexType>
86    <xs:complexType name="NS_ReferenceList">
87        <xs:choice>
88            <xs:sequence>
89                <xs:annotation>
90                    <xs:documentation> An URI can be provided to allow an index of references to be
91                        constructed. This is included to allow strings which reference publications
92                        differently to, for example, share the same DOI, and be indexed on these
93                        strings rather than (or as well as) the reference string content itself.
94                    </xs:documentation>
95                </xs:annotation>
96                <xs:element name="NS_Reference" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
97                <xs:sequence minOccurs="0">
98                    <xs:element name="NS_URI" type="xs:string" minOccurs="1" maxOccurs="1"/>
99                    <xs:element name="NS_URIScheme" type="xs:string" minOccurs="1" maxOccurs="1"/>
100                </xs:sequence>
101            </xs:sequence>
102            <xs:element name="NS_Citation" type="gmd:CI_Citation_Type" minOccurs="1"
103                maxOccurs="unbounded"/>
104        </xs:choice>
105    </xs:complexType>
106    <xs:complexType name="NS_ControlledParameters">
107        <xs:sequence>
108            <xs:element name="NS_NamespaceURI" type="xs:anyURI">
109                <xs:annotation>
110                    <xs:documentation>Rather than rely on including xml namespaces, which can be
111                        done in the element values below, we've also allowed an explicitly labelled
112                        link to such namespaces, and to namespaces which are not XML
113                    namespaces.</xs:documentation>
114                </xs:annotation>
115            </xs:element>
116            <xs:element name="NS_Value" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
117        </xs:sequence>
118    </xs:complexType>
119    <xs:simpleType name="NS_InitialConditionTypes" id="NumSim_InitialConditionTypes_007">
120        <xs:restriction base="xs:string">
121            <xs:enumeration value="Objective Analysis"/>
122            <xs:enumeration value="Assimilation Analysis"/>
123            <xs:enumeration value="Unknown"/>
124            <xs:enumeration value="Climatology"/>
125            <xs:enumeration value="Random"/>
126        </xs:restriction>
127    </xs:simpleType>
128    <xs:simpleType name="NS_ModelComponents">
129        <xs:annotation>
130            <xs:documentation>This the controlled vocabulary for the various model sub components
131                which might be able to run independently but could be coupled</xs:documentation>
132        </xs:annotation>
133        <xs:restriction base="xs:string" id="NumSIm_ModelComponents_007">
134            <xs:enumeration value="Atmosphere"/>
135            <xs:enumeration value="Ocean"/>
136            <xs:enumeration value="Cryosphere"/>
137            <xs:enumeration value="LandSurface"/>
138            <xs:enumeration value="Chemistry"/>
139            <xs:enumeration value="Aerosol"/>
140            <xs:enumeration value="Coupler"/>
141        </xs:restriction>
142    </xs:simpleType>
143    <xs:simpleType name="NS_ModelCategories">
144        <xs:annotation>
145            <xs:documentation>This the controlled vocabulary that categorises how the model is set
146                up</xs:documentation>
147        </xs:annotation>
148        <xs:restriction base="xs:string" id="NumSim_ModelCategories_007">
149            <xs:enumeration value="GCM"/>
150            <xs:enumeration value="Standalone"/>
151            <xs:enumeration value="Idealised"/>
152            <xs:enumeration value="Energy Balance"/>
153            <xs:enumeration value="Assimilation"/>
154            <xs:enumeration value="Beta-plane"/>
155            <xs:enumeration value="Aqua-planet"/>
156            <xs:enumeration value="Column Mean"/>
157            <xs:enumeration value="Slab"/>
158            <xs:enumeration value="Trajectory"/>
159        </xs:restriction>
160    </xs:simpleType>
161    <xs:simpleType name="NS_BoundaryConditionNames">
162        <xs:annotation>
163            <xs:documentation>This the controlled vocabulary for Forcing
164            Specifications</xs:documentation>
165        </xs:annotation>
166        <xs:restriction base="xs:string" id="NumSim_BoundaryConditionTypes_007">
167            <xs:enumeration value="IPCC SRES A1"/>
168            <xs:enumeration value="IPCC SRES A2"/>
169            <xs:enumeration value="IPCC SRES B1"/>
170            <xs:enumeration value="IPCC SRES B2"/>
171            <xs:enumeration value="IS92A"/>
172            <xs:enumeration value="Preindustrial"/>
173            <xs:enumeration value="Present Day"/>
174            <xs:enumeration value="Double Preindustrial"/>
175            <xs:enumeration value="Double Present Day"/>
176            <xs:enumeration value="Background"/>
177            <xs:enumeration value="Historical"/>
178            <xs:enumeration value="% per annum increase"/>
179            <xs:enumeration value="Lateral Boundary Global Model"/>
180            <xs:enumeration value="User Specified"/>
181        </xs:restriction>
182    </xs:simpleType>
183    <xs:simpleType name="NS_EnsembleTypes">
184        <xs:annotation>
185            <xs:documentation>This the controlled vocabulary for the types of ensemble. Note that a
186                Grand ensemble is a combination of two or more other ensemble
187            types.</xs:documentation>
188        </xs:annotation>
189        <xs:restriction base="xs:string" id="NumSim_EnsembleTypes_007">
190            <xs:enumeration value="Initial Condition"/>
191            <xs:enumeration value="Perturbed Physics"/>
192            <xs:enumeration value="Arbitrary Collection"/>
193            <xs:enumeration value="Single Model"/>
194            <xs:enumeration value="Multiple Model"/>
195            <xs:enumeration value="Multiple Forcing"/>
196            <xs:enumeration value="Grand"/>
197        </xs:restriction>
198    </xs:simpleType>
199    <xs:complexType name="NS_InitialCondition" mixed="false">
200        <xs:annotation>
201            <xs:documentation> Multiple initial condition elements can appear to cover how different
202                parts of the model system were initialized. If present, the main requirement is that
203                the initial condition be described in the description element and those parameters
204                which are controlled by the initial condition be identified if possible. Failing a
205                description (or as well as) the type attribute can identify the sort of initial
206                condition from the InitialConditionTypes controlled vocabulary.</xs:documentation>
207            <xs:documentation> Where the initial condition is in fact a perturbed version of the
208                “real” values for the starting time (perhaps as part of an ensemble), the perturbed
209                Boolean attribute can be set true (the default is false). Where the perturbation is
210                physically meaningful (for example, using singular vectors), this can be indicated
211                in the description. </xs:documentation>
212        </xs:annotation>
213        <xs:sequence>
214            <xs:element name="NS_Description" type="NS_Description" minOccurs="0" maxOccurs="1"/>
215            <xs:element name="NS_ControlledParameters" type="NS_ControlledParameters" minOccurs="0"
216                maxOccurs="unbounded"/>
217            <xs:element name="NS_References" type="NS_ReferenceList" minOccurs="0" maxOccurs="1"/>
218        </xs:sequence>
219        <xs:attribute name="NS_Type" type="NS_InitialConditionTypes"/>
220        <xs:attribute name="NS_Perturbed" type="xs:boolean"/>
221    </xs:complexType>
222    <xs:complexType name="NS_BoundaryCondition">
223        <xs:sequence>
224            <xs:element name="NS_Description" type="NS_Description" minOccurs="1"/>
225            <xs:element name="NS_ControlledParameters" type="NS_ControlledParameters" minOccurs="0"
226                maxOccurs="unbounded"/>
227            <xs:element name="NS_References" type="NS_ReferenceList" minOccurs="0" maxOccurs="1"/>
228            <xs:element name="NS_BoundaryDataset" type="NS_RelatedTo" minOccurs="0" maxOccurs="1"/>
229        </xs:sequence>
230        <xs:attribute name="NS_Type" type="NS_BoundaryConditionNames"/>
231    </xs:complexType>
232    <xs:complexType name="NS_EnsembleDetails">
233        <xs:annotation>
234            <xs:documentation>If not present, the default assumption should be that the simulation
235                is a single realization. If present, the attribute can identify that the data
236                represents an ensemble climatology by setting the Boolean EnsembleStatistics to
237                True, otherwise the default is that the data are multiple realizations. This element
238                may include multiple EnsembleType elements, which are drawn from the EnsembleTypes
239                controlled vocabulary: o Initial Condition o Perturbed Physics o Arbitrary
240                Collection o Single Mode o Multiple Model o Multiple Forcing o GrandEnsemble (any
241                combination of the others, in which case the exact combination should be recorded in
242                the EnsembleDescription element - itself including both a textural component and an
243                optional related URI for more information). If only one integration is included,
244                just one model element should be used. Whether an ensemble or a single integration
245                is described by this element, multiple boundary and initial conditions elements are
246                allowed (in the case of single integrations to support multiple components of the
247                model having different initial and/or boundary conditions, and for ensembles to
248                potentially include multiple boundary conditions associated with multiple forcings).
249                (Note that more complex ensemble statistics, such as, for example probability
250                distribution functions, are likely to be more fully described by the data
251                attributes, this attribute is simply used to aid users in finding ensemble averages
252                and avoid them being mistaken for instances and used inappropriately).
253            </xs:documentation>
254        </xs:annotation>
255        <xs:sequence>
256            <xs:element name="NS_EnsembleDescription" type="NS_Description" minOccurs="0"
257                maxOccurs="1"/>
258            <xs:element name="NS_EnsembleType" type="NS_EnsembleTypes" minOccurs="1"
259                maxOccurs="unbounded"/>
260        </xs:sequence>
261        <xs:attribute name="NS_EnsembleStatistics" type="xs:boolean" default="0"/>
262    </xs:complexType>
263    <xs:complexType name="NS_Model">
264        <xs:annotation>
265            <xs:documentation> The NS_Model complex type is used to both as the type of the overall
266                model description (forming a compulsory element within the NumSIm element itself),
267                and as the type of any sub component of that model. </xs:documentation>
268        </xs:annotation>
269        <xs:sequence>
270            <xs:element name="NS_Name" type="xs:string" minOccurs="1" maxOccurs="1"/>
271            <xs:element name="NS_Category" type="NS_ModelCategories" minOccurs="0"
272                maxOccurs="unbounded"/>
273            <xs:element name="NS_ComponentType" type="NS_ModelComponents" minOccurs="0"
274                maxOccurs="unbounded"/>
275            <xs:element name="NS_Description" type="NS_Description" minOccurs="0" maxOccurs="1"/>
276            <xs:element name="NS_Resolution" type="NS_Description" minOccurs="0" maxOccurs="1"/>
277            <xs:element name="NS_RelatedModel" type="NS_RelatedTo" minOccurs="0"
278                maxOccurs="unbounded"/>
279            <xs:element name="NS_References" type="NS_ReferenceList" minOccurs="0" maxOccurs="1"/>
280            <xs:element name="NS_Component" type="NS_Model" minOccurs="0" maxOccurs="unbounded"/>
281        </xs:sequence>
282    </xs:complexType>
283    <xs:complexType name="NS_CodeBase">
284        <xs:choice>
285            <xs:sequence>
286                <xs:element name="NS_ID" type="moles:dgMetadataIDType"/>
287                <xs:element name="NS_Description" type="NS_Description"/>
288                <xs:element name="NS_Model" type="NS_Model" minOccurs="1" maxOccurs="unbounded"/>
289            </xs:sequence>
290            <xs:element name="NS_ExternalCodeBase" type="NS_Link">
291                <xs:annotation>
292                    <xs:documentation>It is assumed that the consumer of this document can parse
293                        this ID locate it, and populate the contents as appropriate. At some future
294                        version we might use an xlink here.</xs:documentation>
295                </xs:annotation>
296            </xs:element>
297        </xs:choice>
298    </xs:complexType>
299    <xs:complexType name="NS_Experiment">
300        <xs:annotation>
301            <xs:documentation>Used to define how the codebase has been used. Note that the
302                NS_ParentEnsemble can be used when an integration is available as in independant
303                dataset to point back to the parent ensemble dataset.</xs:documentation>
304        </xs:annotation>
305        <xs:sequence>
306            <xs:element name="NS_ID" type="moles:dgMetadataIDType"/>
307            <xs:element name="NS_Description" type="NS_Description"/>
308            <xs:element name="NS_BoundaryCondition" type="NS_BoundaryCondition" minOccurs="0"
309                maxOccurs="unbounded"/>
310            <xs:element name="NS_InitialCondition" type="NS_InitialCondition" minOccurs="0"
311                maxOccurs="unbounded"/>
312            <xs:element name="NS_Ensemble" type="NS_EnsembleDetails" minOccurs="0" maxOccurs="1"/>
313            <xs:element name="NS_ParentEnsemble" type="NS_RelatedTo" minOccurs="0"
314                maxOccurs="unbounded"/>
315        </xs:sequence>
316    </xs:complexType>
317    <xs:complexType name="NS_NumSim">
318        <xs:sequence>
319            <xs:element name="NS_CodeBase" type="NS_CodeBase"/>
320            <xs:element name="NS_Experiment" type="NS_Experiment"/>
321        </xs:sequence>
322    </xs:complexType>
323    <xs:element name="NS_Simulated" type="NS_NumSim"/>
Note: See TracBrowser for help on using the repository browser.