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,445 @@
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>Component.xsd describes the components 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</xs:documentation>
18
+ </xs:annotation>
19
+ </xs:element>
20
+ <xs:element name="version_id" type="xs:string">
21
+ <xs:annotation>
22
+ <xs:documentation>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</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</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 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. 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 using 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:complexType>
319
+ <xs:sequence>
320
+ <xs:element name="cost" minOccurs="0" maxOccurs="unbounded">
321
+ <xs:complexType>
322
+ <xs:sequence>
323
+ <xs:element name="instance_name" type="xs:string">
324
+ <xs:annotation>
325
+ <xs:documentation>name of cost for reference</xs:documentation>
326
+ </xs:annotation>
327
+ </xs:element>
328
+ <xs:element name="cost_type">
329
+ <xs:annotation>
330
+ <xs:documentation>type of cost, includes low, high, average, estimate, etc</xs:documentation>
331
+ </xs:annotation>
332
+ <xs:simpleType>
333
+ <xs:restriction base="xs:string">
334
+ <xs:enumeration value="low"/>
335
+ <xs:enumeration value="high"/>
336
+ <xs:enumeration value="average"/>
337
+ <xs:enumeration value="estimate"/>
338
+ </xs:restriction>
339
+ </xs:simpleType>
340
+ </xs:element>
341
+ <xs:element name="category">
342
+ <xs:annotation>
343
+ <xs:documentation>ex: operations and maintenance cost, salvage cost, materials cost, installation cost, upgrade cost, etc.</xs:documentation>
344
+ </xs:annotation>
345
+ </xs:element>
346
+ <xs:element name="value" type="xs:float">
347
+ <xs:annotation>
348
+ <xs:documentation>cost value based on the supplemntal fields</xs:documentation>
349
+ </xs:annotation>
350
+ </xs:element>
351
+ <xs:element name="units" minOccurs="0">
352
+ <xs:annotation>
353
+ <xs:documentation>cost unit. If blank, absolute cost is assumed. ex: $/ft2, $/person, etc.</xs:documentation>
354
+ </xs:annotation>
355
+ </xs:element>
356
+ <xs:element name="interval" minOccurs="0">
357
+ <xs:annotation>
358
+ <xs:documentation>number describing the interval on which this cost is incurred. ex: 1, 6, 12. Use 0 for onetime costs</xs:documentation>
359
+ </xs:annotation>
360
+ </xs:element>
361
+ <xs:element name="interval_units" minOccurs="0">
362
+ <xs:annotation>
363
+ <xs:documentation>interval units. ex: day, month, year, etc.</xs:documentation>
364
+ </xs:annotation>
365
+ <xs:simpleType>
366
+ <xs:restriction base="xs:string">
367
+ <xs:enumeration value="year(s)"/>
368
+ <xs:enumeration value="month(s)"/>
369
+ <xs:enumeration value="day(s)"/>
370
+ </xs:restriction>
371
+ </xs:simpleType>
372
+ </xs:element>
373
+ <xs:element name="year" type="xs:int" minOccurs="0">
374
+ <xs:annotation>
375
+ <xs:documentation>source year of the costs</xs:documentation>
376
+ </xs:annotation>
377
+ </xs:element>
378
+ <xs:element name="start_year" minOccurs="0">
379
+ <xs:annotation>
380
+ <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>
381
+ </xs:annotation>
382
+ </xs:element>
383
+ <xs:element name="end_year" minOccurs="0">
384
+ <xs:annotation>
385
+ <xs:documentation>define whne this cost will stop incurring.</xs:documentation>
386
+ </xs:annotation>
387
+ </xs:element>
388
+ <xs:element name="location" minOccurs="0">
389
+ <xs:annotation>
390
+ <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>
391
+ </xs:annotation>
392
+ </xs:element>
393
+ <xs:element name="currency" minOccurs="0">
394
+ <xs:annotation>
395
+ <xs:documentation>the currency of the cost. If blank, USD is assumed.</xs:documentation>
396
+ </xs:annotation>
397
+ </xs:element>
398
+ <xs:element name="source" type="xs:string" minOccurs="0">
399
+ <xs:annotation>
400
+ <xs:documentation>origin from which the cost data came</xs:documentation>
401
+ </xs:annotation>
402
+ </xs:element>
403
+ <xs:element name="reference_component_name" minOccurs="0">
404
+ <xs:annotation>
405
+ <xs:documentation>display name of reference component prior to retrofit (for marginal costs)</xs:documentation>
406
+ </xs:annotation>
407
+ </xs:element>
408
+ <xs:element name="reference_component_id" minOccurs="0">
409
+ <xs:annotation>
410
+ <xs:documentation>ID of reference component prior to retrofit (for marginal costs)</xs:documentation>
411
+ </xs:annotation>
412
+ </xs:element>
413
+ </xs:sequence>
414
+ </xs:complexType>
415
+ </xs:element>
416
+ </xs:sequence>
417
+ </xs:complexType>
418
+ </xs:element>
419
+ <xs:element name="component">
420
+ <xs:annotation>
421
+ <xs:documentation>root element defining a component</xs:documentation>
422
+ </xs:annotation>
423
+ <xs:complexType>
424
+ <xs:sequence>
425
+ <xs:element ref="schema_version"/>
426
+ <xs:element ref="error" minOccurs="0"/>
427
+ <xs:element ref="name"/>
428
+ <xs:element ref="uid"/>
429
+ <xs:element ref="version_id"/>
430
+ <xs:element ref="version_modified" minOccurs="0"/>
431
+ <xs:element ref="xml_checksum"/>
432
+ <xs:element ref="masterguide_csi_values" minOccurs="0"/>
433
+ <xs:element ref="display_name"/>
434
+ <xs:element ref="description"/>
435
+ <xs:element ref="modeler_description"/>
436
+ <xs:element ref="provenances"/>
437
+ <xs:element ref="tags"/>
438
+ <xs:element ref="attributes"/>
439
+ <xs:element ref="source"/>
440
+ <xs:element ref="files"/>
441
+ <xs:element ref="costs"/>
442
+ </xs:sequence>
443
+ </xs:complexType>
444
+ </xs:element>
445
+ </xs:schema>
@@ -0,0 +1,496 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- edited with XMLSpy v2016 (x64) (http://www.altova.com) by kflemin (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</xs:documentation>
18
+ </xs:annotation>
19
+ </xs:element>
20
+ <xs:element name="version_id" type="xs:string">
21
+ <xs:annotation>
22
+ <xs:documentation>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</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</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 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. 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 name="short_name" minOccurs="0"/>
77
+ <xs:element ref="description" minOccurs="0"/>
78
+ <xs:element name="type">
79
+ <xs:annotation>
80
+ <xs:documentation>type of the argument</xs:documentation>
81
+ </xs:annotation>
82
+ <xs:simpleType>
83
+ <xs:restriction base="xs:string">
84
+ <xs:enumeration value="Boolean"/>
85
+ <xs:enumeration value="Double"/>
86
+ <xs:enumeration value="Integer"/>
87
+ <xs:enumeration value="String"/>
88
+ <xs:enumeration value="Choice"/>
89
+ <xs:enumeration value="Path"/>
90
+ </xs:restriction>
91
+ </xs:simpleType>
92
+ </xs:element>
93
+ <xs:element name="units" type="xs:string" minOccurs="0">
94
+ <xs:annotation>
95
+ <xs:documentation>units of the argument value in format parsable by OpenStudio::convert</xs:documentation>
96
+ </xs:annotation>
97
+ </xs:element>
98
+ <xs:element name="required" type="xs:boolean">
99
+ <xs:annotation>
100
+ <xs:documentation>true if the argument is required in order for the measure to run</xs:documentation>
101
+ </xs:annotation>
102
+ </xs:element>
103
+ <xs:element name="model_dependent" type="xs:boolean" default="false">
104
+ <xs:annotation>
105
+ <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>
106
+ </xs:annotation>
107
+ </xs:element>
108
+ <xs:element name="default_value" type="xs:anySimpleType" minOccurs="0">
109
+ <xs:annotation>
110
+ <xs:documentation>default value for the argument</xs:documentation>
111
+ </xs:annotation>
112
+ </xs:element>
113
+ <xs:element name="choices" minOccurs="0">
114
+ <xs:annotation>
115
+ <xs:documentation>list of allowable values</xs:documentation>
116
+ </xs:annotation>
117
+ <xs:complexType>
118
+ <xs:sequence>
119
+ <xs:element name="choice" maxOccurs="unbounded">
120
+ <xs:complexType>
121
+ <xs:sequence>
122
+ <xs:element name="value" type="xs:anySimpleType">
123
+ <xs:annotation>
124
+ <xs:documentation>allowable value</xs:documentation>
125
+ </xs:annotation>
126
+ </xs:element>
127
+ <xs:element name="display_name" type="xs:string">
128
+ <xs:annotation>
129
+ <xs:documentation>user facing name for value</xs:documentation>
130
+ </xs:annotation>
131
+ </xs:element>
132
+ </xs:sequence>
133
+ </xs:complexType>
134
+ </xs:element>
135
+ </xs:sequence>
136
+ </xs:complexType>
137
+ </xs:element>
138
+ <xs:element name="min_value" type="xs:anySimpleType" minOccurs="0">
139
+ <xs:annotation>
140
+ <xs:documentation>minimum value</xs:documentation>
141
+ </xs:annotation>
142
+ </xs:element>
143
+ <xs:element name="max_value" type="xs:anySimpleType" minOccurs="0">
144
+ <xs:annotation>
145
+ <xs:documentation>maximum value</xs:documentation>
146
+ </xs:annotation>
147
+ </xs:element>
148
+ <xs:element name="model_dependent" type="xs:boolean" default="false">
149
+ <xs:annotation>
150
+ <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>
151
+ </xs:annotation>
152
+ </xs:element>
153
+ </xs:sequence>
154
+ </xs:complexType>
155
+ </xs:element>
156
+ </xs:sequence>
157
+ </xs:complexType>
158
+ </xs:element>
159
+ <xs:element name="masterguide_csi_values">
160
+ <xs:annotation>
161
+ <xs:documentation>for components only. values from the MASTERSPEC</xs:documentation>
162
+ </xs:annotation>
163
+ <xs:complexType>
164
+ <xs:sequence>
165
+ <xs:element name="masterguide_csi_value" maxOccurs="unbounded"/>
166
+ </xs:sequence>
167
+ </xs:complexType>
168
+ </xs:element>
169
+ <xs:element name="source">
170
+ <xs:annotation>
171
+ <xs:documentation>for components only. source of the data (the origin of the component information)</xs:documentation>
172
+ </xs:annotation>
173
+ <xs:complexType>
174
+ <xs:sequence minOccurs="0">
175
+ <xs:element name="manufacturer" type="xs:string" minOccurs="0"/>
176
+ <xs:element name="model" minOccurs="0"/>
177
+ <xs:element name="serial_no" minOccurs="0"/>
178
+ <xs:element name="year" minOccurs="0"/>
179
+ <xs:element name="url" minOccurs="0"/>
180
+ </xs:sequence>
181
+ </xs:complexType>
182
+ </xs:element>
183
+ <xs:element name="provenances">
184
+ <xs:annotation>
185
+ <xs:documentation>provenance is used to enter author information. </xs:documentation>
186
+ </xs:annotation>
187
+ <xs:complexType>
188
+ <xs:sequence>
189
+ <xs:element name="provenance" minOccurs="0" maxOccurs="unbounded">
190
+ <xs:complexType>
191
+ <xs:sequence>
192
+ <xs:element name="author" type="xs:string">
193
+ <xs:annotation>
194
+ <xs:documentation>author who uploaded the content, will be equal to the user account on the bcl site</xs:documentation>
195
+ </xs:annotation>
196
+ </xs:element>
197
+ <xs:element name="datetime" type="xs:dateTime">
198
+ <xs:annotation>
199
+ <xs:documentation>date content was uploaded</xs:documentation>
200
+ </xs:annotation>
201
+ </xs:element>
202
+ <xs:element name="comment" type="xs:string" minOccurs="0">
203
+ <xs:annotation>
204
+ <xs:documentation>general comment</xs:documentation>
205
+ </xs:annotation>
206
+ </xs:element>
207
+ </xs:sequence>
208
+ </xs:complexType>
209
+ </xs:element>
210
+ </xs:sequence>
211
+ </xs:complexType>
212
+ </xs:element>
213
+ <xs:element name="tags">
214
+ <xs:annotation>
215
+ <xs:documentation>tags are used to classify the content using the appropriate taxonomy. currently only one tag per piece of content is supported.</xs:documentation>
216
+ </xs:annotation>
217
+ <xs:complexType>
218
+ <xs:sequence>
219
+ <xs:element name="tag" type="xs:string" maxOccurs="unbounded"/>
220
+ </xs:sequence>
221
+ </xs:complexType>
222
+ </xs:element>
223
+ <xs:element name="attributes">
224
+ <xs:annotation>
225
+ <xs:documentation>attributes are descriptors of the content. attributes should be found in the corresponding taxonomy</xs:documentation>
226
+ </xs:annotation>
227
+ <xs:complexType>
228
+ <xs:sequence>
229
+ <xs:element name="attribute" minOccurs="0" maxOccurs="unbounded">
230
+ <xs:complexType>
231
+ <xs:sequence>
232
+ <xs:element name="name" type="xs:string">
233
+ <xs:annotation>
234
+ <xs:documentation>user facing attribute name (should be found in appropriate taxonomy)</xs:documentation>
235
+ </xs:annotation>
236
+ </xs:element>
237
+ <xs:element name="value" type="xs:anySimpleType"/>
238
+ <xs:element name="datatype">
239
+ <xs:simpleType>
240
+ <xs:restriction base="xs:string">
241
+ <xs:enumeration value="float"/>
242
+ <xs:enumeration value="integer"/>
243
+ <xs:enumeration value="string"/>
244
+ <xs:enumeration value="boolean"/>
245
+ </xs:restriction>
246
+ </xs:simpleType>
247
+ </xs:element>
248
+ <xs:element name="units" type="xs:string" minOccurs="0"/>
249
+ </xs:sequence>
250
+ </xs:complexType>
251
+ </xs:element>
252
+ </xs:sequence>
253
+ </xs:complexType>
254
+ </xs:element>
255
+ <xs:element name="files">
256
+ <xs:annotation>
257
+ <xs:documentation>files lists details on all of the files associated with this piece content</xs:documentation>
258
+ </xs:annotation>
259
+ <xs:complexType>
260
+ <xs:sequence>
261
+ <xs:element name="file" minOccurs="0" maxOccurs="unbounded">
262
+ <xs:complexType>
263
+ <xs:sequence>
264
+ <xs:element name="version" minOccurs="0">
265
+ <xs:complexType>
266
+ <xs:sequence>
267
+ <xs:element name="software_program" type="xs:string">
268
+ <xs:annotation>
269
+ <xs:documentation>software program the file is associated with</xs:documentation>
270
+ </xs:annotation>
271
+ </xs:element>
272
+ <xs:element name="identifier" type="xs:string">
273
+ <xs:annotation>
274
+ <xs:documentation>version of software program that this file is associated with</xs:documentation>
275
+ </xs:annotation>
276
+ </xs:element>
277
+ <xs:element name="min_compatible" minOccurs="0">
278
+ <xs:annotation>
279
+ <xs:documentation>minimum version of the software this file is compatible with, if not specified assumed to be the version identifier</xs:documentation>
280
+ </xs:annotation>
281
+ </xs:element>
282
+ <xs:element name="max_compatible" minOccurs="0">
283
+ <xs:annotation>
284
+ <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>
285
+ </xs:annotation>
286
+ </xs:element>
287
+ </xs:sequence>
288
+ </xs:complexType>
289
+ </xs:element>
290
+ <xs:element name="filename" type="xs:string">
291
+ <xs:annotation>
292
+ <xs:documentation>name of the file</xs:documentation>
293
+ </xs:annotation>
294
+ </xs:element>
295
+ <xs:element name="filetype" type="xs:string">
296
+ <xs:annotation>
297
+ <xs:documentation>ies, idf, </xs:documentation>
298
+ </xs:annotation>
299
+ </xs:element>
300
+ <xs:element name="usage_type">
301
+ <xs:annotation>
302
+ <xs:documentation>identifies the directory to search for the file in </xs:documentation>
303
+ </xs:annotation>
304
+ <xs:simpleType>
305
+ <xs:restriction base="xs:string">
306
+ <xs:enumeration value="script"/>
307
+ <xs:enumeration value="test"/>
308
+ <xs:enumeration value="resource"/>
309
+ <xs:enumeration value="doc"/>
310
+ <xs:enumeration value="license"/>
311
+ <xs:enumeration value="readme"/>
312
+ <xs:enumeration value="readmeerb"/>
313
+ </xs:restriction>
314
+ </xs:simpleType>
315
+ </xs:element>
316
+ <xs:element name="checksum" type="xs:string">
317
+ <xs:annotation>
318
+ <xs:documentation>checksum of the file as computed by OpenStudio::checksum</xs:documentation>
319
+ </xs:annotation>
320
+ </xs:element>
321
+ </xs:sequence>
322
+ </xs:complexType>
323
+ </xs:element>
324
+ </xs:sequence>
325
+ </xs:complexType>
326
+ </xs:element>
327
+ <xs:element name="costs">
328
+ <xs:complexType>
329
+ <xs:sequence>
330
+ <xs:element name="cost" minOccurs="0" maxOccurs="unbounded">
331
+ <xs:complexType>
332
+ <xs:sequence>
333
+ <xs:element name="instance_name" type="xs:string">
334
+ <xs:annotation>
335
+ <xs:documentation>name of cost for reference</xs:documentation>
336
+ </xs:annotation>
337
+ </xs:element>
338
+ <xs:element name="cost_type">
339
+ <xs:annotation>
340
+ <xs:documentation>type of cost, includes low, high, average, estimate, etc</xs:documentation>
341
+ </xs:annotation>
342
+ <xs:simpleType>
343
+ <xs:restriction base="xs:string">
344
+ <xs:enumeration value="low"/>
345
+ <xs:enumeration value="high"/>
346
+ <xs:enumeration value="average"/>
347
+ <xs:enumeration value="estimate"/>
348
+ </xs:restriction>
349
+ </xs:simpleType>
350
+ </xs:element>
351
+ <xs:element name="category">
352
+ <xs:annotation>
353
+ <xs:documentation>ex: operations and maintenance cost, salvage cost, materials cost, installation cost, upgrade cost, etc.</xs:documentation>
354
+ </xs:annotation>
355
+ </xs:element>
356
+ <xs:element name="value" type="xs:float">
357
+ <xs:annotation>
358
+ <xs:documentation>cost value based on the supplemntal fields</xs:documentation>
359
+ </xs:annotation>
360
+ </xs:element>
361
+ <xs:element name="units" minOccurs="0">
362
+ <xs:annotation>
363
+ <xs:documentation>cost unit. If blank, absolute cost is assumed. ex: $/ft2, $/person, etc.</xs:documentation>
364
+ </xs:annotation>
365
+ </xs:element>
366
+ <xs:element name="interval" minOccurs="0">
367
+ <xs:annotation>
368
+ <xs:documentation>number describing the interval on which this cost is incurred. ex: 1, 6, 12. Use 0 for onetime costs</xs:documentation>
369
+ </xs:annotation>
370
+ </xs:element>
371
+ <xs:element name="interval_units" minOccurs="0">
372
+ <xs:annotation>
373
+ <xs:documentation>interval units. ex: day, month, year, etc.</xs:documentation>
374
+ </xs:annotation>
375
+ <xs:simpleType>
376
+ <xs:restriction base="xs:string">
377
+ <xs:enumeration value="year(s)"/>
378
+ <xs:enumeration value="month(s)"/>
379
+ <xs:enumeration value="day(s)"/>
380
+ </xs:restriction>
381
+ </xs:simpleType>
382
+ </xs:element>
383
+ <xs:element name="year" type="xs:int" minOccurs="0">
384
+ <xs:annotation>
385
+ <xs:documentation>source year of the costs</xs:documentation>
386
+ </xs:annotation>
387
+ </xs:element>
388
+ <xs:element name="start_year" minOccurs="0">
389
+ <xs:annotation>
390
+ <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>
391
+ </xs:annotation>
392
+ </xs:element>
393
+ <xs:element name="end_year" minOccurs="0">
394
+ <xs:annotation>
395
+ <xs:documentation>define whne this cost will stop incurring.</xs:documentation>
396
+ </xs:annotation>
397
+ </xs:element>
398
+ <xs:element name="location" minOccurs="0">
399
+ <xs:annotation>
400
+ <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>
401
+ </xs:annotation>
402
+ </xs:element>
403
+ <xs:element name="currency" minOccurs="0">
404
+ <xs:annotation>
405
+ <xs:documentation>the currency of the cost. If blank, USD is assumed.</xs:documentation>
406
+ </xs:annotation>
407
+ </xs:element>
408
+ <xs:element name="source" type="xs:string" minOccurs="0">
409
+ <xs:annotation>
410
+ <xs:documentation>origin from which the cost data came</xs:documentation>
411
+ </xs:annotation>
412
+ </xs:element>
413
+ <xs:element name="reference_component_name" minOccurs="0">
414
+ <xs:annotation>
415
+ <xs:documentation>display name of reference component prior to retrofit (for marginal costs)</xs:documentation>
416
+ </xs:annotation>
417
+ </xs:element>
418
+ <xs:element name="reference_component_id" minOccurs="0">
419
+ <xs:annotation>
420
+ <xs:documentation>ID of reference component prior to retrofit (for marginal costs)</xs:documentation>
421
+ </xs:annotation>
422
+ </xs:element>
423
+ </xs:sequence>
424
+ </xs:complexType>
425
+ </xs:element>
426
+ </xs:sequence>
427
+ </xs:complexType>
428
+ </xs:element>
429
+ <xs:element name="measure">
430
+ <xs:annotation>
431
+ <xs:documentation>root element defining a measure</xs:documentation>
432
+ </xs:annotation>
433
+ <xs:complexType>
434
+ <xs:sequence>
435
+ <xs:element ref="schema_version"/>
436
+ <xs:element ref="error" minOccurs="0"/>
437
+ <xs:element ref="name"/>
438
+ <xs:element ref="uid"/>
439
+ <xs:element ref="version_id"/>
440
+ <xs:element ref="version_modified" minOccurs="0"/>
441
+ <xs:element ref="xml_checksum"/>
442
+ <xs:element ref="class_name"/>
443
+ <xs:element ref="display_name"/>
444
+ <xs:element ref="description"/>
445
+ <xs:element ref="modeler_description"/>
446
+ <xs:element ref="arguments"/>
447
+ <xs:element ref="provenances"/>
448
+ <xs:element ref="tags"/>
449
+ <xs:element ref="attributes"/>
450
+ <xs:element ref="files"/>
451
+ <xs:element ref="outputs"/>
452
+ </xs:sequence>
453
+ </xs:complexType>
454
+ </xs:element>
455
+ <xs:element name="outputs">
456
+ <xs:annotation>
457
+ <xs:documentation>for measures ony. Outputs represent the output values to include in analysis results</xs:documentation>
458
+ </xs:annotation>
459
+ <xs:complexType>
460
+ <xs:sequence>
461
+ <xs:element name="output" minOccurs="0" maxOccurs="unbounded">
462
+ <xs:complexType>
463
+ <xs:sequence>
464
+ <xs:element ref="name"/>
465
+ <xs:element ref="display_name"/>
466
+ <xs:element name="short_name" type="xs:string" minOccurs="0"/>
467
+ <xs:element ref="description" minOccurs="0"/>
468
+ <xs:element name="type">
469
+ <xs:simpleType>
470
+ <xs:restriction base="xs:string">
471
+ <xs:enumeration value="Boolean"/>
472
+ <xs:enumeration value="Double"/>
473
+ <xs:enumeration value="Integer"/>
474
+ <xs:enumeration value="String"/>
475
+ <xs:enumeration value="Choice"/>
476
+ <xs:enumeration value="Path"/>
477
+ </xs:restriction>
478
+ </xs:simpleType>
479
+ </xs:element>
480
+ <xs:element name="units" type="xs:string" minOccurs="0">
481
+ <xs:annotation>
482
+ <xs:documentation>units of the output value in format parsable by OpenStudio::convert</xs:documentation>
483
+ </xs:annotation>
484
+ </xs:element>
485
+ <xs:element name="model_dependent" type="xs:boolean" default="false">
486
+ <xs:annotation>
487
+ <xs:documentation>true if any of this output's properties depend on the specific model used.</xs:documentation>
488
+ </xs:annotation>
489
+ </xs:element>
490
+ </xs:sequence>
491
+ </xs:complexType>
492
+ </xs:element>
493
+ </xs:sequence>
494
+ </xs:complexType>
495
+ </xs:element>
496
+ </xs:schema>