bcl 0.5.9 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +21 -0
  3. data/.rubocop.yml +8 -0
  4. data/CHANGELOG.md +79 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE.md +27 -0
  7. data/README.md +40 -0
  8. data/Rakefile +347 -0
  9. data/bcl.gemspec +48 -0
  10. data/lib/bcl/base_xml.rb +31 -15
  11. data/lib/bcl/component.rb +32 -16
  12. data/lib/bcl/component_from_spreadsheet.rb +37 -23
  13. data/lib/bcl/component_methods.rb +52 -38
  14. data/lib/bcl/core_ext.rb +31 -15
  15. data/lib/bcl/tar_ball.rb +31 -15
  16. data/lib/bcl/version.rb +32 -16
  17. data/lib/bcl.rb +37 -4
  18. data/schemas/v2/component_2012_11_08.xsd +291 -0
  19. data/schemas/v2/measure_2013_3_26.xsd +153 -0
  20. data/schemas/v3/common_bcl_v3.xsd +422 -0
  21. data/schemas/v3/component_v3.xsd +445 -0
  22. data/schemas/v3/measure_v3.xsd +496 -0
  23. metadata +102 -81
  24. data/lib/bcl/component_spreadsheet.rb +0 -287
  25. data/lib/bcl/master_taxonomy.rb +0 -528
  26. data/lib/files/downloads/40237ee0-5ea7-0130-ad9b-14109fdf0b37.tar.gz +0 -0
  27. data/lib/files/staged/components/Asphalt_Shingles_1_8_in/Asphalt_Shingles_1_8_in.tar.gz +0 -0
  28. data/lib/files/staged/components/Asphalt_Shingles_1_8_in/component.xml +0 -81
  29. data/lib/files/staged/components/Built_up_Roofing_3_8_in/Built_up_Roofing_3_8_in.tar.gz +0 -0
  30. data/lib/files/staged/components/Built_up_Roofing_3_8_in/component.xml +0 -76
  31. data/lib/files/staged/components/Metal_Surface_1_16_in/Metal_Surface_1_16_in.tar.gz +0 -0
  32. data/lib/files/staged/components/Metal_Surface_1_16_in/component.xml +0 -76
  33. data/lib/files/staged/components/Shingle_Backer_1_4_in/Shingle_Backer_1_4_in.tar.gz +0 -0
  34. data/lib/files/staged/components/Shingle_Backer_1_4_in/component.xml +0 -81
  35. data/lib/files/staged/components/Shingle_Backer_3_8_in/Shingle_Backer_3_8_in.tar.gz +0 -0
  36. data/lib/files/staged/components/Shingle_Backer_3_8_in/component.xml +0 -81
  37. data/lib/files/staged/components/Wood_Shingles_1_4_in/Wood_Shingles_1_4_in.tar.gz +0 -0
  38. data/lib/files/staged/components/Wood_Shingles_1_4_in/component.xml +0 -81
  39. data/lib/files/staged/gather/1/Asphalt_Shingles_1_8_in.tar.gz +0 -0
  40. data/lib/files/staged/gather/1/Built_up_Roofing_3_8_in.tar.gz +0 -0
  41. data/lib/files/staged/gather/1/Metal_Surface_1_16_in.tar.gz +0 -0
  42. data/lib/files/staged/gather/1/Shingle_Backer_1_4_in.tar.gz +0 -0
  43. data/lib/files/staged/gather/1/Shingle_Backer_3_8_in.tar.gz +0 -0
  44. data/lib/files/staged/gather/1/Wood_Shingles_1_4_in.tar.gz +0 -0
  45. data/lib/files/staged/gather/components_1.tar.gz +0 -0
