{
  "type": "CityJSON_Extension",
  "name": "Energy",
  "uri": "https://someurl.org/energy.json",
  "version": "0.1",
  "description": "CityJSON encoding for CityGML Energy ADE v1.0",
  "definitions": {
    "floorArea": {
      "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "type": { "enum": ["netFloorArea", "grossFloorArea", "energyReferenceArea"] },
            "value": { "type": "number" },
            "uom": { "type": "string" }  
          },
          "required": [ "type", "value", "uom" ],
          "additionalProperties": "false"
        }
    },
    "volumeType": {
      "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "type": { "enum": ["netVolume", "grossVolume", "energyReferenceVolume"] },
            "value": { "type": "number" },
            "uom": { "type": "string" }  
          },
          "required": [ "type", "value", "uom" ],
          "additionalProperties": "false"
        }
    },
    "refurbishmentMeasure": {
      "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "date": { "type":"string", "format":"date-time" },
            "level": { "enum": ["Advanced", "No refurbishment", "Standard"] },
            "description": { "type": "string" }
          },
          "required": [ "date", "level" ],
          "additionalProperties": "false"
        }
      }, 
    "transmittance":{
        "type": "object",
        "properties": {
          "fraction": {
            "type": "object",
              "properties": {
                 "value": { "type": "number" },
                 "uom": { "type": "string" } 
              }
           },
           "wavelengthRange": { "enum": [ "solar", "infrared", "visible", "total" ] }
        },
        "required": ["fraction", "wavelengthRange"],
        "additionalProperties": false
    },
    "shading": {
      "type": "object",
      "properties": {
        "maximumCoverRatio": {
          "type": "object",
          "properties": {
            "value": { "type": "number" },
            "uom": { "type": "string" } 
          },
          "additionalProperties": false
        },
        "transmittance": { "$ref": "#/definitions/transmittance" }
      },
      "additionalProperties": false
    },
    "heatExchange": {
      "type": "object",
      "properties": {
        "convectiveFraction": {
          "type": "object",
          "properties": {
            "value": { "type": "number" },
            "uom": { "type": "string" } 
          },
          "additionalProperties": false
        },
        "latentFraction": {
          "type": "object",
          "properties": {
            "value": { "type": "number" },
            "uom": { "type": "string" } 
          },
          "additionalProperties": false
        },
        "radiantFraction": {
          "type": "object",
          "properties": {
            "value": { "type": "number" },
            "uom": { "type": "string" } 
          },
          "additionalProperties": false
        },
        "totalValue": {
          "type": "object",
          "properties": {
            "value": { "type": "number" },
            "uom": { "type": "string" } 
          },
          "additionalProperties": false
        }
      },
      "required": [ "totalValue" ],
      "additionalProperties": false
    },
    "point": {
      "type": "object",
        "properties": {
          "type": { "enum": ["Point"] },
          "location": { "type": "integer" }
        },
        "required": [ "type", "location" ],
        "additionalProperties": false
      },
    "timeSeries":{
  		"type": "object",
  		"properties":{
  			"acquisitionMethod": { "enum": ["measurement","simulation","calibratedSimulation","estimation","unknown"] },
  			"interpolationType": {"enum": ["averageInPrecedingInterval","averageInSucceedingInterval","constantInPrecedingInterval",
  														"constantInSucceedingInterval","continuous","discontinuous","instantaneousTotal",
  														"maximumInPrecedingInterval","maximumInSucceedingInterval","minimumInPrecedingInterval",
  														"minimumInSucceedingInterval","precedingTotal","succeedingTotal"] },
  			"qualityDescription": { "type": "string" },
  			"source": { "type": "string" },
  			"thematicDescription": { "type": "string" }
  		},
  		"required": ["acquisitionMethod", "interpolationType"],
  		"oneOf": [
  		{
  			"type": "object",
  			"properties": {
  				"type": { "enum": ["RegularTimeSeries"] },
  				"startDateTime": { "type":"string", "format":"date-time" },
  				"endDateTime": { "type":"string", "format":"date-time" },
  				"timeInterval": {
  					"type": "object",
  					"properties": {
  						"value": { "type": "number" },
              "uom": { "type": "string" } 
  					},
  					"additionalProperties": false
  				},
  				"values": { 
  					"type": "array",
  					"items": {
  						"type": "number"
  					}
  				}
  			},
  			"required": ["type", "startDateTime", "endDateTime", "values"]
  		},
  		{
  			"type": "object",
  			"properties": {
  				"type": { "enum": ["IrregularTimeSeries"] },
  				"uom": { "type":"string" },
  				"measurementPoints": {
  					"type": "array",
  					"items": {
  						"type": "object",
  						"properties": {
  							"time": {"type":"string", "format":"date-time"},
  							"value": {"type":"number"}
  						},
  						"additionalProperties": false
  					}
  				}
  			},
  			"required": ["type", "uom"]
  		},
  		{
  			"type": "object",
  			"properties": {
  				"type": { "enum": ["RegularTimeSeriesFile"] },
  				"uom": { "type":"string" },
  				"file": { "type":"string", "format":"uri" },
  				"startDateTime": { "type":"string", "format":"date-time" },
  				"endDateTime": { "type":"string", "format":"date-time" },
  				"timeInterval": {
  					"type": "object",
  					"properties": {
  						"value": { "type": "number" },
              "uom": { "type": "string" } 
  					},
  					"additionalProperties": false
  				},
  				"numberOfHeaderLines": { "type":"integer" },
  				"fieldSeparator": { "type":"string" },
  				"recordSeparator": { "type":"string" },
  				"decimalSymbol": { "type":"string" },
  				"valueColumnNumber" : { "type":"integer" }
  			},
  			"required": [ "type", "uom", "file", "startDateTime", "endDateTime", "timeInterval" ]
  		},
  		{
  			"type": "object",
  			"properties": {
  				"type": { "enum": ["IrregularTimeSeriesFile"] },
  				"uom": { "type":"string" },
  				"file": { "type":"string", "format":"uri" },
  				"numberOfHeaderLines": { "type":"integer" },
  				"fieldSeparator": { "type":"string" },
  				"recordSeparator": { "type":"string" },
  				"decimalSymbol": { "type":"string" },
  				"timeColumnNumber" : { "type":"integer" },
  				"valueColumnNumber" : { "type":"integer" }
  			},
  			"required": [ "type", "uom", "file" ]
  		}
  		]
  	}, 	
  	"schedule":{
  		"type": "object",
  		"oneOf": [
  			{
  				"type": "object",
  				"properties": {
  					"type": { "enum": ["ConstantValueSchedule"] },
  					"averageValue": {
  						"type": "object",
              "properties": {
                 "value": { "type": "number" },
                 "uom": { "type": "string" } 
              },
              "additionalProperties": false
  					}
  				},
  				"required": [ "type", "averageValue"],
  				"additionalProperties": false
  			},
  			{
  				"type": "object",
  				"properties": {
  					"type": { "enum": ["DualValueSchedule"] },
  					"usageHoursPerDay": {
  						"type": "object",
              "properties": {
                 "value": { "type": "number" },
                 "uom": { "type": "string" } 
              }
  					},
  					"usageDaysPerYear": {
  						"type": "object",
              "properties": {
                 "value": { "type": "number" },
                 "uom": { "type": "string" } 
              }
  					},
  					"usageValue": {
  						"type": "object",
              "properties": {
                 "value": { "type": "number" },
                 "uom": { "type": "string" } 
              }
  					},
  					"idleValue": {
  						"type": "object",
              "properties": {
                 "value": { "type": "number" },
                 "uom": { "type": "string" } 
              }
  					}
  				},
  				"required": ["type", "usageValue", "idleValue"],
  				"additionalProperties": false
  			},
  			{
  				"type": "object",
  				"properties": {
  					"type": { "enum": ["DailyPatternSchedule"] },
  					"startDateTime": { "type":"string", "format":"date-time" },
  					"endDateTime": { "type":"string", "format":"date-time" },
  					"dailySchedule": { 
  						"type":"array",
  						"items": {
  							"type": "object",
  							"properties": {
  								"dayType": { "enum": ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday", "designDay", "weekDay", "weekEnd", "typicalDay"] },
  								"schedule": { "$ref":"#/definitions/timeSeries" }
  							},
  							"required": ["dayType", "schedule"],
  							"additionalProperties": false
  						}
  					}
  				},
  				"required": [ "type", "startDateTime", "endDateTime", "dailySchedule"],
  				"additionalProperties": false
  			},
  			{
  				"type": "object",
  				"properties": {
  					"type": { "enum": ["TimeSeriesSchedule"] },
  					"timeDependingValues": { "$ref":"#/definitions/timeSeries" }
  				},
  				"required": [ "type", "timeDependingValues"],
  				"additionalProperties": false
  			}
  		]	
		},		
		"weatherData": {
			"type": "object",
			"properties": {
				"weatherDataType": { "enum": ["airTemperature", "humidity", "windSpeed", "cloudiness", 
														 "globalSolarIrradiance", "directSolarIrradiance", "diffuseSolarIrradiance",
														 "terrestrialEmission", "downwardTerrestrialRadiation", "daylightIlluminance"] },
				"values": { "$ref":"#/definitions/timeSeries" },
				"position": { "$ref":"#/definitions/point" }
			},
			"required": [ "weatherDataType", "values" ],
      "additionalProperties": false
		},
  	"serviceLife": {
  		"type": "object",
  		"properties": {
  			"startOfLife": {"type":"string", "format": "date-time"},
  			"lifeExpectancy": {
  				"type": "object",
  				"properties": {
  					"uom": { "type":"string" },
  					"value": { "type":"number" }
  				}
  		  },
  			"mainMaintenanceInterval": {
  				"type": "object",
  				"properties": {
  					"uom": { "type":"string" },
  					"value": { "type":"number" }
  				}
  			}
  		},
  		"additionalProperties": false
  	}
  	},

  "extraRootProperties": {
      
  },
  
  "extraAttributes": {
    "Building": {
      "+buildingType": { "enum": ["Apartment Block", "Multi Family House", "Single Family House", "Terraced House"] },
      "+constructionWeight": { "enum": ["veryLight", "light", "medium", "heavy"] },
      "+energyPerformanceCertification": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "rating" : { "type": "string" },
            "name" : { "type": "string" },
            "certificationId" : { "type": "string" }
          },
          "required": [ "rating", "name" ],
          "additionalProperties": false
        }
      },
      "+volume": {
        "$ref":"#/definitions/volumeType"
      },
      "+isLandmarked": { "type": "boolean" },
      "+referencePoint": { "$ref":"#/definitions/point"},
      "+refurbishmentMeasure": {  "$ref":"#/definitions/refurbishmentMeasure" },
      "+floorArea": {
        "$ref":"#/definitions/floorArea"
      },
      "+heightAboveGround": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "heightReference": {
              "enum": [
                  "bottomOfConstruction",
                  "entrancePoint",
                  "generalEave",
                  "generalRoof",
                  "generalRoofEdge",
                  "highestEave",
                  "highestPoint",
                  "highestRoofEdge",
                  "lowestEave",
                  "lowestFloorAboveGround",
                  "lowestRoofEdge",
                  "topOfConstruction",
                  "topThermalBoundary",
                  "bottomThermalBoundary"
                ] 
            },
            "value": {"type": "number"},
            "uom": {"type": "string"}
          },
          "required": [ "heightReference", "value", "uom" ],
          "additionalProperties": "false"
        }
      },
      "+weatherData": { 
    		"type": "array",
    		"items": {
    			"$ref": "#/definitions/weatherData"
    		}
    	}
    }
  },
  
  "extraCityObjects": {
		"+ThermalZone": {
			"allOf": [
					{ "$ref": "../cityobjects.schema.json#/_AbstractCityObject" },
        	{
            "properties": {
              "type": { "enum": ["+ThermalZone"] },
              "attributes": {
              	"type": "object",
              	"properties": {
                "additionalThermalBridgeUValue": {
                	"type": "object",
                	"properties": {
                  	"value": { "type": "number" },
                    "uom": { "type": "string" } 
               	  }
              	},
              	"effectiveThermalCapacity": {
                	"type": "object",
                	"properties": {
                  	"value": { "type": "number" },
                  	"uom": { "type": "string" } 
                 	}
               	},
              	"floorArea": { "$ref":"#/definitions/floorArea" },
              	"volume": { "$ref":"#/definitions/volumeType" },
              	"indirectlyHeatedAreaRatio": {
                	"type": "object",
                	"properties": {
                  	"value": { "type": "number" },
                  	"uom": { "type": "string" } 
                	},
                	"additionalProperties": false
              	},
              	"infiltrationRate": {
                	"type": "object",
                	"properties": {
                  	"value": { "type": "number" },
                  	"uom": { "type": "string" } 
                	},
                	"additionalProperties": false
              	},
              	"isCooled": { "type": "boolean"},
              	"isHeated": { "type": "boolean"}         
              	},
              	"additionalProperties": false
              },
              "parent": {
                "type": "string",
                "description": "the ID of parent Building"
              },
              "children": {
                "type": "array",
                "description": "the IDs of the children",
                "items": {"type": "string"}
              },
              "geometry": {
                "type": "array",
                	"items": {
                  	"type": "object",
                  	"oneOf": [
                  		{"$ref": "../geomprimitives.schema.json#/Solid"},
                  		{"$ref": "../geomprimitives.schema.json#/MultiSolid"},
                  		{"$ref": "../geomprimitives.schema.json#/CompositeSolid"}
                  	]
                	},
                	"minItems":0,
                	"maxItems":1
             		}
              	
            },
            "required": ["type"],
            "additionalProperties": false
          }
      ]
    },
    "+ThermalBoundary": {
    	"allOf": [
      	{ "$ref": "../cityobjects.schema.json#/_AbstractCityObject" },
        {
        	"properties": {
        		"type": { "enum": ["+ThermalBoundary"] },
        		"attributes": {
        			"type": "object",
        			"properties":{
              "thermalBoundaryType": { "enum": [ "interiorWall", "intermediaryFloor", "sharedWall", "outerWall", "groundSlab", "basementCeiling", "atticFloor", "roof" ] },
              "azimuth": {
                "type": "object",
                "properties": {
                  "value": { "type": "number" },
                  "uom": { "type": "string" } 
                },
                "additionalProperties": false
              },
              "inclination": {
                "type": "object",
                "properties": {
                  "value": { "type": "number" },
                  "uom": { "type": "string" } 
                },
                "additionalProperties": false
              },
              "area": {
                "type": "object",
                "properties": {
                  "value": { "type": "number" },
                  "uom": { "type": "string" } 
                },
                "additionalProperties": false
              },
              "refurbishmentMeasure": { "$ref":"#/definitions/refurbishmentMeasure" }
              },
        			"required": ["thermalBoundaryType"],
        			"additionalProperties": false
        		},
            "parent": {
              "type": "string",
              "description": "the ID of parent Building"
            },
            "children": {
              "type": "array",
              "description": "the IDs of the children",
              "items": {"type": "string"}
            },
        		"geometry": {
              "type": "array",
                "items": {
                  "type": "object",
                  "$ref": "../geomprimitives.schema.json#/MultiSurface" 
                },
                "minItems":0,
                "maxItems":1
              }
              
          },
          "required": ["type"],
          "additionalProperties": false
        }
      ]
    },
    "+UsageZone": {
    	"allOf": [
      	{ "$ref": "../cityobjects.schema.json#/_AbstractCityObject" },
        {
        	"properties": {
        		"type": { "enum": ["+UsageZone"] },
          	"attributes": {  
          		"type": "object",
          		"properties": {
              "usageZoneType": { "type": "string"},
              "coolingSchedule": { "$ref":"#/definitions/schedule" },
              "heatingSchedule": { "$ref":"#/definitions/schedule" },
              "ventilationSchedule": { "$ref":"#/definitions/schedule" },
              "usedFloors": {
                "type": "array",
                "items": {
                  "type": "integer"
                }
              },
              "floorArea": {
                "$ref": "#/definitions/floorArea"
              },
              "averageInternalGains": { "$ref":"#/definitions/heatExchange" }
              },
          		"required": ["usageZoneType"],
          		"additionalProperties": false
          	},
            "parent": {
              "type": "string",
              "description": "the ID of parent Building"
            },
            "children": {
              "type": "array",
              "description": "the IDs of the children",
              "items": {"type": "string"}
            },
          	"geometry": {
              "type": "array",
                "items": {
                  "type": "object",
                  "oneOf": [
                  {"$ref": "../geomprimitives.schema.json#/Solid"},
                  {"$ref": "../geomprimitives.schema.json#/MultiSolid"},
                  {"$ref": "../geomprimitives.schema.json#/CompositeSolid"}
                  ]
                },
                "minItems":0,
                "maxItems":1
             }              
          },
           "required": ["type"],
           "additionalProperties": false
          }
        ]
      },
    "+ThermalOpening": {
       "allOf": [
          { "$ref": "../cityobjects.schema.json#/_AbstractCityObject" },
          {
          	"properties": {
          		"type": { "enum": ["+ThermalOpening"] },
              "attributes": {     
              	"type": "object",
              	"properties":{
              	"area": {
                	"type": "object",
                	"properties": {
                  	"value": { "type": "number" },
                  	"uom": { "type": "string" } 
                	},
                	"additionalProperties": false
             	  },
              	"indoorShading": { "$ref":"#/definitions/shading" },
              	"outdoorShading": { "$ref":"#/definitions/shading" },
              	"openableRatio": {
                	"type": "object",
                	"properties": {
                	  "value": { "type": "number" },
                  	"uom": { "type": "string" } 
                	},
                	"additionalProperties": false
              	}
              	},
              	"additionalProperties": false
              },
              "parent": {
                "type": "string",
                "description": "the ID of parent Building"
              },
              "children": {
                "type": "array",
                "description": "the IDs of the children",
                "items": {"type": "string"}
              },
              "geometry": { 
                "type": "array",
                	"items": {
                  	"type": "object",
                  	"$ref": "../geomprimitives.schema.json#/MultiSurface" 
                	}
              	}              	
            },
           	"required": ["type"],
           	"additionalProperties": false
         	}
       	]
    	},
    "+WeatherStation": {
  		"allOf": [
  			{ "$ref": "../cityobjects.schema.json#/_AbstractCityObject" },
  			{
  				"properties": {
  					"type": { "enum": ["+WeatherStation"] },
  					"attributes": {
  							"type": "object",
  							"properties": {
  								"stationName": { "type": "string" },
  								"weatherData": {
  									"type": "array",
    								"items": {
    									"$ref": "#/definitions/weatherData"
    								}
  								}
  							}
  					},
  					"geometry" : { 
  						"type": "array",
  						"items": {
  							"type": "object",
  							"$ref":"../geomprimitives.schema.json#/MultiPoint" 
  						},
  						"minItems":0,
              "maxItems":1
  					}
  				},
  				"required": ["type"],
          "additionalProperties": false
  			}
  		]
  	},
  	"+Construction": {
  		"type": "object",
  		"properties": {
  			"type": { "enum": ["+Construction"] },
  			"parent": {
           "type": "string",
            "description": "the ID of parent Building"
         },
        "children": {
           "type": "array",
            "description": "the IDs of the children",
            "items": {"type": "string"}
         },
  			"attributes": {
  				"type": "object",
  				"properties": {
  					"name": { "type": "string" },
  					"description": { "type": "string" },
  					"uValue": {
  						"type": "object",
             	"properties": {
               	"value": { "type": "number" },
               	"uom": { "type": "string" } 
             	}
  					},
  					"opticalProperties": {
  						"type": "object",
  						"properties": {
  						"emissivity": {
  							"type": "array",
  							"items": {
  								"type": "object",
  								"properties": {
  									"fraction": {
  										"type": "object",
  										"properties": {
  											"uom": {"type": "string"},
  											"value": {"type": "number"}
  										}
  									},
  									"surface": { "enum": ["inside", "outside"] }
  								},
  								"required": ["fraction", "surface"],
          				"additionalProperties": false
  							}
  						},
  						"reflectance": {
  							"type": "array",
  							"items": {
  								"type": "object",
  								"properties": {
  									"fraction": {
  										"type": "object",
  										"properties": {
  											"uom": {"type": "string"},
  											"value": {"type": "number"}
  										}
  									},
  									"surface": { "enum": ["inside", "outside"] },
  									"wavelengthRange": { "enum": ["solar", "infrared", "visible", "total"] }
  								},
  								"required": ["fraction", "surface", "wavelengthRange"],
          				"additionalProperties": false
  							}
  						},
  						"transmittance": {
  							"type": "array",
  							"items": {
  								"type": "object",
  								"properties": {
  									"fraction": {
  										"type": "object",
  										"properties": {
  											"uom": {"type": "string"},
  											"value": {"type": "number"}
  										}
  									},
  									"wavelengthRange": { "enum": ["solar", "infrared", "visible", "total"] }	
  								},
  								"required": ["fraction", "wavelengthRange"],
          				"additionalProperties": false
  							}		
  						},
  						"glazingRatio": {
  							"type": "object",
  							"properties": {
  								"uom": {"type": "string"},
  								"value": {"type": "number"}
  							},
  							"required": ["uom", "value"],
          			"additionalProperties": false
  						}	
  						}
  					},
  					"serviceLife" : { "$ref":"#/definitions/serviceLife" }
  				}
  			}
  		},
  		"required": ["type"]
  	},
  	"+Layer": {
  		"type": "object",
  		"properties": {
  			"type": {"enum": ["+Layer"] },
  			"attributes": {
  				"type": "object",
  				"properties": {
  					"name": { "type": "string" },
  					"description": { "type": "string" }
  				 },
  				"additionalProperties": false
  			},
  			"parent": {
           "type": "string",
            "description": "the ID of parent Building"
         },
        "children": {
             "type": "array",
             "description": "the IDs of the children",
             "items": {"type": "string"}
          }
              
  		},
  		"required": ["type"]
  	},
  	"+LayerComponent": {
  		"type": "object",
  		"properties": {
  			"type": {"enum": ["+LayerComponent"] },
  			"attributes": {
  				"type": "object",
  				"properties": {
  					"name": { "type": "string" },
  					"description": { "type": "string" },
  					"areaFraction" : {
  						"type": "object",
  						"properties": {
  							"value": { "type": "number" },
                "uom": { "type": "string" } 
  						}
  					},
  					"thickness": {
  						"type": "object",
  						"properties": {
  							"value": { "type": "number" },
                "uom": { "type": "string" } 
  						}
  					},
  					"serviceLife": { "$ref":"#/definitions/serviceLife" }
  				},
  				"additionalProperties": false
  			},
  			"parent": {
          "type": "string",
           "description": "the ID of parent Building"
         },
        "children": {
            "type": "array",
            "description": "the IDs of the children",
            "items": {"type": "string"},
            "minItems": 0,
            "maxItems": 1
         }		
  		},
  		"required": ["type"]
  	},
  	"+Gas": {
  		"type": "object",
  		"properties": {
  			"type": {"enum": ["+Gas"]},
  			"attributes": {
  				"type": "object",
  				"properties": {
  					"name": { "type": "string" },
  					"description": { "type": "string" },
  					"isVentilated": { "type": "boolean" },
  					"rValue": {
  						"type": "object",
  						"properties": {
  							"value": { "type": "number" },
              	"uom": { "type": "string" } 
  						}
  					},
  					"imageTexture": {
  						"type": "object",
  						"properties": {
  							"url": { "type": "string", "format": "uri" },
  							"repeatS": { "type": "boolean" },
  							"repeatT": { "type": "boolean" }
  						}
  					}
  			},
  			"additionalProperties": false
  		},
  			"parent": {
          "type": "string",
           "description": "the ID of parent Building"
       }
  	 },
  	"required": ["type"]
  },
    "+SolidMaterial": {
  		"type": "object",
  		"properties": {
  			"type": { "enum": ["+SolidMaterial"]},
  			"attributes": {
  				"type": "object",
  				"properties": {  			
  					"name": { "type": "string" },
  					"description": { "type": "string" },
  					"conductivity": {
  						"type": "object",
  						"properties": {
  						"value": { "type": "number" },
               "uom": { "type": "string" } 
  					}
  			},
  					"density": {
  					"type": "object",
  					"properties": {
  						"value": { "type": "number" },
               "uom": { "type": "string" } 
  					}
  			},
  					"permeance": {
  						"type": "object",
  						"properties": {
  						"value": { "type": "number" },
               "uom": { "type": "string" } 
  					}
  			},
  					"porosity": {
  						"type": "object",
  						"properties": {
  						"value": { "type": "number" },
               "uom": { "type": "string" } 
  					}
  			},
  					"specificHeat": {
  						"type": "object",
  						"properties": {
  						"value": { "type": "number" },
               "uom": { "type": "string" } 
  					}
  			},
  					"embodiedCarbon": {
  						"type": "object",
  						"properties": {
  						"value": { "type": "number" },
               "uom": { "type": "string" } 
  					}
  			},
  					"embodiedEnergy": {
  						"type": "object",
  						"properties": {
  						"value": { "type": "number" },
               "uom": { "type": "string" } 
  					}
  			},
  					"imageTexture": {
  						"type": "object",
  						"properties": {
  							"url": { "type": "string", "format": "uri" },
  							"repeatS": { "type": "boolean" },
  							"repeatT": { "type": "boolean" }
  				}
  			}
  		},
  				"additionalProperties": false
  			},
  			"parent": {
          "type": "string",
           "description": "the ID of parent Building"
         }
  	},
  	"required": ["type"]
  }
 }
}