@@ -0,0 +1,153 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- edited with XMLSpy v2010 rel. 3 (http://www.altova.com) by Cynthia McDonald (NREL) -->
3
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
4
+ <xs:annotation>
5
+ <xs:documentation>Measure.xsd describes the measures that are in the building component library or NREL analysis platform library.</xs:documentation>
6
+ </xs:annotation>
7
+ <xs:annotation>
8
+ <xs:documentation>Version - 0.1</xs:documentation>
9
+ </xs:annotation>
10
+ <xs:element name="measure">
11
+ <xs:annotation>
12
+ <xs:documentation>root element defining a measure</xs:documentation>
13
+ </xs:annotation>
14
+ <xs:complexType>
15
+ <xs:sequence>
16
+ <xs:element name="name">
17
+ <xs:annotation>
18
+ <xs:documentation>name of the measure</xs:documentation>
19
+ </xs:annotation>
20
+ </xs:element>
21
+ <xs:element name="uid"/>
22
+ <xs:element name="version_id">
23
+ <xs:annotation>
24
+ <xs:documentation>this is used to signal that a new measure is available and should replace previously downloaded measures</xs:documentation>
25
+ </xs:annotation>
26
+ </xs:element>
27
+ <xs:element name="description" minOccurs="0">
28
+ <xs:annotation>
29
+ <xs:documentation>free-form description of the measure, will be used for search</xs:documentation>
30
+ </xs:annotation>
31
+ </xs:element>
32
+ <xs:element name="modeler_description">
33
+ <xs:annotation>
34
+ <xs:documentation>description containing specific details about the script file</xs:documentation>
35
+ </xs:annotation>
36
+ </xs:element>
37
+ <xs:element name="provenances">
38
+ <xs:complexType>
39
+ <xs:sequence>
40
+ <xs:element name="provenance" minOccurs="0" maxOccurs="unbounded">
41
+ <xs:annotation>
42
+ <xs:documentation>provenance is used to enter author information. The comment field can be used to enter information such as project name.</xs:documentation>
43
+ </xs:annotation>
44
+ <xs:complexType>
45
+ <xs:sequence>
46
+ <xs:element name="author" type="xs:string">
47
+ <xs:annotation>
48
+ <xs:documentation>author who uploaded the data, which will be equal to the user account on the bcl site</xs:documentation>
49
+ </xs:annotation>
50
+ </xs:element>
51
+ <xs:element name="datetime" type="xs:dateTime">
52
+ <xs:annotation>
53
+ <xs:documentation>date measure was uploaded</xs:documentation>
54
+ </xs:annotation>
55
+ </xs:element>
56
+ <xs:element name="comment" minOccurs="0"/>
57
+ </xs:sequence>
58
+ </xs:complexType>
59
+ </xs:element>
60
+ <xs:element name="provenance_required">
61
+ <xs:simpleType>
62
+ <xs:restriction base="xs:string">
63
+ <xs:enumeration value="true"/>
64
+ <xs:enumeration value="false"/>
65
+ </xs:restriction>
66
+ </xs:simpleType>
67
+ </xs:element>
68
+ </xs:sequence>
69
+ </xs:complexType>
70
+ </xs:element>
71
+ <xs:element name="tags">
72
+ <xs:annotation>
73
+ <xs:documentation>tags are used to classify the measure (using the measures taxonomy)</xs:documentation>
74
+ </xs:annotation>
75
+ <xs:complexType>
76
+ <xs:sequence>
77
+ <xs:element name="tag" maxOccurs="unbounded"/>
78
+ </xs:sequence>
79
+ </xs:complexType>
80
+ </xs:element>
81
+ <xs:element name="attributes">
82
+ <xs:annotation>
83
+ <xs:documentation>attributes are descriptors of the measure. Measures will most likely have a measure type attribute (Replacement/Addition/ Removal)</xs:documentation>
84
+ </xs:annotation>
85
+ <xs:complexType>
86
+ <xs:sequence>
87
+ <xs:element name="os_version" minOccurs="0"/>
88
+ <xs:element name="attribute" minOccurs="0" maxOccurs="unbounded">
89
+ <xs:complexType>
90
+ <xs:sequence>
91
+ <xs:element name="name"/>
92
+ <xs:element name="value" type="xs:string"/>
93
+ <xs:element name="datatype"/>
94
+ <xs:element name="units" minOccurs="0"/>
95
+ </xs:sequence>
96
+ </xs:complexType>
97
+ </xs:element>
98
+ </xs:sequence>
99
+ </xs:complexType>
100
+ </xs:element>
101
+ <xs:element name="files">
102
+ <xs:annotation>
103
+ <xs:documentation>files lists details on all of the files associated with this measure, including arguments for script files.</xs:documentation>
104
+ </xs:annotation>
105
+ <xs:complexType>
106
+ <xs:sequence>
107
+ <xs:element name="file" minOccurs="0" maxOccurs="unbounded">
108
+ <xs:complexType>
109
+ <xs:sequence>
110
+ <xs:element name="version">
111
+ <xs:complexType>
112
+ <xs:sequence>
113
+ <xs:element name="software_program"/>
114
+ <xs:element name="identifier"/>
115
+ </xs:sequence>
116
+ </xs:complexType>
117
+ </xs:element>
118
+ <xs:element name="filename" type="xs:string"/>
119
+ <xs:element name="usage_type">
120
+ <xs:annotation>
121
+ <xs:documentation>What type of file? (scripts, resources, tests)</xs:documentation>
122
+ </xs:annotation>
123
+ <xs:simpleType>
124
+ <xs:restriction base="xs:string">
125
+ <xs:enumeration value="scripts"/>
126
+ <xs:enumeration value="tests"/>
127
+ <xs:enumeration value="resources"/>
128
+ </xs:restriction>
129
+ </xs:simpleType>
130
+ </xs:element>
131
+ <xs:element name="filetype">
132
+ <xs:annotation>
133
+ <xs:documentation>extension of the file (osm, rb, etc)</xs:documentation>
134
+ </xs:annotation>
135
+ <xs:simpleType>
136
+ <xs:restriction base="xs:string">
137
+ <xs:enumeration value="resource"/>
138
+ <xs:enumeration value="test"/>
139
+ <xs:enumeration value="script"/>
140
+ </xs:restriction>
141
+ </xs:simpleType>
142
+ </xs:element>
143
+ <xs:element name="checksum" type="xs:string"/>
144
+ </xs:sequence>
145
+ </xs:complexType>
146
+ </xs:element>
147
+ </xs:sequence>
148
+ </xs:complexType>
149
+ </xs:element>
150
+ </xs:sequence>
151
+ </xs:complexType>
152
+ </xs:element>
153
+ </xs:schema>
@@ -0,0 +1,422 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- edited with XMLSpy v2008 rel. 2 sp2 (http://www.altova.com) by Daniel Macumber (NREL) -->
3
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
4
+ <xs:annotation>
5
+ <xs:documentation>Measure.xsd describes the measures that are in the building component library or NREL analysis platform library.</xs:documentation>
6
+ </xs:annotation>
7
+ <xs:element name="schema_version" fixed="3.0">
8
+ <xs:annotation>
9
+ <xs:documentation>schema version</xs:documentation>
10
+ </xs:annotation>
11
+ <xs:simpleType>
12
+ <xs:restriction base="xs:string"/>
13
+ </xs:simpleType>
14
+ </xs:element>
15
+ <xs:element name="uid" type="xs:string">
16
+ <xs:annotation>
17
+ <xs:documentation>universally unique identifier which does not chage each time a new version is created</xs:documentation>
18
+ </xs:annotation>
19
+ </xs:element>
20
+ <xs:element name="version_id" type="xs:string">
21
+ <xs:annotation>
22
+ <xs:documentation>universally unique identifier which changes each time a new version is created</xs:documentation>
23
+ </xs:annotation>
24
+ </xs:element>
25
+ <xs:element name="version_modified" type="xs:dateTime">
26
+ <xs:annotation>
27
+ <xs:documentation>timestamp at which the current version_id was created</xs:documentation>
28
+ </xs:annotation>
29
+ </xs:element>
30
+ <xs:element name="xml_checksum" type="xs:string">
31
+ <xs:annotation>
32
+ <xs:documentation>checksum of selected xml elements and attributes, used to detect changes to the xml</xs:documentation>
33
+ </xs:annotation>
34
+ </xs:element>
35
+ <xs:element name="error">
36
+ <xs:annotation>
37
+ <xs:documentation>record an error with this component or measure</xs:documentation>
38
+ </xs:annotation>
39
+ </xs:element>
40
+ <xs:element name="name" type="xs:string">
41
+ <xs:annotation>
42
+ <xs:documentation>snake cased machine readable name, e.g. 'my_name'</xs:documentation>
43
+ </xs:annotation>
44
+ </xs:element>
45
+ <xs:element name="display_name" type="xs:string">
46
+ <xs:annotation>
47
+ <xs:documentation>user facing name, e.g. 'My Name'</xs:documentation>
48
+ </xs:annotation>
49
+ </xs:element>
50
+ <xs:element name="description" type="xs:string">
51
+ <xs:annotation>
52
+ <xs:documentation>user facing description</xs:documentation>
53
+ </xs:annotation>
54
+ </xs:element>
55
+ <xs:element name="modeler_description" type="xs:string">
56
+ <xs:annotation>
57
+ <xs:documentation>technical description of the content's implementation details</xs:documentation>
58
+ </xs:annotation>
59
+ </xs:element>
60
+ <xs:element name="class_name" type="xs:string">
61
+ <xs:annotation>
62
+ <xs:documentation>for measures only. the name of the Ruby class implementing a measure</xs:documentation>
63
+ </xs:annotation>
64
+ </xs:element>
65
+ <xs:element name="arguments">
66
+ <xs:annotation>
67
+ <xs:documentation>for measures only. arguments are computed based on a particular model and passed to the measure at run time. actual values passed to the measure at run time are not captured here, only properties of the arguments </xs:documentation>
68
+ </xs:annotation>
69
+ <xs:complexType>
70
+ <xs:sequence>
71
+ <xs:element name="argument" minOccurs="0" maxOccurs="unbounded">
72
+ <xs:complexType>
73
+ <xs:sequence>
74
+ <xs:element ref="name"/>
75
+ <xs:element ref="display_name"/>
76
+ <xs:element ref="description" minOccurs="0"/>
77
+ <xs:element name="type">
78
+ <xs:annotation>
79
+ <xs:documentation>type of the argument</xs:documentation>
80
+ </xs:annotation>
81
+ <xs:simpleType>
82
+ <xs:restriction base="xs:string">
83
+ <xs:enumeration value="Boolean"/>
84
+ <xs:enumeration value="Double"/>
85
+ <xs:enumeration value="Integer"/>
86
+ <xs:enumeration value="String"/>
87
+ <xs:enumeration value="Choice"/>
88
+ <xs:enumeration value="Path"/>
89
+ </xs:restriction>
90
+ </xs:simpleType>
91
+ </xs:element>
92
+ <xs:element name="units" type="xs:string" minOccurs="0">
93
+ <xs:annotation>
94
+ <xs:documentation>units of the argument value in format parsable by OpenStudio::convert</xs:documentation>
95
+ </xs:annotation>
96
+ </xs:element>
97
+ <xs:element name="required" type="xs:boolean">
98
+ <xs:annotation>
99
+ <xs:documentation>true if the argument is required in order for the measure to run</xs:documentation>
100
+ </xs:annotation>
101
+ </xs:element>
102
+ <xs:element name="model_dependent" type="xs:boolean" default="false">
103
+ <xs:annotation>
104
+ <xs:documentation>true if any of this argument's properties depend on the specific model used. default_value, choice_values, min_value, and max_value will not be populated for dynamic arguments</xs:documentation>
105
+ </xs:annotation>
106
+ </xs:element>
107
+ <xs:element name="default_value" type="xs:anySimpleType" minOccurs="0">
108
+ <xs:annotation>
109
+ <xs:documentation>default value for the argument</xs:documentation>
110
+ </xs:annotation>
111
+ </xs:element>
112
+ <xs:element name="choices" minOccurs="0">
113
+ <xs:annotation>
114
+ <xs:documentation>list of allowable values</xs:documentation>
115
+ </xs:annotation>
116
+ <xs:complexType>
117
+ <xs:sequence>
118
+ <xs:element name="choice" maxOccurs="unbounded">
119
+ <xs:complexType>
120
+ <xs:sequence>
121
+ <xs:element name="value" type="xs:anySimpleType">
122
+ <xs:annotation>
123
+ <xs:documentation>allowable value</xs:documentation>
124
+ </xs:annotation>
125
+ </xs:element>
126
+ <xs:element name="display_name" type="xs:string">
127
+ <xs:annotation>
128
+ <xs:documentation>user facing name for value</xs:documentation>
129
+ </xs:annotation>
130
+ </xs:element>
131
+ </xs:sequence>
132
+ </xs:complexType>
133
+ </xs:element>
134
+ </xs:sequence>
135
+ </xs:complexType>
136
+ </xs:element>
137
+ <xs:element name="min_value" type="xs:anySimpleType" minOccurs="0">
138
+ <xs:annotation>
139
+ <xs:documentation>minimum value</xs:documentation>
140
+ </xs:annotation>
141
+ </xs:element>
142
+ <xs:element name="max_value" type="xs:anySimpleType" minOccurs="0">
143
+ <xs:annotation>
144
+ <xs:documentation>maximum value</xs:documentation>
145
+ </xs:annotation>
146
+ </xs:element>
147
+ </xs:sequence>
148
+ </xs:complexType>
149
+ </xs:element>
150
+ </xs:sequence>
151
+ </xs:complexType>
152
+ </xs:element>
153
+ <xs:element name="masterguide_csi_values">
154
+ <xs:annotation>
155
+ <xs:documentation>for components only. values from the MASTERSPEC</xs:documentation>
156
+ </xs:annotation>
157
+ <xs:complexType>
158
+ <xs:sequence>
159
+ <xs:element name="masterguide_csi_value" maxOccurs="unbounded"/>
160
+ </xs:sequence>
161
+ </xs:complexType>
162
+ </xs:element>
163
+ <xs:element name="source">
164
+ <xs:annotation>
165
+ <xs:documentation>for components only. source of the data (the origin of the component information)</xs:documentation>
166
+ </xs:annotation>
167
+ <xs:complexType>
168
+ <xs:sequence minOccurs="0">
169
+ <xs:element name="manufacturer" type="xs:string" minOccurs="0"/>
170
+ <xs:element name="model" minOccurs="0"/>
171
+ <xs:element name="serial_no" minOccurs="0"/>
172
+ <xs:element name="year" minOccurs="0"/>
173
+ <xs:element name="url" minOccurs="0"/>
174
+ </xs:sequence>
175
+ </xs:complexType>
176
+ </xs:element>
177
+ <xs:element name="provenances">
178
+ <xs:annotation>
179
+ <xs:documentation>provenance is used to enter author information. </xs:documentation>
180
+ </xs:annotation>
181
+ <xs:complexType>
182
+ <xs:sequence>
183
+ <xs:element name="provenance" minOccurs="0" maxOccurs="unbounded">
184
+ <xs:complexType>
185
+ <xs:sequence>
186
+ <xs:element name="author" type="xs:string">
187
+ <xs:annotation>
188
+ <xs:documentation>author who uploaded the content, will be equal to the user account on the bcl site</xs:documentation>
189
+ </xs:annotation>
190
+ </xs:element>
191
+ <xs:element name="datetime" type="xs:dateTime">
192
+ <xs:annotation>
193
+ <xs:documentation>date content was uploaded</xs:documentation>
194
+ </xs:annotation>
195
+ </xs:element>
196
+ <xs:element name="comment" type="xs:string" minOccurs="0">
197
+ <xs:annotation>
198
+ <xs:documentation>general comment</xs:documentation>
199
+ </xs:annotation>
200
+ </xs:element>
201
+ </xs:sequence>
202
+ </xs:complexType>
203
+ </xs:element>
204
+ </xs:sequence>
205
+ </xs:complexType>
206
+ </xs:element>
207
+ <xs:element name="tags">
208
+ <xs:annotation>
209
+ <xs:documentation>tags are used to classify the content within the appropriate taxonomy. currently only one tag per piece of content is supported.</xs:documentation>
210
+ </xs:annotation>
211
+ <xs:complexType>
212
+ <xs:sequence>
213
+ <xs:element name="tag" type="xs:string" maxOccurs="unbounded"/>
214
+ </xs:sequence>
215
+ </xs:complexType>
216
+ </xs:element>
217
+ <xs:element name="attributes">
218
+ <xs:annotation>
219
+ <xs:documentation>attributes are descriptors of the content. attributes should be found in the corresponding taxonomy</xs:documentation>
220
+ </xs:annotation>
221
+ <xs:complexType>
222
+ <xs:sequence>
223
+ <xs:element name="attribute" minOccurs="0" maxOccurs="unbounded">
224
+ <xs:complexType>
225
+ <xs:sequence>
226
+ <xs:element name="name" type="xs:string">
227
+ <xs:annotation>
228
+ <xs:documentation>user facing attribute name (should be found in appropriate taxonomy)</xs:documentation>
229
+ </xs:annotation>
230
+ </xs:element>
231
+ <xs:element name="value" type="xs:anySimpleType"/>
232
+ <xs:element name="datatype">
233
+ <xs:simpleType>
234
+ <xs:restriction base="xs:string">
235
+ <xs:enumeration value="float"/>
236
+ <xs:enumeration value="integer"/>
237
+ <xs:enumeration value="string"/>
238
+ <xs:enumeration value="boolean"/>
239
+ </xs:restriction>
240
+ </xs:simpleType>
241
+ </xs:element>
242
+ <xs:element name="units" type="xs:string" minOccurs="0"/>
243
+ </xs:sequence>
244
+ </xs:complexType>
245
+ </xs:element>
246
+ </xs:sequence>
247
+ </xs:complexType>
248
+ </xs:element>
249
+ <xs:element name="files">
250
+ <xs:annotation>
251
+ <xs:documentation>files lists details on all of the files associated with this piece content</xs:documentation>
252
+ </xs:annotation>
253
+ <xs:complexType>
254
+ <xs:sequence>
255
+ <xs:element name="file" minOccurs="0" maxOccurs="unbounded">
256
+ <xs:complexType>
257
+ <xs:sequence>
258
+ <xs:element name="version" minOccurs="0">
259
+ <xs:complexType>
260
+ <xs:sequence>
261
+ <xs:element name="software_program" type="xs:string">
262
+ <xs:annotation>
263
+ <xs:documentation>software program the file is associated with</xs:documentation>
264
+ </xs:annotation>
265
+ </xs:element>
266
+ <xs:element name="identifier" type="xs:string">
267
+ <xs:annotation>
268
+ <xs:documentation>version of software program that this file is associated with</xs:documentation>
269
+ </xs:annotation>
270
+ </xs:element>
271
+ <xs:element name="min_compatible" minOccurs="0">
272
+ <xs:annotation>
273
+ <xs:documentation>minimum version of the software this file is compatible with, if not specified assumed to be the version identifier</xs:documentation>
274
+ </xs:annotation>
275
+ </xs:element>
276
+ <xs:element name="max_compatible" minOccurs="0">
277
+ <xs:annotation>
278
+ <xs:documentation>maximum version of the software this file is compatible with, if not specified assumed to be any version min_compatible or higher</xs:documentation>
279
+ </xs:annotation>
280
+ </xs:element>
281
+ </xs:sequence>
282
+ </xs:complexType>
283
+ </xs:element>
284
+ <xs:element name="filename" type="xs:string">
285
+ <xs:annotation>
286
+ <xs:documentation>name of the file</xs:documentation>
287
+ </xs:annotation>
288
+ </xs:element>
289
+ <xs:element name="filetype" type="xs:string">
290
+ <xs:annotation>
291
+ <xs:documentation>ies, idf, </xs:documentation>
292
+ </xs:annotation>
293
+ </xs:element>
294
+ <xs:element name="usage_type">
295
+ <xs:annotation>
296
+ <xs:documentation>identifies the directory to search for the file in </xs:documentation>
297
+ </xs:annotation>
298
+ <xs:simpleType>
299
+ <xs:restriction base="xs:string">
300
+ <xs:enumeration value="script"/>
301
+ <xs:enumeration value="test"/>
302
+ <xs:enumeration value="resource"/>
303
+ </xs:restriction>
304
+ </xs:simpleType>
305
+ </xs:element>
306
+ <xs:element name="checksum" type="xs:string">
307
+ <xs:annotation>
308
+ <xs:documentation>checksum of the file as computed by OpenStudio::checksum</xs:documentation>
309
+ </xs:annotation>
310
+ </xs:element>
311
+ </xs:sequence>
312
+ </xs:complexType>
313
+ </xs:element>
314
+ </xs:sequence>
315
+ </xs:complexType>
316
+ </xs:element>
317
+ <xs:element name="costs">
318
+ <xs:annotation>
319
+ <xs:documentation>for components only. costs related to the component</xs:documentation>
320
+ </xs:annotation>
321
+ <xs:complexType>
322
+ <xs:sequence>
323
+ <xs:element name="cost" minOccurs="0" maxOccurs="unbounded">
324
+ <xs:complexType>
325
+ <xs:sequence>
326
+ <xs:element name="instance_name" type="xs:string">
327
+ <xs:annotation>
328
+ <xs:documentation>name of cost for reference</xs:documentation>
329
+ </xs:annotation>
330
+ </xs:element>
331
+ <xs:element name="cost_type">
332
+ <xs:annotation>
333
+ <xs:documentation>type of cost, includes low, high, average, estimate, etc</xs:documentation>
334
+ </xs:annotation>
335
+ <xs:simpleType>
336
+ <xs:restriction base="xs:string">
337
+ <xs:enumeration value="low"/>
338
+ <xs:enumeration value="high"/>
339
+ <xs:enumeration value="average"/>
340
+ <xs:enumeration value="estimate"/>
341
+ </xs:restriction>
342
+ </xs:simpleType>
343
+ </xs:element>
344
+ <xs:element name="category">
345
+ <xs:annotation>
346
+ <xs:documentation>ex: operations and maintenance cost, salvage cost, materials cost, installation cost, upgrade cost, etc.</xs:documentation>
347
+ </xs:annotation>
348
+ </xs:element>
349
+ <xs:element name="value" type="xs:float">
350
+ <xs:annotation>
351
+ <xs:documentation>cost value based on the supplemntal fields</xs:documentation>
352
+ </xs:annotation>
353
+ </xs:element>
354
+ <xs:element name="units" minOccurs="0">
355
+ <xs:annotation>
356
+ <xs:documentation>cost unit. If blank, absolute cost is assumed. ex: $/ft2, $/person, etc.</xs:documentation>
357
+ </xs:annotation>
358
+ </xs:element>
359
+ <xs:element name="interval" minOccurs="0">
360
+ <xs:annotation>
361
+ <xs:documentation>number describing the interval on which this cost is incurred. ex: 1, 6, 12. Use 0 for onetime costs</xs:documentation>
362
+ </xs:annotation>
363
+ </xs:element>
364
+ <xs:element name="interval_units" minOccurs="0">
365
+ <xs:annotation>
366
+ <xs:documentation>interval units. ex: day, month, year, etc.</xs:documentation>
367
+ </xs:annotation>
368
+ <xs:simpleType>
369
+ <xs:restriction base="xs:string">
370
+ <xs:enumeration value="year(s)"/>
371
+ <xs:enumeration value="month(s)"/>
372
+ <xs:enumeration value="day(s)"/>
373
+ </xs:restriction>
374
+ </xs:simpleType>
375
+ </xs:element>
376
+ <xs:element name="year" type="xs:int" minOccurs="0">
377
+ <xs:annotation>
378
+ <xs:documentation>source year of the costs</xs:documentation>
379
+ </xs:annotation>
380
+ </xs:element>
381
+ <xs:element name="start_year" minOccurs="0">
382
+ <xs:annotation>
383
+ <xs:documentation>define when this cost will start to incur. Useful when you may not want maintenance costs to start until n years after construction</xs:documentation>
384
+ </xs:annotation>
385
+ </xs:element>
386
+ <xs:element name="end_year" minOccurs="0">
387
+ <xs:annotation>
388
+ <xs:documentation>define whne this cost will stop incurring.</xs:documentation>
389
+ </xs:annotation>
390
+ </xs:element>
391
+ <xs:element name="location" minOccurs="0">
392
+ <xs:annotation>
393
+ <xs:documentation>the geographic location where the component was costed (i.e. national, colorado, denver, etc). By default all values should be national averages.</xs:documentation>
394
+ </xs:annotation>
395
+ </xs:element>
396
+ <xs:element name="currency" minOccurs="0">
397
+ <xs:annotation>
398
+ <xs:documentation>the currency of the cost. If blank, USD is assumed.</xs:documentation>
399
+ </xs:annotation>
400
+ </xs:element>
401
+ <xs:element name="source" type="xs:string" minOccurs="0">
402
+ <xs:annotation>
403
+ <xs:documentation>origin from which the cost data came</xs:documentation>
404
+ </xs:annotation>
405
+ </xs:element>
406
+ <xs:element name="reference_component_name" minOccurs="0">
407
+ <xs:annotation>
408
+ <xs:documentation>display name of reference component prior to retrofit (for marginal costs)</xs:documentation>
409
+ </xs:annotation>
410
+ </xs:element>
411
+ <xs:element name="reference_component_id" minOccurs="0">
412
+ <xs:annotation>
413
+ <xs:documentation>ID of reference component prior to retrofit (for marginal costs)</xs:documentation>
414
+ </xs:annotation>
415
+ </xs:element>
416
+ </xs:sequence>
417
+ </xs:complexType>
418
+ </xs:element>
419
+ </xs:sequence>
420
+ </xs:complexType>
421
+ </xs:element>
422
+ </xs:schema>