Commit 21bc60b1 authored by Rushikesh Padsala's avatar Rushikesh Padsala
Browse files

Initial commit

parents
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store
\ No newline at end of file
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
energy-ade2-citydb
\ No newline at end of file
<component name="ArtifactManager">
<artifact type="jar" name="energy-ade2-citydb:jar">
<output-path>$PROJECT_DIR$/out/artifacts/energy_ade2_citydb_jar</output-path>
<root id="archive" name="energy-ade2-citydb.jar">
<element id="module-output" name="energy-ade2-citydb.main" />
<element id="module-output" name="DigiTwins4PEDs.main" />
<element id="module-output" name="DigiTwins4PEDs.energy-ade-samples.main" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.tomcat/tomcat-juli/10.1.29/e98eedfa681bbf3b53d409567613cef32b6092c3/tomcat-juli-10.1.29.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.glassfish.jaxb/xsom/2.3.2/157dc2bf479c524d63a214e8fe9888f45a667db/xsom-2.3.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-params/5.7.1/6f81b3c053433a8a40a378d2b4f056c5c31e50ff/junit-jupiter-params-5.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.oracle.sdoapi/sdoapi/23.5.0.24.07/b9edd683fb98e3d00a2732e9e96b2dde14e29f6f/sdoapi-23.5.0.24.07.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.16.0/3eb54effe40946dfb06dc5cd6c7ce4116cd51ea4/commons-lang3-3.16.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.geotools.ogc/net.opengis.ows/31.3/949e4c83a8ccae7142e4e5962dcd069c0c2b5258/net.opengis.ows-31.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.glassfish.jaxb/txw2/2.3.2/ce5be7da2e442c25ec14c766cb60cb802741727b/txw2-2.3.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.16.1/377d592e740dc77124e0901291dbfaa6810a200e/commons-io-2.16.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.eclipse.emf/org.eclipse.emf.common/2.15.0/e0f1608a9855651e899d609b106ae78f903a2f04/org.eclipse.emf.common-2.15.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.tika/tika-core/2.9.2/796a21391780339e3d4862626339b49df170024e/tika-core-2.9.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.locationtech.jts/jts-core/1.20.0/25b72c9548a328cb1aea8a6b89d710a31ade5403/jts-core-1.20.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-launcher/1.7.1/fba1a549c3b51882a912eb454cad924a573d0df4/junit-platform-launcher-1.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.media/jai_core/1.1.3/b179d2efb1174658483e8b41bf4ac9d2eb5de438/jai_core-1.1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.geotools/gt-epsg-wkt/31.3/71222b6e4900a9a3599f9f670ccfcb29dc065b83/gt-epsg-wkt-31.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/impexp-core/5.5.0/499325bfd1e59f2914c774a4cf0dfbdad771821b/impexp-core-5.5.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/jakarta.activation/jakarta.activation-api/1.2.1/562a587face36ec7eff2db7f2fc95425c6602bc1/jakarta.activation-api-1.2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents.core5/httpcore5/5.1.3/d1638d1e5f2793f187d4144c702a93524ba6fd3b/httpcore5-5.1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/java3d/j3d-core-utils/1.5.2/b4771c3c5a4f7088e27171ead7f20f9fbe07bc18/j3d-core-utils-1.5.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.xmlresolver/xmlresolver/5.2.2/5624ede8b8e374979194acaae9f34cff23b62b3e/xmlresolver-5.2.2-data.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/swingx-all/1.6.10/21ce028e26ff0259d50c4c66aa80a96ac5fccc00/swingx-all-1.6.10.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-commons/1.10.0/d533ff2c286eaf963566f92baf5f8a06628d2609/junit-platform-commons-1.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sun.istack/istack-commons-runtime/3.0.8/d6a97364045aa6b99bf2d3c566a3f98599c2d296/istack-commons-runtime-3.0.8.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-commons/1.7.1/7c49f0074842d07f4335de2389d624a7437d1407/junit-platform-commons-1.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-engine/1.7.1/d276a968c57f5d60a421dedd1f8b6ca2fae09e86/junit-platform-engine-1.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.univocity/univocity-parsers/2.9.1/81827d186e42129f23c3f1e002b757ad4b4e769/univocity-parsers-2.9.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.formdev/flatlaf-swingx/3.5.1/302fc178747b5dc0ef6e3916756b7f03ad87448d/flatlaf-swingx-3.5.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.vertical-blank/sql-formatter/2.0.5/96c4c0e7c0a5be639ae8f56ca812410b1a00f5d2/sql-formatter-2.0.5.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-engine/5.7.1/7fcfa59c5533abb41f86b1408960737eeaf1f49f/junit-jupiter-engine-5.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/info.picocli/picocli/4.7.6/77c2cb87814b6a03d431fc856024a9f8ff605ad4/picocli-4.7.6.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.inject/javax.inject/1/6975da39a7040257bd51d21a231b76c915872d38/javax.inject-1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-codec/commons-codec/1.17.1/973638b7149d333563584137ebf13a691bb60579/commons-codec-1.17.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/impexp-client-gui/5.5.0/9ae31b0777ce3009d3625ebc86672e4bec726a70/impexp-client-gui-5.5.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.geotools/gt-metadata/31.3/1a9a85d27dbc53d479450203aae6ff678859ffed/gt-metadata-31.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.geotools/gt-api/31.3/d12331559725dcc0758a0429c133873df3e99c42/gt-api-31.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_annotations/2.27.0/91b2c29d8a6148b5e2e4930f070d4840e2e48e34/error_prone_annotations-2.27.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/tech.uom.lib/uom-lib-common/2.1/17d8a4458116466b004976f3c7834be185cffb86/uom-lib-common-2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ejml/ejml-core/0.41/92ac2bee332a5697c42e576b94d563ba8c25877c/ejml-core-0.41.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter/5.7.1/a4a80ea9b0cca47781edcf9f2d4f1f4f7ce9436e/junit-jupiter-5.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/3dcitydb-ade-citygml4j/1.2.0/fe169ce5b14e28eba49b12899940722d4c4ce94a/3dcitydb-ade-citygml4j-1.2.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jvnet.staxex/stax-ex/1.8.1/78011e483a21102fb4858f3e8f269a677e50aa23/stax-ex-1.8.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.formdev/flatlaf/3.5.1/8e4295f9ba5756736fa60a3a567fd9cd8840594f/flatlaf-3.5.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.oracle.database.jdbc/ojdbc11/23.5.0.24.07/6e07003d57be5e280ef0492209e20fa27edec5b6/ojdbc11-23.5.0.24.07.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/it.geosolutions.jgridshift/jgridshift-core/1.3/314702a7b6e634e1c74589983a6762974b9c51c8/jgridshift-core-1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/swingx-ws/1.1.6/3b49e4b6ab3bd66ee753765539c89abe7ecedec7/swingx-ws-1.1.6.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-compress/1.27.1/a19151084758e2fbb6b41eddaa88e7b8ff4e6599/commons-compress-1.27.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sun.xml.fastinfoset/FastInfoset/1.2.16/4eb6a0adad553bf759ffe86927df6f3b848c8bea/FastInfoset-1.2.16.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.checkerframework/checker-qual/3.42.0/638ec33f363a94d41a4f03c3e7d3dcfba64e402d/checker-qual-3.42.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-api/5.10.0/2fe4ba3d31d5067878e468c96aa039005a9134d3/junit-jupiter-api-5.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.opentest4j/opentest4j/1.3.0/152ea56b3a72f655d4fd677fc0ef2596c3dd5e6e/opentest4j-1.3.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sun.xml.bind.external/relaxng-datatype/2.3.2/d202e2c8bdd0a5286490260e311f0df1955f4dbf/relaxng-datatype-2.3.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.xmlresolver/xmlresolver/5.2.2/152378e04ba01898847bf38fad5023c7d52f0c9d/xmlresolver-5.2.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.tomcat/tomcat-jdbc/10.1.29/76f4a58c65976a6340981ca5438f8f0ed7e3913e/tomcat-jdbc-10.1.29.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.postgis/postgis-geometry/2024.1.0/5796f9c7af460346155e7882d70941ac88779a7c/postgis-geometry-2024.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-api/5.7.1/a7261dff44e64aea7f621842eac5977fd6d2412d/junit-jupiter-api-5.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.geotools/gt-referencing/31.3/c61240c5396e0e1828ea6b35427570e6741ccbf6/gt-referencing-31.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.11.0/527175ca6d81050b53bdd4c457a6d6e017626b0e/gson-2.11.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/impexp-config/5.5.0/76dde140997188d79a178bf200ab015e3ff34234/impexp-config-5.5.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.13/80229737f704b121a318bba5d5deacbcf395bc77/slf4j-api-2.0.13.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/texture-atlas-creator/1.5.0/d452d9b768b88dfa4cbb8faca93fb7fbff4d166a/texture-atlas-creator-1.5.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.weisj/jsvg/1.4.0/3f057f61a79b63015dcdb3ae15f935951e4bedd9/jsvg-1.4.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.formdev/flatlaf-extras/3.5.1/42cf9ed86d4ae9d95a6013db792c8f2df642ca56/flatlaf-extras-3.5.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.eclipse.emf/org.eclipse.emf.ecore/2.15.0/ccfc09c8b6a0d4fadde09216d8a07678d38998de/org.eclipse.emf.ecore-2.15.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.measure/unit-api/2.1.3/76e3c98cc101cdb8ebf437e4327e8de4ab92613/unit-api-2.1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apiguardian/apiguardian-api/1.1.1/7ea550039f115fcc40990925490b8ebd4b93024a/apiguardian-api-1.1.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citygml4j/citygml4j/2.13.0/e08fae3557b5e0d51bd4882c9e87656248de277a/citygml4j-2.13.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/java3d/vecmath/1.5.2/79846ba34cbd89e2422d74d53752f993dcc2ccaf/vecmath-1.5.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/si.uom/si-quantity/2.1/5617d2cf30898ffcc760807009fe947483bd867b/si-quantity-2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.geographiclib/GeographicLib-Java/1.49/7ff2164e69fa04e1ef2ca5079e1cee298a936ea1/GeographicLib-Java-1.49.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents.core5/httpcore5-h2/5.1.3/4664b59b09f5ee008e37a963bbb92f4068e91696/httpcore5-h2-5.1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/impexp-vis-plugin/5.5.0/b1e50511d3a5bf50e5dd174b89454719640343ee/impexp-vis-plugin-5.5.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-engine/1.10.0/276c4edcf64fabb5a139fa7b4f99330d7a93b804/junit-platform-engine-1.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.postgresql/postgresql/42.7.4/264310fd7b2cd76738787dc0b9f7ea2e3b11adc1/postgresql-42.7.4.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-pool/commons-pool/1.5.4/75b6e20c596ed2945a259cea26d7fadd298398e6/commons-pool-1.5.4.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.saxon/Saxon-HE/12.5/57c007520e2879387b8d13d0a512e9566eeffa73/Saxon-HE-12.5.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.postgis/postgis-jdbc/2024.1.0/4d369c43c20784bf61a3a2e52ec939dab3e1a2cc/postgis-jdbc-2024.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.eclipse.emf/org.eclipse.emf.ecore.xmi/2.15.0/9aa1a584be1df1eb0ef8fae7123784af6e51f47a/org.eclipse.emf.ecore.xmi-2.15.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/impexp-util/5.5.0/df531278608e84dee60df5d5836f818e7798708e/impexp-util-5.5.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-params/5.10.0/9041c7365495a897a64782ea5a6fdb99dab1814e/junit-jupiter-params-5.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citygml4j/citygson/1.2.0/e06d33cb006b87d0951d1dab3e671686af7295ba/citygson-1.2.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.geotools/gt-epsg-extension/31.3/eee976608c4fa889f07830cc0c59f1d7c2a9145c/gt-epsg-extension-31.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/impexp-client-cli/5.5.0/a5d3334b4524edf16c93f7277e730483551e7a9f/impexp-client-cli-5.5.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/si.uom/si-units/2.1/7e812192ff1abbef6c79123249840c42b4e145d4/si-units-2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/java3d/j3d-core/1.5.2/fc4d1da847ea5c4526bac4af90faafcbe60ba3a8/j3d-core-1.5.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/sqlbuilder/2.3.0/8106eb1cc6f51e720eef07ad2928069684915718/sqlbuilder-2.3.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter/5.10.0/8fea1d9c58b2156f1b998f2f18da04bc9e087f74/junit-jupiter-5.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/jakarta.xml.bind/jakarta.xml.bind-api/2.3.2/8d49996a4338670764d7ca4b85a1c4ccf7fe665d/jakarta.xml.bind-api-2.3.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-engine/5.10.0/90587932d718fc51a48112d33045a18476c542ad/junit-jupiter-engine-5.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.geotools.ogc/org.w3.xlink/31.3/ce8814c9858f554d7819d4a835a6a371a693604/org.w3.xlink-31.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.fifesoft/rsyntaxtextarea/3.5.1/b862174232441c6ed6361765ffc8b7e4584ca208/rsyntaxtextarea-3.5.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/jakarta.annotation/jakarta.annotation-api/1.3.4/a858ec3f0ebd2b8d855c1ddded2cde9b381b0517/jakarta.annotation-api-1.3.4.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apiguardian/apiguardian-api/1.1.0/fc9dff4bb36d627bdc553de77e1f17efd790876c/apiguardian-api-1.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/systems.uom/systems-common/2.1/a173cc6f1fedc8b32498d6cc9599251baa72de27/systems-common-2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.glassfish.jaxb/jaxb-runtime/2.3.2/5528bc882ea499a09d720b42af11785c4fc6be2a/jaxb-runtime-2.3.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents.client5/httpclient5/5.1.3/13c984b7b881afcff3a7f0bb95878724a48a4b66/httpclient5-5.1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.opentest4j/opentest4j/1.2.0/28c11eb91f9b6d8e200631d46e20a7f407f2a046/opentest4j-1.2.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-nop/2.0.13/f46230afff57b938ff9e7ac315270a83fdf21e87/slf4j-nop-2.0.13.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ejml/ejml-ddense/0.41/782c80d4c3c8a3432c4641f24c177f336a360f9c/ejml-ddense-0.41.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/tech.units/indriya/2.1.3/d3cc55737619a2f50382592d369726e49d4f69bf/indriya-2.1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.h2database/h2/2.3.232/4fcc05d966ccdb2812ae8b9a718f69226c0cf4e2/h2-2.3.232.jar" path-in-jar="/" />
</root>
</artifact>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<compositeConfiguration>
<compositeBuild compositeDefinitionSource="SCRIPT">
<builds>
<build path="$PROJECT_DIR$/../energy-ade2-citygml4j" name="energy-ade2-citygml4j">
<projects>
<project path="$PROJECT_DIR$/../energy-ade2-citygml4j" />
<project path="$PROJECT_DIR$/../energy-ade2-citygml4j/energy-ade-samples" />
</projects>
</build>
</builds>
</compositeBuild>
</compositeConfiguration>
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="C:/Gradle" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/../energy-ade2-citygml4j" />
<option value="$PROJECT_DIR$/../energy-ade2-citygml4j/energy-ade-samples" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredPackages">
<value>
<list size="2">
<item index="0" class="java.lang.String" itemvalue="transformers" />
<item index="1" class="java.lang.String" itemvalue="pygls" />
</list>
</value>
</option>
</inspection_tool>
</profile>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$/../digitwins4peds" />
<file type="web" url="file://$PROJECT_DIR$" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="liberica-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$/../energy-ade2-citygml4j" vcs="Git" />
</component>
</project>
\ No newline at end of file
# Energy ADE (ver 2 beta 7) module for importer/exporter plugin v5.5.1 for 3DCityDB v4.4.2 - Work in Progress
[Java 17](https://bell-sw.com/pages/downloads/#jdk-17-lts) is the minimum requirement.
This is a 3DCityDB importer/exporter plugin module for the **Energy Application Domain Extension** (Energy ADE) v2 beta7 for CityGML.
There are
currently _no plans to migrate_ the Energy ADE 2 module to citygml4j v3, CityGML 3 or 3DCityDB v5.
Priority List:
- Timeseries
- DataType
- Core
- Resource
- UrbanFunctionAreas
- WeatherStation
- Layered Construction
- Schedule
- Devices
- BuildingPhysics
- Occupancy
\ No newline at end of file
plugins {
id 'java'
id 'java-library'
id 'distribution'
id 'maven-publish'
id 'signing'
id 'io.github.gradle-nexus.publish-plugin' version '2.0.0'
}
group = 'de.stuttgart.hft'
version = 'beta7'
description 'Energy ADE2 extension for the 3DCityDB'
repositories {
maven {
url 'https://3dcitydb.org/maven'
}
maven {
url 'https://repo.osgeo.org/repository/release'
}
mavenCentral()
mavenLocal()
}
configurations {
citygml4j
}
dependencies {
api 'org.citydb:impexp-client-gui:5.5.1'
api 'org.citygml4j.ade:energy-ade2-citygml4j:2.0.1'
citygml4j('org.citygml4j.ade:energy-ade2-citygml4j:2.0.1') {
transitive = false
}
testImplementation platform('org.junit:junit-bom:5.10.0')
testImplementation 'org.junit.jupiter:junit-jupiter'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}
test {
useJUnitPlatform()
}
distributions.main {
distributionBaseName = 'energy-ade2'
contents {
from 'README.md'
into('lib') {
from jar
from configurations.citygml4j
}
into('schema-mapping') {
from "$rootDir/resources/database/schema-mapping"
}
into('3dcitydb') {
from "$rootDir/resources/database/3dcitydb"
}
}
}
\ No newline at end of file
#Wed Feb 12 14:58:14 CET 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--
-- CityGML Energy ADE 2.0 (beta 7)
--
-- Last update: 2025-06-25
--
-- This DDL script installs the 3DCityDB schema for the Energy ADE 2.0. It must be run
-- from within the ADE Manager plugin of the 3DCityDB Importer/Exporter.
--
-- This script was first automatically generated using the 3DCityDB ADE Manager
-- and successively edited and restructured by:
--
-- Dr. Giorgio Agugiaro
-- 3D Geoinformation group
-- Delft University of Technology
-- The Netherlands
--
-- https://3d.bk.tudelft.nl/gagugiaro/
--
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ***************************** CREATE_ADE_DB.SQL execution START ************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- *********************************** Create Sequences ***********************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CREATE SEQUENCE ng2_ctyobj_relation_seq INCREMENT BY 1 MINVALUE 0 MAXVALUE 9223372036854775807 START WITH 1 CACHE 1 NO CYCLE OWNED BY NONE;
CREATE SEQUENCE ng2_optical_property_seq INCREMENT BY 1 MINVALUE 0 MAXVALUE 9223372036854775807 START WITH 1 CACHE 1 NO CYCLE OWNED BY NONE;
CREATE SEQUENCE ng2_qualified_attribute_seq INCREMENT BY 1 MINVALUE 0 MAXVALUE 9223372036854775807 START WITH 1 CACHE 1 NO CYCLE OWNED BY NONE;
CREATE SEQUENCE ng2_suitability_seq INCREMENT BY 1 MINVALUE 0 MAXVALUE 9223372036854775807 START WITH 1 CACHE 1 NO CYCLE OWNED BY NONE;
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- *********************************** Create tables **************************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- --------------------------------------------------------------------
-- ng2_address_to_building_unit
-- --------------------------------------------------------------------
CREATE TABLE ng2_address_to_building_unit (
address_id BIGINT NOT NULL,
building_unit_id BIGINT NOT NULL,
PRIMARY KEY (address_id, building_unit_id)
);
-- --------------------------------------------------------------------
-- ng2_building - extends building table
-- --------------------------------------------------------------------
CREATE TABLE ng2_building (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
is_protected NUMERIC,
constr_weight VARCHAR,
constr_weight_codespace VARCHAR,
attic_thm_status VARCHAR,
basement_thm_status VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_building_partition
-- --------------------------------------------------------------------
CREATE TABLE ng2_building_partition (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
-- Thermal Zone attributes
heat_capacity NUMERIC,
heat_capacity_uom VARCHAR,
infiltration_rate NUMERIC,
infiltration_rate_uom VARCHAR,
is_cooled NUMERIC,
is_heated NUMERIC,
coincides_with_lod2_hull NUMERIC,
coincides_with_lod3_hull NUMERIC,
-- Usage Zone and BuildingUnit attributes
type VARCHAR,
type_codespace VARCHAR,
-- Usage Zone attributes
is_primary NUMERIC,
num_of_building_units INTEGER,
int_heat_gains NUMERIC,
int_heat_gains_uom VARCHAR,
int_heat_gains_conv NUMERIC,
int_heat_gains_conv_uom VARCHAR,
int_heat_gains_lat NUMERIC,
int_heat_gains_lat_uom VARCHAR,
int_heat_gains_rad NUMERIC,
int_heat_gains_rad_uom VARCHAR,
-- BuildingUnit attributes
num_of_rooms INTEGER,
owner_name VARCHAR,
ownership_type VARCHAR,
ownership_type_codespace VARCHAR,
-- Used to store the FK to the schedule(s)
cooling_schedule_id BIGINT,
heating_schedule_id BIGINT,
ventilation_schedule_id BIGINT,
-- Used to store the association from UsageZone to BuildingUnit
usage_zone_id BIGINT,
-- Used to store the association from ThermalZone to UsageZone
thermal_zone_id BIGINT,
-- Parent id (Building(Part) of a ThermalZone, UsageZone or BuildintUnit
building_id BIGINT,
-- FK to the geometries in the surface_geometry table
lod1_solid_id BIGINT,
lod2_solid_id BIGINT,
lod3_solid_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_cityobject - extends cityobject table
-- --------------------------------------------------------------------
CREATE TABLE ng2_cityobject (
id BIGINT PRIMARY KEY,
layered_construction_id BIGINT,
ref_point geometry(POINTZ)
);
-- --------------------------------------------------------------------
-- ng2_ctyobj_relation
-- --------------------------------------------------------------------
CREATE TABLE ng2_ctyobj_relation (
id BIGINT PRIMARY KEY DEFAULT nextval('ng2_ctyobj_relation_seq'::regclass),
-- this refers to ng2_cityobject (id), i.e. the source
ng2_cityobject_id BIGINT,
-- this refers to cityobject (id), i.e. the target
cityobject_id BIGINT,
relation_type VARCHAR,
relation_type_codespace VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_device
-- --------------------------------------------------------------------
CREATE TABLE ng2_device (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
-- AbstractDevice attributes (also for LightingDevice, GenericDevice, GenericElectricalDevice)
model VARCHAR,
num_of_devices INTEGER,
year_of_manufacture INTEGER,
installed_power NUMERIC,
installed_power_uom VARCHAR,
nominal_efficiency NUMERIC,
nominal_efficiency_uom VARCHAR,
efficiency_indicator VARCHAR,
heat_diss NUMERIC,
heat_diss_uom VARCHAR,
heat_diss_conv NUMERIC,
heat_diss_conv_uom VARCHAR,
heat_diss_lat NUMERIC,
heat_diss_lat_uom VARCHAR,
heat_diss_rad NUMERIC,
heat_diss_rad_uom VARCHAR,
-- HeatPump attributes
heat_source VARCHAR,
cop_source_temp NUMERIC,
cop_source_temp_uom VARCHAR,
cop_operation_temp NUMERIC,
cop_operation_temp_uom VARCHAR,
-- Boiler attributes
has_condensation NUMERIC,
-- MovableShadingDevice attributes
type VARCHAR,
type_codespace VARCHAR,
installation_side VARCHAR,
max_cover_ratio NUMERIC,
max_cover_ratio_uom VARCHAR,
-- FK to table optical_property
transmittance_id BIGINT,
cityobject_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_device_operation
-- --------------------------------------------------------------------
CREATE TABLE ng2_device_operation (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
yearly_global_efficiency NUMERIC,
-- FK
schedule_id BIGINT,
device_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_energy_perf_cert
-- --------------------------------------------------------------------
CREATE TABLE ng2_energy_perf_cert (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
label VARCHAR,
value NUMERIC,
value_uom VARCHAR,
issue_date DATE,
expiration_date DATE,
cert_method VARCHAR,
cert_uri VARCHAR,
-- FK
building_id BIGINT,
building_partition_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_layer
-- --------------------------------------------------------------------
CREATE TABLE ng2_layer (
id BIGINT PRIMARY KEY,
thickness NUMERIC,
thickness_uom VARCHAR,
material_id BIGINT,
-- FK
layered_construction_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_layered_construction
-- --------------------------------------------------------------------
CREATE TABLE ng2_layered_construction (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
u_value NUMERIC,
u_value_uom VARCHAR,
g_value NUMERIC,
g_value_uom VARCHAR,
glazing_ratio NUMERIC,
glazing_ratio_uom VARCHAR,
library_code VARCHAR,
library_code_codespace VARCHAR,
-- FKs
layered_construction_id BIGINT,
library_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_library
-- --------------------------------------------------------------------
CREATE TABLE ng2_library (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
type VARCHAR,
type_codespace VARCHAR,
author VARCHAR,
source VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_material
-- --------------------------------------------------------------------
CREATE TABLE ng2_material (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
-- Abstract library attributes
library_code VARCHAR,
library_code_codespace VARCHAR,
-- SolidMaterial attributes
thm_conductivity NUMERIC,
thm_conductivity_uom VARCHAR,
spec_heat_capacity NUMERIC,
spec_heat_capacity_uom VARCHAR,
density NUMERIC,
density_uom VARCHAR,
permeance NUMERIC,
permeance_uom VARCHAR,
porosity NUMERIC,
porosity_uom VARCHAR,
embodied_carbon NUMERIC,
embodied_carbon_uom VARCHAR,
embodied_energy NUMERIC,
embodied_energy_uom VARCHAR,
-- Gas attributes
is_ventilated NUMERIC,
r_value NUMERIC,
r_value_uom VARCHAR,
-- FK
library_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_occupants
-- --------------------------------------------------------------------
CREATE TABLE ng2_occupants (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
num_of_occupants INTEGER,
heat_diss NUMERIC,
heat_diss_uom VARCHAR,
heat_diss_conv NUMERIC,
heat_diss_conv_uom VARCHAR,
heat_diss_lat NUMERIC,
heat_diss_lat_uom VARCHAR,
heat_diss_rad NUMERIC,
heat_diss_rad_uom VARCHAR,
avg_diet_type VARCHAR,
avg_diet_type_codespace VARCHAR,
avg_income_level VARCHAR,
avg_income_level_codespace VARCHAR,
avg_instr_level VARCHAR,
avg_instr_level_codespace VARCHAR,
-- FK
schedule_id BIGINT,
building_partition_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_opening - extends (building) opening table
-- --------------------------------------------------------------------
CREATE TABLE ng2_opening (
id BIGINT PRIMARY KEY,
area NUMERIC,
area_uom VARCHAR,
azimuth NUMERIC,
azimuth_uom VARCHAR,
inclination NUMERIC,
inclination_uom VARCHAR,
ground_view_factor NUMERIC,
ground_view_factor_uom VARCHAR,
sky_view_factor NUMERIC,
sky_view_factor_uom VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_optical_property
-- --------------------------------------------------------------------
CREATE TABLE ng2_optical_property (
id BIGINT PRIMARY KEY DEFAULT nextval('ng2_optical_property_seq'::regclass),
objectclass_id INTEGER,
fraction NUMERIC,
fraction_uom VARCHAR,
surface VARCHAR,
wavelength_range VARCHAR,
-- FK
layered_construction_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_qualified_attribute
-- --------------------------------------------------------------------
CREATE TABLE ng2_qualified_attribute (
id BIGINT PRIMARY KEY DEFAULT nextval('ng2_qualified_attribute_seq'::regclass),
objectclass_id INTEGER,
type VARCHAR,
type_codespace VARCHAR,
value NUMERIC,
value_uom VARCHAR,
description VARCHAR,
source VARCHAR,
-- FK
building_id BIGINT,
building_partition_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_refurbishment_measure
-- --------------------------------------------------------------------
CREATE TABLE ng2_refurbishment_measure (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
start_date DATE,
end_date DATE,
library_code VARCHAR,
library_code_codespace VARCHAR,
-- FK
building_id BIGINT,
building_partition_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_resource
-- --------------------------------------------------------------------
CREATE TABLE ng2_resource (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
type VARCHAR,
type_codespace VARCHAR,
enduse VARCHAR,
enduse_codespace VARCHAR,
status VARCHAR,
operation_type VARCHAR,
operation_type_codespace VARCHAR,
year INTEGER,
amount_type VARCHAR,
amount_type_codespace VARCHAR,
amount NUMERIC,
amount_uom VARCHAR,
time_series_id BIGINT,
is_amount_normalized NUMERIC,
normalization_param VARCHAR,
normalization_value NUMERIC,
normalization_value_uom VARCHAR,
co2_equivalent NUMERIC,
co2_equivalent_uom VARCHAR,
costs_money NUMERIC,
costs_money_uom VARCHAR,
yields_money NUMERIC,
yields_money_uom VARCHAR,
-- Attributes for Energy
energy_carrier VARCHAR,
energy_carrier_codespace VARCHAR,
maximum_load NUMERIC,
maximum_load_uom VARCHAR,
source VARCHAR,
source_codespace VARCHAR,
-- Attributes for Waste
is_dangerous NUMERIC,
is_recyclable NUMERIC,
-- FK
cityobject_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_schedule
-- --------------------------------------------------------------------
CREATE TABLE ng2_schedule (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
library_code VARCHAR,
library_code_codespace VARCHAR,
type VARCHAR,
type_codespace VARCHAR,
start_time TIME WITHOUT TIME ZONE,
start_day INTEGER,
start_month INTEGER,
start_year INTEGER,
time_interval NUMERIC,
time_interval_unit VARCHAR,
-- time_interval_factor INTEGER, -- used for temporalExtent
-- time_interval_radix INTEGER, -- used for temporalExtent
-- DualValue Schedule
idle_value NUMERIC,
idle_value_uom VARCHAR,
usage_value NUMERIC,
usage_value_uom VARCHAR,
start_usage_time TIME WITHOUT TIME ZONE,
end_usage_time TIME WITHOUT TIME ZONE,
-- Atomic Schedule
constant_value NUMERIC,
constant_value_uom VARCHAR,
-- FK
time_series_id BIGINT,
library_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_schedule_component
-- --------------------------------------------------------------------
CREATE TABLE ng2_schedule_component (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
repetitions INTEGER NOT NULL DEFAULT 1,
additional_gap NUMERIC,
additional_gap_unit VARCHAR,
-- additional_gap_factor INTEGER,
-- additional_gap_radix INTEGER,
-- FK
parent_schedule_id BIGINT,
schedule_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_solar_collector
-- --------------------------------------------------------------------
CREATE TABLE ng2_solar_collector (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
type VARCHAR,
type_codespace VARCHAR,
cell_type VARCHAR,
cell_type_codespace VARCHAR,
module_area NUMERIC,
module_area_uom VARCHAR,
azimuth NUMERIC,
azimuth_uom VARCHAR,
inclination NUMERIC,
inclination_uom VARCHAR,
aperture_area NUMERIC,
aperture_area_uom VARCHAR,
opt_efficiency NUMERIC,
opt_efficiency_uom VARCHAR,
lin_heat_loss_coeff NUMERIC,
quad_heat_loss_coeff NUMERIC,
-- FK
lod2_multi_surface_id BIGINT,
lod3_multi_surface_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_storage_device
-- --------------------------------------------------------------------
CREATE TABLE ng2_storage_device (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
medium VARCHAR,
medium_codespace VARCHAR,
preparation_temp NUMERIC,
preparation_temp_uom VARCHAR,
thm_losses_factor NUMERIC,
thm_losses_factor_uom VARCHAR,
volume NUMERIC,
volume_uom VARCHAR,
batt_techn VARCHAR,
batt_techn_codespace VARCHAR,
power_capacity NUMERIC,
power_capacity_uom VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_suitability
-- --------------------------------------------------------------------
CREATE TABLE ng2_suitability (
id BIGINT PRIMARY KEY DEFAULT nextval('ng2_suitability_seq'::regclass),
reason VARCHAR,
reason_codespace VARCHAR,
value NUMERIC,
value_uom VARCHAR,
description VARCHAR,
schedule_id BIGINT,
-- FK
cityobject_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_them_surf_to_thermal_zone
-- --------------------------------------------------------------------
CREATE TABLE ng2_them_surf_to_thermal_zone (
thematic_surface_id BIGINT NOT NULL,
thermal_zone_id BIGINT NOT NULL,
PRIMARY KEY (thematic_surface_id, thermal_zone_id)
);
-- --------------------------------------------------------------------
-- ng2_thematic_surface - extends (building) thematic_surface table
-- --------------------------------------------------------------------
CREATE TABLE ng2_thematic_surface (
id BIGINT PRIMARY KEY,
total_surf_area NUMERIC,
total_surf_area_uom VARCHAR,
opaque_surf_area NUMERIC,
opaque_surf_area_uom VARCHAR,
open_to_surf_ratio NUMERIC,
open_to_surf_ratio_uom VARCHAR,
thickness NUMERIC,
thickness_uom VARCHAR,
azimuth NUMERIC,
azimuth_uom VARCHAR,
inclination NUMERIC,
inclination_uom VARCHAR,
ground_view_factor NUMERIC,
ground_view_factor_uom VARCHAR,
sky_view_factor NUMERIC,
sky_view_factor_uom VARCHAR,
is_adiabatic NUMERIC,
heat_capacity NUMERIC,
heat_capacity_uom VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_time_series
-- --------------------------------------------------------------------
CREATE TABLE ng2_time_series (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
-- AbstractTieSeries attributes
acquisition_method VARCHAR,
acquisition_method_codespace VARCHAR,
interpolation_type VARCHAR,
source VARCHAR,
-- Other attributes
period_begin TIMESTAMP WITH TIME ZONE,
period_end TIMESTAMP WITH TIME ZONE,
start_time TIME WITHOUT TIME ZONE,
start_day INTEGER,
start_month INTEGER,
temporal_extent NUMERIC,
temporal_extent_unit VARCHAR,
-- temporal_extent_factor INTEGER,
-- temporal_extent_radix INTEGER,
time_interval NUMERIC,
time_interval_unit VARCHAR,
-- time_interval_factor INTEGER,
-- time_interval_radix INTEGER,
values_list TEXT,
values_list_uom VARCHAR,
uom VARCHAR,
file_uri VARCHAR,
num_of_header_lines INTEGER,
field_separator VARCHAR,
record_separator VARCHAR,
value_column_number INTEGER,
decimal_symbol VARCHAR,
auth_type VARCHAR,
auth_type_codespace VARCHAR,
base_url VARCHAR,
connection_type VARCHAR,
connection_type_codespace VARCHAR,
datastream_id VARCHAR,
link_to_observation VARCHAR,
link_to_sensor_description VARCHAR,
mqtt_server VARCHAR,
mqtt_topic VARCHAR,
observation_id VARCHAR,
observation_property VARCHAR,
sensor_id VARCHAR,
sensor_name VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_urban_function_area
-- --------------------------------------------------------------------
CREATE TABLE ng2_urban_function_area (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
code VARCHAR,
code_codespace VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_utl_ntw_connection
-- --------------------------------------------------------------------
CREATE TABLE ng2_utl_ntw_connection (
id BIGINT PRIMARY KEY,
network_type VARCHAR,
network_type_codespace VARCHAR,
connection_status VARCHAR,
function_in_network VARCHAR,
function_in_network_codespace VARCHAR,
usage_in_network VARCHAR,
usage_in_network_codespace VARCHAR,
network_id VARCHAR,
network_node_id VARCHAR,
-- FK
cityobject_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_weather_data
-- --------------------------------------------------------------------
CREATE TABLE ng2_weather_data (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
value_type VARCHAR,
value_type_codespace VARCHAR,
yearly_value NUMERIC,
yearly_value_uom VARCHAR,
library_code VARCHAR,
library_code_codespace VARCHAR,
-- FK
time_series_id BIGINT,
cityobject_id BIGINT,
--
position geometry(POINTZ)
);
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- *********************************** Create foreign keys ********************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- --------------------------------------------------------------------
-- ng2_address_to_building_unit
-- --------------------------------------------------------------------
ALTER TABLE ng2_address_to_building_unit ADD CONSTRAINT ng2_addr_to_bdgu_fk1 FOREIGN KEY (address_id) REFERENCES address (id) ON DELETE CASCADE;
ALTER TABLE ng2_address_to_building_unit ADD CONSTRAINT ng2_addr_to_bdgu_fk2 FOREIGN KEY (building_unit_id) REFERENCES ng2_building_partition (id) ON DELETE CASCADE;
-- --------------------------------------------------------------------
-- ng2_building
-- --------------------------------------------------------------------
ALTER TABLE ng2_building ADD CONSTRAINT ng2_bdg_fk FOREIGN KEY (id) REFERENCES building (id);
-- --------------------------------------------------------------------
-- ng2_building_partition
-- --------------------------------------------------------------------
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_lod1_fk FOREIGN KEY (lod1_solid_id) REFERENCES surface_geometry (id);
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_lod2_fk FOREIGN KEY (lod2_solid_id) REFERENCES surface_geometry (id);
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_lod3_fk FOREIGN KEY (lod3_solid_id) REFERENCES surface_geometry (id);
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_uz_fk FOREIGN KEY (usage_zone_id) REFERENCES ng2_building_partition (id) ON DELETE SET NULL;
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_tz_fk FOREIGN KEY (thermal_zone_id) REFERENCES ng2_building_partition (id) ON DELETE SET NULL;
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_bdg_fk FOREIGN KEY (building_id) REFERENCES ng2_building (id);
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_sched_fk1 FOREIGN KEY (cooling_schedule_id) REFERENCES ng2_schedule (id) ON DELETE SET NULL;
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_sched_fk2 FOREIGN KEY (heating_schedule_id) REFERENCES ng2_schedule (id) ON DELETE SET NULL;
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_sched_fk3 FOREIGN KEY (ventilation_schedule_id) REFERENCES ng2_schedule (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_cityobject
-- --------------------------------------------------------------------
ALTER TABLE ng2_cityobject ADD CONSTRAINT ng2_cto_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_cityobject ADD CONSTRAINT ng2_cto_lcns_fk FOREIGN KEY (layered_construction_id) REFERENCES ng2_layered_construction (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_ctyobj_relation
-- --------------------------------------------------------------------
ALTER TABLE ng2_ctyobj_relation ADD CONSTRAINT ng2_cto_rel_fk2 FOREIGN KEY (cityobject_id) REFERENCES cityobject (id) ON DELETE SET NULL;
ALTER TABLE ng2_ctyobj_relation ADD CONSTRAINT ng2_cto_rel_fk1 FOREIGN KEY (ng2_cityobject_id) REFERENCES ng2_cityobject (id);
-- --------------------------------------------------------------------
-- ng2_device
-- --------------------------------------------------------------------
ALTER TABLE ng2_device ADD CONSTRAINT ng2_dev_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_device ADD CONSTRAINT ng2_dev_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_device ADD CONSTRAINT ng2_dev_opt_fk FOREIGN KEY (transmittance_id) REFERENCES ng2_optical_property (id) ON DELETE SET NULL;
ALTER TABLE ng2_device ADD CONSTRAINT ng2_dev_ng2_cto_fk FOREIGN KEY (cityobject_id) REFERENCES ng2_cityobject (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_device_operation
-- --------------------------------------------------------------------
ALTER TABLE ng2_device_operation ADD CONSTRAINT ng2_dev_opr_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_device_operation ADD CONSTRAINT ng2_dev_opr_sched_fk FOREIGN KEY (schedule_id) REFERENCES ng2_schedule (id) ON DELETE SET NULL;
ALTER TABLE ng2_device_operation ADD CONSTRAINT ng2_dev_opr_dev_fk FOREIGN KEY (device_id) REFERENCES ng2_device (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_energy_perf_cert
-- --------------------------------------------------------------------
ALTER TABLE ng2_energy_perf_cert ADD CONSTRAINT ng2_epc_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_energy_perf_cert ADD CONSTRAINT ng2_epc_bdg_fk FOREIGN KEY (building_id) REFERENCES ng2_building (id) ON DELETE SET NULL;
ALTER TABLE ng2_energy_perf_cert ADD CONSTRAINT ng2_epc_bdg_part_fk FOREIGN KEY (building_partition_id) REFERENCES ng2_building_partition (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_layer
-- --------------------------------------------------------------------
ALTER TABLE ng2_layer ADD CONSTRAINT ng2_lyr_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_layer ADD CONSTRAINT ng2_lyr_mat_fk FOREIGN KEY (material_id) REFERENCES ng2_material (id) ON DELETE SET NULL;
ALTER TABLE ng2_layer ADD CONSTRAINT ng2_lyr_lcns_fk FOREIGN KEY (layered_construction_id) REFERENCES ng2_layered_construction (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_layered_construction
-- --------------------------------------------------------------------
ALTER TABLE ng2_layered_construction ADD CONSTRAINT ng2_lcns_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_layered_construction ADD CONSTRAINT ng2_lcns_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_layered_construction ADD CONSTRAINT ng2_lcns_lcns_fk FOREIGN KEY (layered_construction_id) REFERENCES ng2_layered_construction (id) ON DELETE SET NULL;
ALTER TABLE ng2_layered_construction ADD CONSTRAINT ng2_lcns_lib_fk FOREIGN KEY (library_id) REFERENCES ng2_library (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_library
-- --------------------------------------------------------------------
ALTER TABLE ng2_library ADD CONSTRAINT ng2_lib_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_library ADD CONSTRAINT ng2_lib_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
-- --------------------------------------------------------------------
-- ng2_material
-- --------------------------------------------------------------------
ALTER TABLE ng2_material ADD CONSTRAINT ng2_mat_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_material ADD CONSTRAINT ng2_mat_lib_fk FOREIGN KEY (library_id) REFERENCES ng2_library (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_occupants
-- --------------------------------------------------------------------
ALTER TABLE ng2_occupants ADD CONSTRAINT ng2_occ_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_occupants ADD CONSTRAINT ng2_occ_sched_fk FOREIGN KEY (schedule_id) REFERENCES ng2_schedule (id) ON DELETE SET NULL;
ALTER TABLE ng2_occupants ADD CONSTRAINT ng2_occ_ng2_bdgp_fk FOREIGN KEY (building_partition_id) REFERENCES ng2_building_partition (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_opening
-- --------------------------------------------------------------------
ALTER TABLE ng2_opening ADD CONSTRAINT ng2_opn_fk FOREIGN KEY (id) REFERENCES opening (id);
-- --------------------------------------------------------------------
-- ng2_optical_property
-- --------------------------------------------------------------------
ALTER TABLE ng2_optical_property ADD CONSTRAINT ng2_optpty_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_optical_property ADD CONSTRAINT ng2_optpty_lcns_fk FOREIGN KEY (layered_construction_id) REFERENCES ng2_layered_construction (id);
-- --------------------------------------------------------------------
-- ng2_qualified_attribute
-- --------------------------------------------------------------------
ALTER TABLE ng2_qualified_attribute ADD CONSTRAINT ng2_qatt_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_qualified_attribute ADD CONSTRAINT ng2_qatt_bdg_fk FOREIGN KEY (building_id) REFERENCES ng2_building (id);
ALTER TABLE ng2_qualified_attribute ADD CONSTRAINT ng2_qatt_bdg_part_fk FOREIGN KEY (building_partition_id) REFERENCES ng2_building_partition (id);
-- --------------------------------------------------------------------
-- ng2_refurbishment_measure
-- --------------------------------------------------------------------
ALTER TABLE ng2_refurbishment_measure ADD CONSTRAINT ng2_refurb_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_refurbishment_measure ADD CONSTRAINT ng2_refurb_bdg_fk FOREIGN KEY (building_id) REFERENCES ng2_building (id) ON DELETE SET NULL;
ALTER TABLE ng2_refurbishment_measure ADD CONSTRAINT ng2_refurb_bdg_part_fk FOREIGN KEY (building_partition_id) REFERENCES ng2_building_partition (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_resource
-- --------------------------------------------------------------------
ALTER TABLE ng2_resource ADD CONSTRAINT ng2_res_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_resource ADD CONSTRAINT ng2_res_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_resource ADD CONSTRAINT ng2_res_ts_fk FOREIGN KEY (time_series_id) REFERENCES ng2_time_series (id) ON DELETE SET NULL;
ALTER TABLE ng2_resource ADD CONSTRAINT ng2_res_cto_fk FOREIGN KEY (cityobject_id) REFERENCES ng2_cityobject (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_schedule
-- --------------------------------------------------------------------
ALTER TABLE ng2_schedule ADD CONSTRAINT ng2_sched_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_schedule ADD CONSTRAINT ng2_sched_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_schedule ADD CONSTRAINT ng2_sched_ts_fk FOREIGN KEY (time_series_id) REFERENCES ng2_time_series (id) ON DELETE SET NULL;
ALTER TABLE ng2_schedule ADD CONSTRAINT ng2_sched_lib_fk FOREIGN KEY (library_id) REFERENCES ng2_library (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_schedule_component
-- --------------------------------------------------------------------
ALTER TABLE ng2_schedule_component ADD CONSTRAINT ng2_sched_comp_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_schedule_component ADD CONSTRAINT ng2_sched_comp_sched_fk1 FOREIGN KEY (parent_schedule_id) REFERENCES ng2_schedule (id);
ALTER TABLE ng2_schedule_component ADD CONSTRAINT ng2_sched_comp_sched_fk2 FOREIGN KEY (schedule_id) REFERENCES ng2_schedule (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_solar_collector
-- --------------------------------------------------------------------
ALTER TABLE ng2_solar_collector ADD CONSTRAINT ng2_sol_coll_fk FOREIGN KEY (id) REFERENCES ng2_device (id);
ALTER TABLE ng2_solar_collector ADD CONSTRAINT ng2_sol_coll_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_solar_collector ADD CONSTRAINT ng2_sol_coll_lod2_fk FOREIGN KEY (lod2_multi_surface_id) REFERENCES surface_geometry (id);
ALTER TABLE ng2_solar_collector ADD CONSTRAINT ng2_sol_coll_lod3_fk FOREIGN KEY (lod3_multi_surface_id) REFERENCES surface_geometry (id);
-- --------------------------------------------------------------------
-- ng2_storage_device
-- --------------------------------------------------------------------
ALTER TABLE ng2_storage_device ADD CONSTRAINT ng2_sto_dev_fk FOREIGN KEY (id) REFERENCES ng2_device (id);
ALTER TABLE ng2_storage_device ADD CONSTRAINT ng2_sto_dev_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
-- --------------------------------------------------------------------
-- ng2_suitability
-- --------------------------------------------------------------------
ALTER TABLE ng2_suitability ADD CONSTRAINT ng2_suit_cto_fk FOREIGN KEY (cityobject_id) REFERENCES ng2_cityobject (id);
ALTER TABLE ng2_suitability ADD CONSTRAINT ng2_suit_sched_fk FOREIGN KEY (schedule_id) REFERENCES ng2_schedule (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_them_surf_to_thermal_zone
-- --------------------------------------------------------------------
ALTER TABLE ng2_them_surf_to_thermal_zone ADD CONSTRAINT ng2_thm_surf_to_tz_fk2 FOREIGN KEY (thermal_zone_id) REFERENCES ng2_building_partition (id);
ALTER TABLE ng2_them_surf_to_thermal_zone ADD CONSTRAINT ng2_thm_surf_to_tz_fk1 FOREIGN KEY (thematic_surface_id) REFERENCES thematic_surface (id) ON DELETE CASCADE;
-- --------------------------------------------------------------------
-- ng2_thematic_surface
-- --------------------------------------------------------------------
ALTER TABLE ng2_thematic_surface ADD CONSTRAINT ng2_them_surf_fk FOREIGN KEY (id) REFERENCES thematic_surface (id);
-- --------------------------------------------------------------------
-- ng2_time_series
-- --------------------------------------------------------------------
ALTER TABLE ng2_time_series ADD CONSTRAINT ng2_ts_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_time_series ADD CONSTRAINT ng2_ts_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
-- --------------------------------------------------------------------
-- ng2_urban_function_area
-- --------------------------------------------------------------------
ALTER TABLE ng2_urban_function_area ADD CONSTRAINT ng2_ufa_fk FOREIGN KEY (id) REFERENCES cityobjectgroup (id);
-- --------------------------------------------------------------------
-- ng2_utl_ntw_connection
-- --------------------------------------------------------------------
ALTER TABLE ng2_utl_ntw_connection ADD CONSTRAINT ng2_utl_ntw_con_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_utl_ntw_connection ADD CONSTRAINT ng2_utl_ntw_con_cto_fk FOREIGN KEY (cityobject_id) REFERENCES ng2_cityobject (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_weather_data
-- --------------------------------------------------------------------
ALTER TABLE ng2_weather_data ADD CONSTRAINT ng2_wth_data_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_weather_data ADD CONSTRAINT ng2_wth_data_ts_fk FOREIGN KEY (time_series_id) REFERENCES ng2_time_series (id) ON DELETE SET NULL;
ALTER TABLE ng2_weather_data ADD CONSTRAINT ng2_wth_data_ng2_cto_fk FOREIGN KEY (cityobject_id) REFERENCES ng2_cityobject (id) ON DELETE SET NULL;
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- *********************************** Create Indexes *************************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- --------------------------------------------------------------------
-- ng2_address_to_building_unit
-- --------------------------------------------------------------------
CREATE INDEX ng2_address_to_bdgu_fk1x ON ng2_address_to_building_unit USING btree (address_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_address_to_bdgu_fk2x ON ng2_address_to_building_unit USING btree (building_unit_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_building
-- --------------------------------------------------------------------
-- no indices needed
-- --------------------------------------------------------------------
-- ng2_building_partition
-- --------------------------------------------------------------------
CREATE INDEX ng2_bdgp_oc_fkx ON ng2_building_partition USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_sched_fk1x ON ng2_building_partition USING btree (cooling_schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_sched_fk2x ON ng2_building_partition USING btree (heating_schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_sched_fk3x ON ng2_building_partition USING btree (ventilation_schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_uz_fkx ON ng2_building_partition USING btree (usage_zone_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_tz_fkx ON ng2_building_partition USING btree (thermal_zone_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_bdg_fkx ON ng2_building_partition USING btree (building_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_solid1_fkx ON ng2_building_partition USING btree (lod1_solid_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_solid2_fkx ON ng2_building_partition USING btree (lod2_solid_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_solid3_fkx ON ng2_building_partition USING btree (lod3_solid_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_cityobject
-- --------------------------------------------------------------------
CREATE INDEX ng2_cto_ref_point_spx ON ng2_cityobject USING gist (ref_point);
CREATE INDEX ng2_cto_lcns_fkx ON ng2_cityobject USING btree (layered_construction_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_ctyobj_relation
-- --------------------------------------------------------------------
CREATE INDEX ng2_cto_rel_fk1x ON ng2_ctyobj_relation USING btree (ng2_cityobject_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_cto_rel_fk2x ON ng2_ctyobj_relation USING btree (cityobject_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_device
-- --------------------------------------------------------------------
CREATE INDEX ng2_dev_oc_fkx ON ng2_device USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_dev_opt_fkx ON ng2_device USING btree (transmittance_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_dev_cto_fkx ON ng2_device USING btree (cityobject_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_device_operation
-- --------------------------------------------------------------------
CREATE INDEX ng2_dev_opr_sched_fkx ON ng2_device_operation USING btree (schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_dev_opr_dev_fkx ON ng2_device_operation USING btree (device_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_energy_perf_cert
-- --------------------------------------------------------------------
CREATE INDEX ng2_epc_bdg_fkx ON ng2_energy_perf_cert USING btree (building_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_epc_bdg_part_fkx ON ng2_energy_perf_cert USING btree (building_partition_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_layer
-- --------------------------------------------------------------------
CREATE INDEX ng2_lyr_mat_fkx ON ng2_layer USING btree (material_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_lyr_lcns_fkx ON ng2_layer USING btree (layered_construction_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_layered_constr
-- --------------------------------------------------------------------
CREATE INDEX ng2_lcns_oc_fkx ON ng2_layered_construction USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_lcns_lcns_fkx ON ng2_layered_construction USING btree (layered_construction_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_lcns_lib_fkx ON ng2_layered_construction USING btree (library_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_library
-- --------------------------------------------------------------------
CREATE INDEX ng2_lib_oc_fkx ON ng2_library USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_material
-- --------------------------------------------------------------------
CREATE INDEX ng2_mat_oc_fkx ON ng2_material USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_mat_lib_fkx ON ng2_material USING btree (library_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_occupants
-- --------------------------------------------------------------------
CREATE INDEX ng2_occ_sched_fkx ON ng2_occupants USING btree (schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_occ_ng2_bdgp_fkx ON ng2_occupants USING btree (building_partition_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_opening
-- --------------------------------------------------------------------
-- no indices needed
-- --------------------------------------------------------------------
-- ng2_optical_property
-- --------------------------------------------------------------------
CREATE INDEX ng2_optpty_oc_fkx ON ng2_optical_property USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_optpty_lcns_fkx ON ng2_optical_property USING btree (layered_construction_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_qualified_attribute
-- --------------------------------------------------------------------
CREATE INDEX ng2_qual_attr_oc_fkx ON ng2_qualified_attribute USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_qual_attr_bdg_fkx ON ng2_qualified_attribute USING btree (building_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_qual_attr_bdg_part_fkx ON ng2_qualified_attribute USING btree (building_partition_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_qual_attr_type_idx ON ng2_qualified_attribute USING btree (type ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_refurbishment_measure
-- --------------------------------------------------------------------
CREATE INDEX ng2_ref_meas_bdg_fkx ON ng2_refurbishment_measure USING btree (building_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_ref_meas_bdg_part_fkx ON ng2_refurbishment_measure USING btree (building_partition_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_resource
-- --------------------------------------------------------------------
CREATE INDEX ng2_res_oc_fkx ON ng2_resource USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_res_ts_fkx ON ng2_resource USING btree (time_series_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_res_cto_fkx ON ng2_resource USING btree (cityobject_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_schedule
-- --------------------------------------------------------------------
CREATE INDEX ng2_sched_oc_fkx ON ng2_schedule USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_sched_ts_fkx ON ng2_schedule USING btree (time_series_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_sched_lib_fkx ON ng2_schedule USING btree (library_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_schedule_component
-- --------------------------------------------------------------------
CREATE INDEX ng2_sched_comp_sched_fk1x ON ng2_schedule_component USING btree (parent_schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_sched_comp_sched_fk2x ON ng2_schedule_component USING btree (schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_solar_collector
-- --------------------------------------------------------------------
CREATE INDEX ng2_sol_col_oc_fkx ON ng2_solar_collector USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_sol_col_lod2_fkx ON ng2_solar_collector USING btree (lod2_multi_surface_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_sol_col_lod3_fkx ON ng2_solar_collector USING btree (lod2_multi_surface_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_storage_device
-- --------------------------------------------------------------------
CREATE INDEX ng2_sto_dev_oc_fkx ON ng2_storage_device USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_suitability
-- --------------------------------------------------------------------
CREATE INDEX ng2_suit_cto_fkx ON ng2_suitability USING btree (cityobject_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_suit_sched_fkx ON ng2_suitability USING btree (schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_suit_reas_fkx ON ng2_suitability USING btree (reason ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_them_surf_to_thermal_zone
-- --------------------------------------------------------------------
CREATE INDEX ng2_thm_surf_to_tz_fk1x ON ng2_them_surf_to_thermal_zone USING btree (thematic_surface_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_thm_surf_to_tz_fk2x ON ng2_them_surf_to_thermal_zone USING btree (thermal_zone_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_thematic_surface
-- --------------------------------------------------------------------
-- no indices needed
-- --------------------------------------------------------------------
-- ng2_time_series
-- --------------------------------------------------------------------
CREATE INDEX ng2_ts_oc_fkx ON ng2_time_series USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_urban_function_area
-- --------------------------------------------------------------------
-- no indices needed
-- --------------------------------------------------------------------
-- ng2_utl_ntw_connection
-- --------------------------------------------------------------------
CREATE INDEX ng2_utl_ntw_conn_cto_fkx ON ng2_utl_ntw_connection USING btree (cityobject_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_weather_data
-- --------------------------------------------------------------------
CREATE INDEX ng2_wht_data_ts_fkx ON ng2_weather_data USING btree (time_series_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_wht_data_cto_fkx ON ng2_weather_data USING btree (cityobject_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--
-- CityGML Energy ADE 2.0 (beta 7)
--
-- Last update: 2025-05-09
--
-- This DDL script uninstalls the 3DCityDB schema for the Energy ADE 2.0. It must be run
-- from within the ADE Manager plugin of the 3DCityDB Importer/Exporter.
--
-- This script was first automatically generated using the 3DCityDB ADE Manager
-- and successively edited and restructured by:
--
-- Dr. Giorgio Agugiaro
-- 3D Geoinformation group
-- Delft University of Technology
-- The Netherlands
--
-- https://3d.bk.tudelft.nl/gagugiaro/
--
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ******************************* DROP_ADE_DB.SQL execution START ************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- *********************************** Drop foreign keys **********************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ALTER TABLE ng2_address_to_building_unit DROP CONSTRAINT ng2_addr_to_bdgu_fk1;
ALTER TABLE ng2_address_to_building_unit DROP CONSTRAINT ng2_addr_to_bdgu_fk2;
ALTER TABLE ng2_building DROP CONSTRAINT ng2_bdg_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_bdg_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_lod1_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_lod2_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_lod3_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_oc_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_sched_fk1;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_sched_fk2;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_sched_fk3;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_tz_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_uz_fk;
ALTER TABLE ng2_cityobject DROP CONSTRAINT ng2_cto_fk;
ALTER TABLE ng2_cityobject DROP CONSTRAINT ng2_cto_lcns_fk;
ALTER TABLE ng2_ctyobj_relation DROP CONSTRAINT ng2_cto_rel_fk1;
ALTER TABLE ng2_ctyobj_relation DROP CONSTRAINT ng2_cto_rel_fk2;
ALTER TABLE ng2_device DROP CONSTRAINT ng2_dev_fk;
ALTER TABLE ng2_device DROP CONSTRAINT ng2_dev_ng2_cto_fk;
ALTER TABLE ng2_device DROP CONSTRAINT ng2_dev_oc_fk;
ALTER TABLE ng2_device DROP CONSTRAINT ng2_dev_opt_fk;
ALTER TABLE ng2_device_operation DROP CONSTRAINT ng2_dev_opr_fk;
ALTER TABLE ng2_device_operation DROP CONSTRAINT ng2_dev_opr_dev_fk;
ALTER TABLE ng2_device_operation DROP CONSTRAINT ng2_dev_opr_sched_fk;
ALTER TABLE ng2_energy_perf_cert DROP CONSTRAINT ng2_epc_fk;
ALTER TABLE ng2_energy_perf_cert DROP CONSTRAINT ng2_epc_bdg_fk;
ALTER TABLE ng2_energy_perf_cert DROP CONSTRAINT ng2_epc_bdg_part_fk;
ALTER TABLE ng2_layer DROP CONSTRAINT ng2_lyr_fk;
ALTER TABLE ng2_layer DROP CONSTRAINT ng2_lyr_lcns_fk;
ALTER TABLE ng2_layer DROP CONSTRAINT ng2_lyr_mat_fk;
ALTER TABLE ng2_layered_construction DROP CONSTRAINT ng2_lcns_fk;
ALTER TABLE ng2_layered_construction DROP CONSTRAINT ng2_lcns_lcns_fk;
ALTER TABLE ng2_layered_construction DROP CONSTRAINT ng2_lcns_oc_fk;
ALTER TABLE ng2_layered_construction DROP CONSTRAINT ng2_lcns_lib_fk;
ALTER TABLE ng2_library DROP CONSTRAINT ng2_lib_fk;
ALTER TABLE ng2_library DROP CONSTRAINT ng2_lib_oc_fk;
ALTER TABLE ng2_material DROP CONSTRAINT ng2_mat_fk;
ALTER TABLE ng2_material DROP CONSTRAINT ng2_mat_lib_fk;
ALTER TABLE ng2_occupants DROP CONSTRAINT ng2_occ_fk;
ALTER TABLE ng2_occupants DROP CONSTRAINT ng2_occ_ng2_bdgp_fk;
ALTER TABLE ng2_occupants DROP CONSTRAINT ng2_occ_sched_fk;
ALTER TABLE ng2_opening DROP CONSTRAINT ng2_opn_fk;
ALTER TABLE ng2_optical_property DROP CONSTRAINT ng2_optpty_lcns_fk;
ALTER TABLE ng2_optical_property DROP CONSTRAINT ng2_optpty_oc_fk;
ALTER TABLE ng2_qualified_attribute DROP CONSTRAINT ng2_qatt_oc_fk;
ALTER TABLE ng2_qualified_attribute DROP CONSTRAINT ng2_qatt_bdg_fk;
ALTER TABLE ng2_qualified_attribute DROP CONSTRAINT ng2_qatt_bdg_part_fk;
ALTER TABLE ng2_refurbishment_measure DROP CONSTRAINT ng2_refurb_fk;
ALTER TABLE ng2_refurbishment_measure DROP CONSTRAINT ng2_refurb_bdg_fk;
ALTER TABLE ng2_refurbishment_measure DROP CONSTRAINT ng2_refurb_bdg_part_fk;
ALTER TABLE ng2_resource DROP CONSTRAINT ng2_res_fk;
ALTER TABLE ng2_resource DROP CONSTRAINT ng2_res_oc_fk;
ALTER TABLE ng2_resource DROP CONSTRAINT ng2_res_ts_fk;
ALTER TABLE ng2_resource DROP CONSTRAINT ng2_res_cto_fk;
ALTER TABLE ng2_schedule DROP CONSTRAINT ng2_sched_fk;
ALTER TABLE ng2_schedule DROP CONSTRAINT ng2_sched_oc_fk;
ALTER TABLE ng2_schedule DROP CONSTRAINT ng2_sched_ts_fk;
ALTER TABLE ng2_schedule DROP CONSTRAINT ng2_sched_lib_fk;
ALTER TABLE ng2_schedule_component DROP CONSTRAINT ng2_sched_comp_fk;
ALTER TABLE ng2_schedule_component DROP CONSTRAINT ng2_sched_comp_sched_fk1;
ALTER TABLE ng2_schedule_component DROP CONSTRAINT ng2_sched_comp_sched_fk2;
ALTER TABLE ng2_solar_collector DROP CONSTRAINT ng2_sol_coll_fk;
ALTER TABLE ng2_solar_collector DROP CONSTRAINT ng2_sol_coll_oc_fk;
ALTER TABLE ng2_solar_collector DROP CONSTRAINT ng2_sol_coll_lod2_fk;
ALTER TABLE ng2_solar_collector DROP CONSTRAINT ng2_sol_coll_lod3_fk;
ALTER TABLE ng2_storage_device DROP CONSTRAINT ng2_sto_dev_fk;
ALTER TABLE ng2_storage_device DROP CONSTRAINT ng2_sto_dev_oc_fk;
ALTER TABLE ng2_suitability DROP CONSTRAINT ng2_suit_cto_fk;
ALTER TABLE ng2_suitability DROP CONSTRAINT ng2_suit_sched_fk;
ALTER TABLE ng2_them_surf_to_thermal_zone DROP CONSTRAINT ng2_thm_surf_to_tz_fk1;
ALTER TABLE ng2_them_surf_to_thermal_zone DROP CONSTRAINT ng2_thm_surf_to_tz_fk2;
ALTER TABLE ng2_thematic_surface DROP CONSTRAINT ng2_them_surf_fk;
ALTER TABLE ng2_time_series DROP CONSTRAINT ng2_ts_fk;
ALTER TABLE ng2_time_series DROP CONSTRAINT ng2_ts_oc_fk;
ALTER TABLE ng2_urban_function_area DROP CONSTRAINT ng2_ufa_fk;
ALTER TABLE ng2_utl_ntw_connection DROP CONSTRAINT ng2_utl_ntw_con_cto_fk;
ALTER TABLE ng2_utl_ntw_connection DROP CONSTRAINT ng2_utl_ntw_con_fk;
ALTER TABLE ng2_weather_data DROP CONSTRAINT ng2_wth_data_fk;
ALTER TABLE ng2_weather_data DROP CONSTRAINT ng2_wth_data_ng2_cto_fk;
ALTER TABLE ng2_weather_data DROP CONSTRAINT ng2_wth_data_ts_fk;
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- *********************************** Drop tables ***************************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DROP TABLE ng2_address_to_building_unit CASCADE;
DROP TABLE ng2_building CASCADE;
DROP TABLE ng2_building_partition CASCADE;
DROP TABLE ng2_cityobject CASCADE;
DROP TABLE ng2_ctyobj_relation CASCADE;
DROP TABLE ng2_device CASCADE;
DROP TABLE ng2_device_operation CASCADE;
DROP TABLE ng2_energy_perf_cert CASCADE;
DROP TABLE ng2_layer CASCADE;
DROP TABLE ng2_layered_construction CASCADE;
DROP TABLE ng2_library CASCADE;
DROP TABLE ng2_material CASCADE;
DROP TABLE ng2_occupants CASCADE;
DROP TABLE ng2_opening CASCADE;
DROP TABLE ng2_optical_property CASCADE;
DROP TABLE ng2_qualified_attribute CASCADE;
DROP TABLE ng2_refurbishment_measure CASCADE;
DROP TABLE ng2_resource CASCADE;
DROP TABLE ng2_schedule CASCADE;
DROP TABLE ng2_schedule_component CASCADE;
DROP TABLE ng2_solar_collector CASCADE;
DROP TABLE ng2_storage_device CASCADE;
DROP TABLE ng2_suitability CASCADE;
DROP TABLE ng2_them_surf_to_thermal_zone CASCADE;
DROP TABLE ng2_thematic_surface CASCADE;
DROP TABLE ng2_time_series CASCADE;
DROP TABLE ng2_urban_function_area CASCADE;
DROP TABLE ng2_utl_ntw_connection CASCADE;
DROP TABLE ng2_weather_data CASCADE;
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- *********************************** Drop Sequences *************************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DROP SEQUENCE ng2_ctyobj_relation_seq;
DROP SEQUENCE ng2_optical_property_seq;
DROP SEQUENCE ng2_qualified_attribute_seq;
DROP SEQUENCE ng2_suitability_seq;
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
****************************************************************************************
****************************************************************************************
CityGML Energy ADE 2.0 (beta 7)
Last update: 2025-06-25
This schema mapping file was first automatically generated using the ADE Manager
of the 3DCityDB Importer/Exporter and successively manually edited and restructured.
****************************************************************************************
This file was generated by:
Dr. Giorgio Agugiaro
3D Geoinformation group
Delft University of Technology
The Netherlands
https://3d.bk.tudelft.nl/gagugiaro/
****************************************************************************************
****************************************************************************************
-->
<schemaMapping xmlns="http://www.3dcitydb.org/database/schema/1.0">
<metadata>
<name>Energy ADE</name>
<version>2.0 beta 7 (2025-06-25)</version>
<description>Database schema for the 3DCityDB 4.x</description>
<dbPrefix>ng2</dbPrefix>
</metadata>
<applicationSchemas>
<schema id="ng2" isADERoot="true">
<namespace context="citygml-2.0">http://www.citygml.org/ade/energy/2.0</namespace>
</schema>
</applicationSchemas>
<!-- Mapping of the complex types -->
<complexTypes>
<!-- Abstract Optical Property -->
<complexType abstract="true" id="ng2_AbstractOpticalProperty_Type" table="ng2_optical_property" objectClassId="11001" path="AbstractOpticalProperty" schema="ng2">
<complexAttribute minOccurs="1" maxOccurs="1" path="fraction" schema="ng2">
<attribute column="fraction" type="double" path="." schema="ng2"/>
<attribute column="fraction_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</complexType>
<!-- Emissivity-->
<complexType id="ng2_EmissivityType" table="ng2_optical_property" objectClassId="11002" path="Emissivity" schema="ng2">
<extension base="ng2_AbstractOpticalProperty_Type"/>
<attribute minOccurs="1" maxOccurs="1" column="surface" type="string" path="surface" schema="ng2"/>
</complexType>
<!-- Reflectance -->
<complexType id="ng2_ReflectanceType" table="ng2_optical_property" objectClassId="11003" path="Reflectance" schema="ng2">
<extension base="ng2_AbstractOpticalProperty_Type"/>
<attribute minOccurs="1" maxOccurs="1" column="surface" type="string" path="surface" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="wavelength_range" type="string" path="wavelengthRange" schema="ng2"/>
</complexType>
<!-- Transmittance -->
<complexType id="ng2_TransmittanceType" table="ng2_optical_property" objectClassId="11004" path="Transmittance" schema="ng2">
<extension base="ng2_AbstractOpticalProperty_Type"/>
<attribute minOccurs="1" maxOccurs="1" column="wavelength_range" type="string" path="wavelengthRange" schema="ng2"/>
</complexType>
<!-- Abstract Qualified Attribute (height, area, volume) -->
<complexType abstract="true" id="ng2_AbstractQualifiedAttributeType" table="ng2_qualified_attribute" objectClassId="11005" path="AbstractQualifiedAttribute" schema="ng2">
<attribute maxOccurs="1" column="description" type="string" path="description" schema="ng2"/>
<attribute maxOccurs="1" column="source" type="string" path="description" schema="ng2"/>
</complexType>
<!-- Qualified Area -->
<complexType id="ng2_QualifiedAreaType" table="ng2_qualified_attribute" objectClassId="11006" path="QualifiedArea" schema="ng2">
<extension base="ng2_AbstractQualifiedAttributeType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="value" schema="ng2">
<attribute column="value" type="double" path="." schema="ng2"/>
<attribute column="value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</complexType>
<!-- Qualified Height -->
<complexType id="ng2_QualifiedHeightType" table="ng2_qualified_attribute" objectClassId="11007" path="QualifiedHeight" schema="ng2">
<extension base="ng2_AbstractQualifiedAttributeType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="value" schema="ng2">
<attribute column="value" type="double" path="." schema="ng2"/>
<attribute column="value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</complexType>
<!-- Qualified Volume -->
<complexType id="ng2_QualifiedVolumeType" table="ng2_qualified_attribute" objectClassId="11008" path="QualifiedVolume" schema="ng2">
<extension base="ng2_AbstractQualifiedAttributeType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="value" schema="ng2">
<attribute column="value" type="double" path="." schema="ng2"/>
<attribute column="value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</complexType>
<!-- CityObjectRelation -->
<complexType id="ng2_CityObjectRelationType" table="ng2_ctyobj_relation" objectClassId="11009" path="CityObjectRelation" schema="ng2">
<complexAttribute minOccurs="1" maxOccurs="1" path="relationType" schema="ng2">
<attribute column="relation_type" type="string" path="." schema="ng2"/>
<attribute column="relation_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<featureProperty minOccurs="1" maxOccurs="1" target="AbstractCityObjectType" path="relatedTo" schema="ng2" relationType="association">
<join table="cityobject" fromColumn="cityobject_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</complexType>
<!-- Suitability -->
<complexType id="ng2_SuitabilityType" table="ng2_suitability" objectClassId="11010" path="Suitability" schema="ng2">
<complexAttribute minOccurs="1" maxOccurs="1" path="reason" schema="ng2">
<attribute column="reason_codespace" type="string" path="@codespace" schema="gml"/>
<attribute column="reason" type="string" path="." schema="ng2"/>
</complexAttribute>
<attribute maxOccurs="1" column="description" type="string" path="description" schema="ng2"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="value" schema="ng2">
<attribute column="value_uom" type="string" path="@uom" schema="gml"/>
<attribute column="value" type="double" path="." schema="ng2"/>
</complexAttribute>
<featureProperty maxOccurs="1" target="ng2_AbstractScheduleType" path="schedule" schema="ng2" relationType="aggregation">
<join table="ng2_schedule" fromColumn="schedule_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</complexType>
</complexTypes>
<!-- Features and new CityObjects -->
<featureTypes>
<!-- Abstract Time Series -->
<featureType abstract="true" id="ng2_AbstractTimeSeriesType" table="ng2_time_series" objectClassId="11020" path="AbstractTimeSeries" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="acquisitionMethod" schema="ng2">
<attribute column="acquisition_method" type="string" path="." schema="ng2"/>
<attribute column="acquisition_method_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="interpolation_type" type="string" path="interpolationType" schema="ng2"/>
<attribute maxOccurs="1" column="source" type="string" path="source" schema="ng2"/>
</featureType>
<!-- Regular Time Series -->
<featureType id="ng2_RegularTimeSeriesType" table="ng2_time_series" objectClassId="11021" path="RegularTimeSeries" schema="ng2">
<extension base="ng2_AbstractTimeSeriesType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="timeInterval" schema="ng2">
<attribute column="time_interval" type="double" path="." schema="ng2"/>
<attribute column="time_interval_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="time_interval_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="time_interval_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<complexProperty minOccurs="1" maxOccurs="1" path="temporalExtent" schema="ng2">
<type path="TimePeriod" schema="ng2">
<attribute minOccurs="1" maxOccurs="1" column="period_begin" type="timestamp" path="beginPosition" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="period_end" type="timestamp" path="endPosition" schema="ng2"/>
</type>
</complexProperty>
<complexAttribute minOccurs="1" maxOccurs="1" path="values" schema="ng2">
<attribute column="values_list" type="clob" path="." schema="ng2"/>
<attribute column="values_list_uom" type="string" path="@uom" schema="ng2"/>
</complexAttribute>
</featureType>
<!-- Regular Time Series File -->
<featureType id="ng2_RegularTimeSeriesFileType" table="ng2_time_series" objectClassId="11022" path="RegularTimeSeriesFile" schema="ng2">
<extension base="ng2_AbstractTimeSeriesType"/>
<attribute minOccurs="1" maxOccurs="1" column="uom" type="string" path="uom" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="file_uri" type="string" path="file" schema="ng2"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="timeInterval" schema="ng2">
<attribute column="time_interval" type="double" path="." schema="ng2"/>
<attribute column="time_interval_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="time_interval_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="time_interval_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<attribute maxOccurs="1" column="num_of_header_lines" type="integer" path="numberOfHeaderLines" schema="ng2"/>
<attribute maxOccurs="1" column="field_separator" type="string" path="fieldSeparator" schema="ng2"/>
<attribute maxOccurs="1" column="record_separator" type="string" path="recordSeparator" schema="ng2"/>
<attribute maxOccurs="1" column="decimal_symbol" type="string" path="decimalSymbol" schema="ng2"/>
<attribute maxOccurs="1" column="value_column_number" type="integer" path="valueColumnNumber" schema="ng2"/>
<complexProperty minOccurs="1" maxOccurs="1" path="temporalExtent" schema="ng2">
<type path="TimePeriod" schema="ng2">
<attribute minOccurs="1" maxOccurs="1" column="period_begin" type="timestamp" path="beginPosition" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="period_end" type="timestamp" path="endPosition" schema="ng2"/>
</type>
</complexProperty>
</featureType>
<!-- Typical Values Time Series -->
<featureType id="ng2_TypicalValuesTimeSeriesType" table="ng2_time_series" objectClassId="11023" path="TypicalValuesTimeSeries" schema="ng2">
<extension base="ng2_AbstractTimeSeriesType"/>
<attribute maxOccurs="1" column="start_time" type="timestamp" path="startTime" schema="ng2"/>
<attribute maxOccurs="1" column="start_day" type="integer" path="startDay" schema="ng2"/>
<attribute maxOccurs="1" column="start_month" type="integer" path="startMonth" schema="ng2"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="temporalExtent" schema="ng2">
<attribute column="temporal_extent" type="double" path="." schema="ng2"/>
<attribute column="temporal_extent_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="temporal_extent_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="temporal_extent_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="timeInterval" schema="ng2">
<attribute column="time_interval" type="double" path="." schema="ng2"/>
<attribute column="time_interval_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="time_interval_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="time_interval_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="values" schema="ng2">
<attribute column="values_list" type="clob" path="." schema="ng2"/>
<attribute column="values_list_uom" type="string" path="@uom" schema="ng2"/>
</complexAttribute>
</featureType>
<!-- Typical Values Time Series File -->
<featureType id="ng2_TypicalValuesTimeSeriesFileType" table="ng2_time_series" objectClassId="11024" path="TypicalValuesTimeSeriesFile" schema="ng2">
<extension base="ng2_AbstractTimeSeriesType"/>
<attribute maxOccurs="1" column="start_time" type="timestamp" path="startTime" schema="ng2"/>
<attribute maxOccurs="1" column="start_day" type="integer" path="startDay" schema="ng2"/>
<attribute maxOccurs="1" column="start_month" type="integer" path="startMonth" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="uom" type="string" path="uom" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="file_uri" type="string" path="file" schema="ng2"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="temporalExtent" schema="ng2">
<attribute column="temporal_extent" type="double" path="." schema="ng2"/>
<attribute column="temporal_extent_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="temporal_extent_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="temporal_extent_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="timeInterval" schema="ng2">
<attribute column="time_interval" type="double" path="." schema="ng2"/>
<attribute column="time_interval_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="time_interval_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="time_interval_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<attribute maxOccurs="1" column="num_of_header_lines" type="integer" path="numberOfHeaderLines" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="field_separator" type="string" path="fieldSeparator" schema="ng2"/>
<attribute maxOccurs="1" column="record_separator" type="string" path="recordSeparator" schema="ng2"/>
<attribute maxOccurs="1" column="decimal_symbol" type="string" path="decimalSymbol" schema="ng2"/>
<attribute maxOccurs="1" column="value_column_number" type="integer" path="valueColumnNumber" schema="ng2"/>
</featureType>
<!-- Sensor Connection -->
<featureType id="ng2_SensorConnectionType" table="ng2_time_series" objectClassId="11025" path="SensorConnection" schema="ng2">
<extension base="ng2_AbstractTimeSeriesType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="temporalExtent" schema="ng2">
<attribute column="temporal_extent" type="double" path="." schema="ng2"/>
<attribute column="temporal_extent_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="temporal_extent_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="temporal_extent_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="connectionType" schema="ng2">
<attribute column="connection_type" type="string" path="." schema="ng2"/>
<attribute column="connection_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute minOccurs="1" maxOccurs="1" column="observation_property" type="string" path="observationProperty" schema="ng2"/>
<attribute maxOccurs="1" column="uom" type="string" path="uom" schema="ng2"/>
<attribute maxOccurs="1" column="sensor_id" type="string" path="sensorID" schema="ng2"/>
<attribute maxOccurs="1" column="sensor_name" type="string" path="sensorName" schema="ng2"/>
<attribute maxOccurs="1" column="observation_id" type="string" path="observationID" schema="ng2"/>
<attribute maxOccurs="1" column="datastream_id" type="string" path="datastreamID" schema="ng2"/>
<attribute maxOccurs="1" column="base_url" type="string" path="baseURL" schema="ng2"/>
<complexAttribute maxOccurs="1" path="authType" schema="ng2">
<attribute column="auth_type" type="string" path="." schema="ng2"/>
<attribute column="auth_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="mqtt_server" type="string" path="mqttServer" schema="ng2"/>
<attribute maxOccurs="1" column="mqtt_topic" type="string" path="mqttTopic" schema="ng2"/>
<attribute maxOccurs="1" column="link_to_observation" type="string" path="linkToObservation" schema="ng2"/>
<attribute maxOccurs="1" column="link_to_sensor_description" type="string" path="linkToSensorDescription" schema="ng2"/>
</featureType>
<!-- Abstract Schedule -->
<featureType abstract="true" id="ng2_AbstractScheduleType" table="ng2_schedule" objectClassId="11030" path="AbstractSchedule" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="libraryCode" schema="ng2">
<attribute column="library_code" type="string" path="." schema="ng2"/>
<attribute column="library_code_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="start_time" type="timestamp" path="startTime" schema="ng2"/>
<attribute maxOccurs="1" column="start_day" type="integer" path="startDay" schema="ng2"/>
<attribute maxOccurs="1" column="start_month" type="integer" path="startMonth" schema="ng2"/>
<attribute maxOccurs="1" column="start_year" type="integer" path="startYear" schema="ng2"/>
<complexAttribute maxOccurs="1" path="temporalExtent" schema="ng2">
<attribute column="time_interval" type="double" path="." schema="ng2"/>
<attribute column="time_interval_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="time_interval_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="time_interval_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
</featureType>
<!-- Atomic Schedule -->
<featureType id="ng2_AtomicScheduleType" table="ng2_schedule" objectClassId="11031" path="AtomicSchedule" schema="ng2">
<extension base="ng2_AbstractScheduleType"/>
<complexAttribute minOccurs="0" maxOccurs="1" path="constantValue" schema="ng2">
<attribute column="constant_value" type="double" path="." schema="ng2"/>
<attribute column="constant_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<featureProperty minOccurs="0" maxOccurs="1" target="ng2_AbstractTimeSeriesType" path="timeSeries" schema="ng2" relationType="composition">
<join table="ng2_time_series" fromColumn="time_series_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Dual Value Schedule -->
<featureType id="ng2_DualValueScheduleType" table="ng2_schedule" objectClassId="11032" path="DualValueSchedule" schema="ng2">
<extension base="ng2_AbstractScheduleType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="idleValue" schema="ng2">
<attribute column="idle_value" type="double" path="." schema="ng2"/>
<attribute column="idle_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="usageValue" schema="ng2">
<attribute column="usage_value" type="double" path="." schema="ng2"/>
<attribute column="usage_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute minOccurs="1" maxOccurs="1" column="start_usage_time" type="timestamp" path="startUsageTime" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="end_usage_time" type="timestamp" path="endUsageTime" schema="ng2"/>
</featureType>
<!-- Composite Schedule -->
<featureType id="ng2_CompositeScheduleType" table="ng2_schedule" objectClassId="11033" path="CompositeSchedule" schema="ng2">
<extension base="ng2_AbstractScheduleType"/>
<featureProperty minOccurs="1" target="ng2_ScheduleComponentType" path="scheduleComponent" schema="ng2" relationType="composition">
<join table="ng2_schedule_component" fromColumn="id" toColumn="parent_schedule_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Schedule Component -->
<featureType id="ng2_ScheduleComponentType" table="ng2_schedule_component" objectClassId="11034" path="ScheduleComponent" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute minOccurs="1" maxOccurs="1" column="repetitions" type="integer" path="repetitions" schema="ng2"/>
<complexAttribute maxOccurs="1" path="additionalGap" schema="ng2">
<attribute column="additional_gap" type="double" path="." schema="ng2"/>
<attribute column="additional_gap_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="additional_gap_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="additional_gap_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<featureProperty minOccurs="1" maxOccurs="1" target="ng2_AbstractScheduleType" path="scheduleComponentMember" schema="ng2" relationType="aggregation">
<join table="ng2_schedule" fromColumn="schedule_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Energy Performance Certificate -->
<featureType id="ng2_EnergyPerformanceCertificateType" table="ng2_energy_perf_cert" objectClassId="11040" path="EnergyPerformanceCertificate" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="value" schema="ng2">
<attribute column="value" type="double" path="." schema="ng2"/>
<attribute column="value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute minOccurs="1" maxOccurs="1" column="label" type="string" path="label" schema="ng2"/>
<attribute maxOccurs="1" column="issue_date" type="date" path="issueDate" schema="ng2"/>
<attribute maxOccurs="1" column="expiration_date" type="date" path="expirationDate" schema="ng2"/>
<attribute maxOccurs="1" column="cert_method" type="string" path="certificationMethod" schema="ng2"/>
<attribute maxOccurs="1" column="cert_uri" type="string" path="certificationURI" schema="ng2"/>
</featureType>
<!-- Refurbishment Measure -->
<featureType id="ng2_RefurbishmentMeasureType" table="ng2_refurbishment_measure" objectClassId="11041" path="RefurbishmentMeasure" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute minOccurs="0" maxOccurs="1" column="start_date" type="date" path="startDate" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="end_date" type="date" path="endDate" schema="ng2"/>
<complexAttribute maxOccurs="1" path="libraryCode" schema="ng2">
<attribute column="library_code" type="string" path="." schema="ng2"/>
<attribute column="library_code_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Utility Network Connection -->
<featureType id="ng2_UtilityNetworkConnectionType" table="ng2_utl_ntw_connection" objectClassId="11042" path="UtilityNetworkConnection" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="networkType" schema="ng2">
<attribute column="network_type" type="string" path="." schema="ng2"/>
<attribute column="network_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute minOccurs="1" maxOccurs="1" column="connection_status" type="string" path="connectionStatus" schema="ng2"/>
<complexAttribute maxOccurs="1" path="functionInNetwork" schema="ng2">
<attribute column="function_in_network" type="string" path="." schema="ng2"/>
<attribute column="function_in_network_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="usageInNetwork" schema="ng2">
<attribute column="usage_in_network" type="string" path="." schema="ng2"/>
<attribute column="usage_in_network_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="network_id" type="string" path="networkID" schema="ng2"/>
<attribute maxOccurs="1" column="network_node_id" type="string" path="networkNodeID" schema="ng2"/>
</featureType>
<!-- Weather Data -->
<featureType id="ng2_WeatherDataType" table="ng2_weather_data" objectClassId="11043" path="WeatherData" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="libraryCode" schema="ng2">
<attribute column="library_code" type="string" path="." schema="ng2"/>
<attribute column="library_code_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="valueType" schema="ng2">
<attribute column="value_type" type="string" path="." schema="ng2"/>
<attribute column="value_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="yearlyValue" schema="ng2">
<attribute column="yearly_value" type="double" path="." schema="ng2"/>
<attribute column="yearly_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<featureProperty maxOccurs="1" target="ng2_AbstractTimeSeriesType" path="timeSeries" schema="ng2" relationType="composition">
<join table="ng2_time_series" fromColumn="time_series_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<geometryProperty maxOccurs="1" inlineColumn="position" type="Point" path="position" schema="ng2"/>
</featureType>
<!-- Abstract Layered Construction -->
<featureType abstract="true" id="ng2_AbstractLayeredConstructionType" table="ng2_layered_construction" objectClassId="11050" path="AbstractLayeredConstruction" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
</featureType>
<!-- Layered Construction -->
<featureType id="ng2_LayeredConstructionType" table="ng2_layered_construction" objectClassId="11051" path="LayeredConstruction" schema="ng2">
<extension base="ng2_AbstractLayeredConstructionType"/>
<complexAttribute maxOccurs="1" path="libraryCode" schema="ng2">
<attribute column="library_code" type="string" path="." schema="ng2"/>
<attribute column="library_code_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="uValue" schema="ng2">
<attribute column="u_value" type="double" path="." schema="ng2"/>
<attribute column="u_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="gValue" schema="ng2">
<attribute column="g_value" type="double" path="." schema="ng2"/>
<attribute column="g_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="glazingRatio" schema="ng2">
<attribute column="glazing_ratio" type="double" path="." schema="ng2"/>
<attribute column="glazing_ratio_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexProperty refType="ng2_EmissivityType" path="emissivity" schema="ng2">
<join table="ng2_optical_property" fromColumn="id" toColumn="layered_construction_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<complexProperty refType="ng2_ReflectanceType" path="reflectance" schema="ng2">
<join table="ng2_optical_property" fromColumn="id" toColumn="layered_construction_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<complexProperty refType="ng2_TransmittanceType" path="transmittance" schema="ng2">
<join table="ng2_optical_property" fromColumn="id" toColumn="layered_construction_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<featureProperty target="ng2_LayerType" path="layer" schema="ng2" relationType="composition">
<join table="ng2_layer" fromColumn="id" toColumn="layered_construction_id" toRole="child"/>
</featureProperty>
</featureType>
<!-- Reverse Layered Construction -->
<featureType id="ng2_ReverseLayeredConstructionType" table="ng2_layered_construction" objectClassId="11052" path="ReverseLayeredConstruction" schema="ng2">
<extension base="ng2_AbstractLayeredConstructionType"/>
<featureProperty minOccurs="1" maxOccurs="1" target="ng2_LayeredConstructionType" path="baseLayeredConstruction" schema="ng2" relationType="association">
<join table="ng2_layered_construction" fromColumn="layered_construction_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Layer -->
<featureType id="ng2_LayerType" table="ng2_layer" objectClassId="11053" path="Layer" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="thickness" schema="ng2">
<attribute column="thickness" type="double" path="." schema="ng2"/>
<attribute column="thickness_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<featureProperty minOccurs="1" maxOccurs="1" target="ng2_AbstractMaterialType" path="material" schema="ng2" relationType="aggregation">
<join table="ng2_material" fromColumn="material_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Abstract Material -->
<featureType abstract="true" id="ng2_AbstractMaterialType" table="ng2_material" objectClassId="11054" path="AbstractMaterial" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="libraryCode" schema="ng2">
<attribute column="library_code" type="string" path="." schema="ng2"/>
<attribute column="library_code_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Solid Material -->
<featureType id="ng2_SolidMaterialType" table="ng2_material" objectClassId="11055" path="SolidMaterial" schema="ng2">
<extension base="ng2_AbstractMaterialType"/>
<complexAttribute maxOccurs="1" path="thermalConductivity" schema="ng2">
<attribute column="thm_conductivity" type="double" path="." schema="ng2"/>
<attribute column="thm_conductivity_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="density" schema="ng2">
<attribute column="density" type="double" path="." schema="ng2"/>
<attribute column="density_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="specificHeatCapacity" schema="ng2">
<attribute column="spec_heat_capacity" type="double" path="." schema="ng2"/>
<attribute column="spec_heat_capacity_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="permeance" schema="ng2">
<attribute column="permeance" type="double" path="." schema="ng2"/>
<attribute column="permeance_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="porosity" schema="ng2">
<attribute column="porosity" type="double" path="." schema="ng2"/>
<attribute column="porosity_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="embodiedEnergy" schema="ng2">
<attribute column="embodied_energy" type="double" path="." schema="ng2"/>
<attribute column="embodied_energy_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="embodiedCarbon" schema="ng2">
<attribute column="embodied_carbon" type="double" path="." schema="ng2"/>
<attribute column="embodied_carbon_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Gas -->
<featureType id="ng2_GasType" table="ng2_material" objectClassId="11056" path="Gas" schema="ng2">
<extension base="ng2_AbstractMaterialType"/>
<attribute maxOccurs="1" column="is_ventilated" type="boolean" path="isVentilated" schema="ng2"/>
<complexAttribute maxOccurs="1" path="rValue" schema="ng2">
<attribute column="r_value" type="double" path="." schema="ng2"/>
<attribute column="r_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</featureType>
<!-- AbstractResource -->
<featureType abstract="true" id="ng2_AbstractResourceType" table="ng2_resource" objectClassId="11070" path="AbstractResource" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<attribute minOccurs="1" maxOccurs="1" column="status" type="string" path="status" schema="ng2"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="operationType" schema="ng2">
<attribute column="operation_type" type="string" path="." schema="ng2"/>
<attribute column="operation_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="amountType" schema="ng2">
<attribute column="amount_type" type="string" path="." schema="ng2"/>
<attribute column="amount_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="amount" schema="ng2">
<attribute column="amount" type="double" path="." schema="ng2"/>
<attribute column="amount_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<featureProperty maxOccurs="1" target="ng2_AbstractTimeSeriesType" path="timeDependentAmount" schema="ng2" relationType="composition">
<join table="ng2_time_series" fromColumn="time_series_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<attribute minOccurs="1" maxOccurs="1" column="is_amount_normalized" type="boolean" path="isAmountNormalized" schema="ng2"/>
<complexAttribute maxOccurs="1" path="normalizationValue" schema="ng2">
<attribute column="normalization_value" type="double" path="." schema="ng2"/>
<attribute column="normalization_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute column="normalization_param" type="string" maxOccurs="1" path="normalizationParameter" schema="ng2"/>
<complexAttribute maxOccurs="1" path="co2Equivalent" schema="ng2">
<attribute column="co2_equivalent" type="double" path="." schema="ng2"/>
<attribute column="co2_equivalent_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="year" type="integer" path="year" schema="ng2"/>
<complexAttribute maxOccurs="1" path="costsMoney" schema="ng2">
<attribute column="costs_money" type="double" path="." schema="ng2"/>
<attribute column="co2_equivalent_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="yieldsMoney" schema="ng2">
<attribute column="yields_money" type="double" path="." schema="ng2"/>
<attribute column="yields_money_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Resources: Construction Material -->
<featureType id="ng2_ConstructionMaterialType" table="ng2_resource" objectClassId="11071" path="ConstructionMaterial" schema="ng2">
<extension base="ng2_AbstractResourceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="endUse" schema="ng2">
<attribute column="enduse" type="string" path="." schema="ng2"/>
<attribute column="enduse_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Resources: Energy -->
<featureType id="ng2_EnergyType" table="ng2_resource" objectClassId="11072" path="Energy" schema="ng2">
<extension base="ng2_AbstractResourceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="endUse" schema="ng2">
<attribute column="enduse" type="string" path="." schema="ng2"/>
<attribute column="enduse_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="energyCarrier" schema="ng2">
<attribute column="energy_carrier" type="string" path="." schema="ng2"/>
<attribute column="energy_carrier_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="maximumLoad" schema="ng2">
<attribute column="maximum_load" type="double" path="." schema="ng2"/>
<attribute column="maximum_load_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="source" schema="ng2">
<attribute column="source" type="string" path="." schema="ng2"/>
<attribute column="source_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Resources: Food -->
<featureType id="ng2_FoodType" table="ng2_resource" objectClassId="11073" path="Food" schema="ng2">
<extension base="ng2_AbstractResourceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="endUse" schema="ng2">
<attribute column="enduse" type="string" path="." schema="ng2"/>
<attribute column="enduse_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Resources: Other Resource -->
<featureType id="ng2_OtherResourceType" table="ng2_resource" objectClassId="11074" path="OtherResource" schema="ng2">
<extension base="ng2_AbstractResourceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="endUse" schema="ng2">
<attribute column="enduse" type="string" path="." schema="ng2"/>
<attribute column="enduse_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Resources: Urban Space -->
<featureType id="ng2_UrbanSpaceType" table="ng2_resource" objectClassId="11075" path="UrbanSpace" schema="ng2">
<extension base="ng2_AbstractResourceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="endUse" schema="ng2">
<attribute column="enduse" type="string" path="." schema="ng2"/>
<attribute column="enduse_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Resources: Waste -->
<featureType id="ng2_WasteType" table="ng2_resource" objectClassId="11076" path="Waste" schema="ng2">
<extension base="ng2_AbstractResourceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="endUse" schema="ng2">
<attribute column="enduse" type="string" path="." schema="ng2"/>
<attribute column="enduse_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="is_dangerous" type="boolean" path="isDangerous" schema="ng2"/>
<attribute maxOccurs="1" column="is_recyclable" type="boolean" path="isRecyclable" schema="ng2"/>
</featureType>
<!-- Resources: Water -->
<featureType id="ng2_WaterType" table="ng2_resource" objectClassId="11077" path="Water" schema="ng2">
<extension base="ng2_AbstractResourceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="endUse" schema="ng2">
<attribute column="enduse" type="string" path="." schema="ng2"/>
<attribute column="enduse_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Abstract Building Partition -->
<featureType abstract="true" id="ng2_AbstractBuildingPartitionType" table="ng2_building_partition" objectClassId="11080" path="AbstractBuildingPartition" schema="ng2">
<extension base="AbstractCityObjectType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexProperty refType="ng2_QualifiedAreaType" path="area" schema="ng2">
<join table="ng2_qualified_attribute" fromColumn="id" toColumn="building_partition_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<complexProperty refType="ng2_QualifiedVolumeType" path="volume" schema="ng2">
<join table="ng2_qualified_attribute" fromColumn="id" toColumn="building_partition_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<geometryProperty maxOccurs="1" lod="1" refColumn="lod1_solid_id" type="AbstractSolid" path="lod1Solid" schema="ng2"/>
<geometryProperty maxOccurs="1" lod="2" refColumn="lod2_solid_id" type="AbstractSolid" path="lod2Solid" schema="ng2"/>
<geometryProperty maxOccurs="1" lod="3" refColumn="lod3_solid_id" type="AbstractSolid" path="lod3Solid" schema="ng2"/>
</featureType>
<!-- Abstract Thermal Zone -->
<featureType abstract="true" id="ng2_AbstractThermalZoneType" table="ng2_building_partition" objectClassId="11045" path="AbstractThermalZone" schema="ng2">
<extension base="ng2_AbstractBuildingPartitionType"/>
<featureProperty target="ng2_AbstractUsageZoneType" path="usageZone" schema="ng2" relationType="association">
<join table="ng2_building_partition" fromColumn="id" toColumn="thermal_zone_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Thermal Zone -->
<featureType id="ng2_ThermalZoneType" table="ng2_building_partition" objectClassId="11081" path="ThermalZone" schema="ng2">
<extension base="ng2_AbstractThermalZoneType"/>
<complexAttribute maxOccurs="1" path="heatCapacity" schema="ng2">
<attribute column="heat_capacity" type="double" path="." schema="ng2"/>
<attribute column="heat_capacity_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="infiltrationRate" schema="ng2">
<attribute column="infiltration_rate" type="double" path="." schema="ng2"/>
<attribute column="infiltration_rate_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute minOccurs="1" maxOccurs="1" column="is_cooled" type="boolean" path="isCooled" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="is_heated" type="boolean" path="isHeated" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="coincides_with_lod2_hull" type="boolean" path="coincidesWithLod2Hull" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="coincides_with_lod3_hull" type="boolean" path="coincidesWithLod3Hull" schema="ng2"/>
<featureProperty target="AbstractBoundarySurfaceType" path="thermalBoundary" schema="ng2" relationType="composition">
<joinTable table="ng2_them_surf_to_thermal_zone">
<join table="ng2_building_partition" fromColumn="thermal_zone_id" toColumn="id" toRole="parent"/>
<inverseJoin table="thematic_surface" fromColumn="thematic_surface_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</inverseJoin>
</joinTable>
</featureProperty>
<!-- To be tested: Improved version that does not require the association table -->
<!--
<featureProperty target="AbstractBoundarySurfaceType" path="thermalBoundary" schema="ng2">
<joinTable table="ng2_thematic_surface">
<join table="ng2_building_partition" fromColumn="id" toColumn="thermal_zone_id" toRole="parent"/>
<inverseJoin table="thematic_surface" fromColumn="id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</inverseJoin>
</joinTable>
</featureProperty>
-->
</featureType>
<!-- Attic Floor Surface -->
<featureType id="ng2_AtticFloorSurfaceType" table="thematic_surface" objectClassId="11082" path="AtticFloorSurface" schema="ng2">
<extension base="AbstractBoundarySurfaceType"/>
</featureType>
<!-- Basement Ceiling Surface -->
<featureType id="ng2_BasementCeilingSurfaceType" table="thematic_surface" objectClassId="11083" path="BasementCeilingSurface" schema="ng2">
<extension base="AbstractBoundarySurfaceType"/>
</featureType>
<!-- Intermediate Floor Surface -->
<featureType id="ng2_IntermediateFloorSurfaceType" table="thematic_surface" objectClassId="11084" path="IntermediateFloorSurface" schema="ng2">
<extension base="AbstractBoundarySurfaceType"/>
</featureType>
<!-- Party Wall Surface -->
<featureType id="ng2_PartyWallSurfaceType" table="thematic_surface" objectClassId="11085" path="PartyWallSurface" schema="ng2">
<extension base="AbstractBoundarySurfaceType"/>
</featureType>
<!-- Abstract Usage Zone -->
<featureType abstract="true" id="ng2_AbstractUsageZoneType" table="ng2_building_partition" objectClassId="11090" path="AbstractUsageZone" schema="ng2">
<extension base="ng2_AbstractBuildingPartitionType"/>
<featureProperty target="ng2_AbstractBuildingUnitType" path="buildingUnit" schema="ng2" relationType="association">
<join table="ng2_building_partition" fromColumn="id" toColumn="usage_zone_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Usage Zone -->
<featureType id="ng2_UsageZoneType" table="ng2_building_partition" objectClassId="11091" path="UsageZone" schema="ng2">
<extension base="ng2_AbstractUsageZoneType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute column="is_primary" type="boolean" maxOccurs="1" path="isPrimary" schema="ng2"/>
<attribute column="num_of_building_units" type="integer" maxOccurs="1" path="numberOfBuildingUnits" schema="ng2"/>
<complexAttribute maxOccurs="1" path="internalHeatGains" schema="ng2">
<attribute column="int_heat_gains" type="double" path="." schema="ng2"/>
<attribute column="int_heat_gains_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="internalHeatGainsConvectiveFraction" schema="ng2">
<attribute column="int_heat_gains_conv" type="double" path="." schema="ng2"/>
<attribute column="int_heat_gains_conv_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="internalHeatGainsLatentFraction" schema="ng2">
<attribute column="int_heat_gains_lat" type="double" path="." schema="ng2"/>
<attribute column="int_heat_gains_lat_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="internalHeatGainsRadiantFraction" schema="ng2">
<attribute column="int_heat_gains_rad" type="double" path="." schema="ng2"/>
<attribute column="int_heat_gains_rad_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<featureProperty maxOccurs="1" target="ng2_AbstractScheduleType" path="coolingSchedule" schema="ng2" relationType="aggregation">
<join table="ng2_schedule" fromColumn="cooling_schedule_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<featureProperty maxOccurs="1" target="ng2_AbstractScheduleType" path="heatingSchedule" schema="ng2" relationType="aggregation">
<join table="ng2_schedule" fromColumn="heating_schedule_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<featureProperty maxOccurs="1" target="ng2_AbstractScheduleType" path="ventilationSchedule" schema="ng2" relationType="aggregation">
<join table="ng2_schedule" fromColumn="ventilation_schedule_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<featureProperty target="ng2_OccupantsType" path="occupiedBy" schema="ng2" relationType="aggregation">
<join table="ng2_occupants" fromColumn="id" toColumn="building_partition_id" toRole="child"/>
</featureProperty>
</featureType>
<!-- Abstract Building Unit -->
<featureType abstract="true" id="ng2_AbstractBuildingUnitType" table="ng2_building_partition" objectClassId="11092" path="AbstractBuildingUnit" schema="ng2">
<extension base="ng2_AbstractBuildingPartitionType"/>
</featureType>
<!-- Building Unit -->
<featureType id="ng2_BuildingUnitType" table="ng2_building_partition" objectClassId="11093" path="BuildingUnit" schema="ng2">
<extension base="ng2_AbstractBuildingUnitType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="num_of_rooms" type="integer" path="numberOfRooms" schema="ng2"/>
<attribute maxOccurs="1" column="owner_name" type="string" path="ownerName" schema="ng2"/>
<complexAttribute maxOccurs="1" path="ownershipType" schema="ng2">
<attribute column="ownership_type" type="string" path="." schema="ng2"/>
<attribute column="ownership_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<featureProperty target="AddressType" path="address" schema="ng2" relationType="association">
<joinTable table="ng2_address_to_building_unit">
<join table="ng2_building_partition" fromColumn="building_unit_id" toColumn="id" toRole="parent"/>
<inverseJoin table="address" fromColumn="address_id" toColumn="id" toRole="parent"/>
</joinTable>
</featureProperty>
<featureProperty target="ng2_EnergyPerformanceCertificateType" path="energyPerformanceCertificate" schema="ng2" relationType="composition">
<join table="ng2_energy_perf_cert" fromColumn="id" toColumn="building_partition_id" toRole="child"/>
</featureProperty>
<featureProperty target="ng2_RefurbishmentMeasureType" path="refurbishmentMeasure" schema="ng2" relationType="composition">
<join table="ng2_refurbishment_measure" fromColumn="id" toColumn="building_partition_id" toRole="child"/>
</featureProperty>
<featureProperty target="ng2_OccupantsType" path="occupiedBy" schema="ng2" relationType="aggregation">
<join table="ng2_occupants" fromColumn="id" toColumn="building_partition_id" toRole="child"/>
</featureProperty>
</featureType>
<!-- Occupants -->
<featureType id="ng2_OccupantsType" table="ng2_occupants" objectClassId="11094" path="Occupants" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
<attribute column="type" type="string" path="." schema="ng2"/>
</complexAttribute>
<attribute maxOccurs="1" column="num_of_occupants" type="integer" path="numberOfOccupants" schema="ng2"/>
<complexAttribute maxOccurs="1" path="heatDissipation" schema="ng2">
<attribute column="heat_diss" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="heatDissipationConvectiveFraction" schema="ng2">
<attribute column="heat_diss_conv" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_conv_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="heatDissipationLatentFraction" schema="ng2">
<attribute column="heat_diss_lat" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_lat_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="heatDissipationRadiantFraction" schema="ng2">
<attribute column="heat_diss_rad" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_rad_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="averageDietType" schema="ng2">
<attribute column="avg_diet_type" type="string" path="." schema="ng2"/>
<attribute column="avg_diet_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="averageIncomeLevel" schema="ng2">
<attribute column="avg_income_level" type="string" path="." schema="ng2"/>
<attribute column="avg_income_level_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="averageInstructionLevel" schema="ng2">
<attribute column="avg_instr_level" type="string" path="." schema="ng2"/>
<attribute column="avg_instr_level_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<featureProperty maxOccurs="1" target="ng2_AbstractScheduleType" path="occupancyRate" schema="ng2" relationType="aggregation">
<join table="ng2_schedule" fromColumn="schedule_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Device Operation -->
<featureType id="ng2_DeviceOperationType" table="ng2_device_operation" objectClassId="11100" path="DeviceOperation" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="yearly_global_efficiency" type="double" path="yearlyGlobalEfficiency" schema="ng2"/>
<featureProperty maxOccurs="1" target="ng2_AbstractScheduleType" path="schedule" schema="ng2" relationType="aggregation">
<join table="ng2_schedule" fromColumn="schedule_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Abstract Device -->
<featureType abstract="true" id="ng2_AbstractDeviceType" table="ng2_device" objectClassId="11101" path="AbstractDevice" schema="ng2">
<extension base="AbstractCityObjectType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<attribute maxOccurs="1" column="model" type="string" path="model" schema="ng2"/>
<attribute maxOccurs="1" column="year_of_manufacture" type="integer" path="yearOfManufacture" schema="ng2"/>
<attribute maxOccurs="1" column="num_of_devices" type="integer" path="numberOfDevices" schema="ng2"/>
<complexAttribute maxOccurs="1" path="installedPower" schema="ng2">
<attribute column="installed_power" type="double" path="." schema="ng2"/>
<attribute column="installed_power_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="nominalEfficiency" schema="ng2">
<attribute column="nominal_efficiency" type="double" path="." schema="ng2"/>
<attribute column="nominal_efficiency_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="efficiency_indicator" type="string" path="efficiencyIndicator" schema="ng2"/>
<complexAttribute maxOccurs="1" path="heatDissipation" schema="ng2">
<attribute column="heat_diss" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="heatDissipationConvectiveFraction" schema="ng2">
<attribute column="heat_diss_conv" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_conv_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="heatDissipationLatentFraction" schema="ng2">
<attribute column="heat_diss_lat" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_lat_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="heatDissipationRadiantFraction" schema="ng2">
<attribute column="heat_diss_rad" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_rad_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<featureProperty target="ng2_DeviceOperationType" path="deviceOperation" schema="ng2" relationType="aggregation">
<join table="ng2_device_operation" fromColumn="id" toColumn="device_id" toRole="child"/>
</featureProperty>
</featureType>
<!-- Boiler -->
<featureType id="ng2_BoilerType" table="ng2_device" objectClassId="11102" path="Boiler" schema="ng2">
<extension base="ng2_AbstractDeviceType"/>
<attribute column="has_condensation" type="boolean" minOccurs="1" maxOccurs="1" path="hasCondensation" schema="ng2"/>
</featureType>
<!-- Generic Device -->
<featureType id="ng2_GenericDeviceType" table="ng2_device" objectClassId="11103" path="GenericDevice" schema="ng2">
<extension base="ng2_AbstractDeviceType"/>
</featureType>
<!-- Generic Electrical Device -->
<featureType id="ng2_GenericElectricalDeviceType" table="ng2_device" objectClassId="11104" path="GenericElectricalDevice" schema="ng2">
<extension base="ng2_AbstractDeviceType"/>
</featureType>
<!-- Lighting Device -->
<featureType id="ng2_LightingDeviceType" table="ng2_device" objectClassId="11105" path="LightingDevice" schema="ng2">
<extension base="ng2_AbstractDeviceType"/>
</featureType>
<!-- Heat Pump -->
<featureType id="ng2_HeatPumpType" table="ng2_device" objectClassId="11106" path="HeatPump" schema="ng2">
<extension base="ng2_AbstractDeviceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="heatSource" schema="ng2">
<attribute column="heat_source" type="string" path="." schema="ng2"/>
<attribute column="heat_source_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="copSourceTemperature" schema="ng2">
<attribute column="cop_source_temp" type="double" path="." schema="ng2"/>
<attribute column="cop_source_temp_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="copOperationTemperature" schema="ng2">
<attribute column="cop_operation_temp" type="double" path="." schema="ng2"/>
<attribute column="cop_operation_temp_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Movable Shading Device -->
<featureType id="ng2_MovableShadingDeviceType" table="ng2_device" objectClassId="11107" path="MovableShadingDevice" schema="ng2">
<extension base="ng2_AbstractDeviceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute minOccurs="1" maxOccurs="1" column="installation_side" type="string" path="installationSide" schema="ng2"/>
<complexAttribute maxOccurs="1" path="maximumCoverRatio" schema="ng2">
<attribute column="max_cover_ratio" type="double" path="." schema="ng2"/>
<attribute column="max_cover_ratio_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexProperty maxOccurs="1" refType="ng2_TransmittanceType" path="transmittance" schema="ng2">
<join table="ng2_optical_property" fromColumn="transmittance_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
</featureType>
<!-- Electrical Storage Device -->
<featureType id="ng2_ElectricalStorageDeviceType" table="ng2_storage_device" objectClassId="11108" path="ElectricalStorageDevice" schema="ng2">
<extension base="ng2_AbstractDeviceType">
<join table="ng2_device" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="batteryTechnology" schema="ng2">
<attribute column="batt_techn" type="string" path="." schema="ng2"/>
<attribute column="batt_techn_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="powerCapacity" schema="ng2">
<attribute column="power_capacity" type="double" path="." schema="ng2"/>
<attribute column="power_capacity_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Thermal Storage Device -->
<featureType id="ng2_ThermalStorageDeviceType" table="ng2_storage_device" objectClassId="11109" path="ThermalStorageDevice" schema="ng2">
<extension base="ng2_AbstractDeviceType">
<join table="ng2_device" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="preparationTemperature" schema="ng2">
<attribute column="preparation_temp" type="double" path="." schema="ng2"/>
<attribute column="preparation_temp_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="medium" schema="ng2">
<attribute column="medium" type="string" path="." schema="ng2"/>
<attribute column="medium_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="thermalLossesFactor" schema="ng2">
<attribute column="thm_losses_factor_uom" type="string" path="@uom" schema="gml"/>
<attribute column="thm_losses_factor" type="double" path="." schema="ng2"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="volume" schema="ng2">
<attribute column="volume" type="double" path="." schema="ng2"/>
<attribute column="volume_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Abstract Solar Collector -->
<featureType abstract="true" id="ng2_AbstractSolarCollectorType" table="ng2_solar_collector" objectClassId="11110" path="AbstractSolarCollector" schema="ng2">
<extension base="ng2_AbstractDeviceType">
<join table="ng2_device" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="moduleArea" schema="ng2">
<attribute column="module_area" type="double" path="." schema="ng2"/>
<attribute column="module_area_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="apertureArea" schema="ng2">
<attribute column="aperture_area" type="double" path="." schema="ng2"/>
<attribute column="aperture_area_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="azimuth" schema="ng2">
<attribute column="azimuth" type="double" path="." schema="ng2"/>
<attribute column="azimuth_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="inclination" schema="ng2">
<attribute column="inclination" type="double" path="." schema="ng2"/>
<attribute column="inclination_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<geometryProperty maxOccurs="1" lod="2" refColumn="lod2_multi_surface_id" type="MultiSurface" path="lod2MultiSurface" schema="ng2"/>
<geometryProperty maxOccurs="1" lod="3" refColumn="lod3_multi_surface_id" type="MultiSurface" path="lod3MultiSurface" schema="ng2"/>
</featureType>
<!-- Generic Solar Collector -->
<featureType id="ng2_GenericSolarCollectorType" table="ng2_solar_collector" objectClassId="11111" path="GenericSolarCollector" schema="ng2">
<extension base="ng2_AbstractSolarCollectorType"/>
</featureType>
<!-- Photovoltaic Collector -->
<featureType id="ng2_PhotovoltaicCollectorType" table="ng2_solar_collector" objectClassId="11112" path="PhotovoltaicCollector" schema="ng2">
<extension base="ng2_AbstractSolarCollectorType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="cellType" schema="ng2">
<attribute column="cell_type" type="string" path="." schema="ng2"/>
<attribute column="cell_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Solar Thermal Collector -->
<featureType id="ng2_SolarThermalCollectorType" table="ng2_solar_collector" objectClassId="11113" path="SolarThermalCollector" schema="ng2">
<extension base="ng2_AbstractSolarCollectorType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="collectorType" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="opticalEfficiency" schema="ng2">
<attribute column="opt_efficiency" type="double" path="." schema="ng2"/>
<attribute column="opt_efficiency_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="lin_heat_loss_coeff" type="double" path="linearHeatLossCoefficient" schema="ng2"/>
<attribute maxOccurs="1" column="quad_heat_loss_coeff" type="double" path="quadraticHeatLossCoefficient" schema="ng2"/>
</featureType>
<!-- Photovoltaic Thermal Collector -->
<featureType id="ng2_PhotovoltaicThermalCollectorType" table="ng2_solar_collector" objectClassId="11114" path="PhotovoltaicThermalCollector" schema="ng2">
<extension base="ng2_AbstractSolarCollectorType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="collectorType" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="cellType" schema="ng2">
<attribute column="cell_type" type="string" path="." schema="ng2"/>
<attribute column="cell_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="opticalEfficiency" schema="ng2">
<attribute column="opt_efficiency" type="double" path="." schema="ng2"/>
<attribute column="opt_efficiency_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="lin_heat_loss_coeff" type="double" path="linearHeatLossCoefficient" schema="ng2"/>
<attribute maxOccurs="1" column="quad_heat_loss_coeff" type="double" path="quadraticHeatLossCoefficient" schema="ng2"/>
</featureType>
<!-- Urban Function Area -->
<featureType id="ng2_UrbanFunctionAreaType" table="ng2_urban_function_area" objectClassId="11120" topLevel="true" path="UrbanFunctionArea" schema="ng2">
<extension base="CityObjectGroupType">
<join table="cityobjectgroup" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="code" schema="ng2">
<attribute column="code" type="string" path="." schema="ng2"/>
<attribute column="code_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Weather Station -->
<featureType id="ng2_WeatherStationType" table="cityobject" objectClassId="11130" topLevel="true" path="WeatherStation" schema="ng2">
<extension base="AbstractCityObjectType"/>
</featureType>
<!-- Abstract Library -->
<featureType abstract="true" id="ng2_AbstractLibraryType" table="ng2_library" objectClassId="11140" path="AbstractLibrary" schema="ng2">
<extension base="AbstractCityObjectType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="type" schema="ng2">
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
<attribute column="type" type="string" path="." schema="ng2"/>
</complexAttribute>
<attribute maxOccurs="1" column="source" type="string" path="source" schema="ng2"/>
<attribute maxOccurs="1" column="author" type="string" path="author" schema="ng2"/>
</featureType>
<!-- Layered Construction Library -->
<featureType id="ng2_LayeredConstructionLibraryType" table="ng2_library" objectClassId="11141" topLevel="true" path="LayeredConstructionLibrary" schema="ng2">
<extension base="ng2_AbstractLibraryType"/>
<featureProperty target="ng2_AbstractLayeredConstructionType" path="libraryMember" schema="ng2" relationType="composition">
<join table="ng2_layered_construction" fromColumn="id" toColumn="library_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Material Library -->
<featureType id="ng2_MaterialLibraryType" table="ng2_library" objectClassId="11142" topLevel="true" path="MaterialLibrary" schema="ng2">
<extension base="ng2_AbstractLibraryType"/>
<featureProperty target="ng2_AbstractMaterialType" path="libraryMember" schema="ng2" relationType="composition">
<join table="ng2_material" fromColumn="id" toColumn="library_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Schedule Library -->
<featureType id="ng2_ScheduleLibraryType" table="ng2_library" objectClassId="11143" topLevel="true" path="ScheduleLibrary" schema="ng2">
<extension base="ng2_AbstractLibraryType"/>
<featureProperty target="ng2_AbstractScheduleType" path="libraryMember" schema="ng2" relationType="composition">
<join table="ng2_schedule" fromColumn="id" toColumn="library_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
</featureTypes>
<!-- Mapping of new properties of existing CityGML CityObjects classes extended via ADE hook -->
<propertyInjections>
<!-- ADE _CityObject -->
<propertyInjection table="ng2_cityobject" defaultBase="AbstractCityObjectType">
<join table="ng2_cityobject" fromColumn="id" toColumn="id" toRole="child"/>
<complexProperty refType="ng2_CityObjectRelationType" path="relatedTo" schema="ng2">
<join table="ng2_ctyobj_relation" fromColumn="id" toColumn="ng2_cityobject_id" toRole="child"/>
</complexProperty>
<featureProperty target="ng2_UtilityNetworkConnectionType" path="utilityNetworkConnection" schema="ng2" relationType="composition">
<join table="ng2_utl_ntw_connection" fromColumn="id" toColumn="cityobject_id" toRole="child"/>
</featureProperty>
<featureProperty maxOccurs="1" target="ng2_AbstractLayeredConstructionType" path="layeredConstruction" schema="ng2" relationType="association"> <!-- could be "aggregation" -->
<join table="ng2_layered_construction" fromColumn="layered_construction_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<featureProperty target="ng2_AbstractDeviceType" path="device" schema="ng2" relationType="aggregation">
<join table="ng2_device" fromColumn="id" toColumn="cityobject_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<featureProperty target="ng2_AbstractResourceType" path="resource" schema="ng2" relationType="composition">
<join table="ng2_resource" fromColumn="id" toColumn="cityobject_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<complexProperty refType="ng2_SuitabilityType" path="suitability" schema="ng2">
<join table="ng2_suitability" fromColumn="id" toColumn="cityobject_id" toRole="child"/>
</complexProperty>
<featureProperty target="ng2_WeatherDataType" path="weatherData" schema="ng2" relationType="composition">
<join table="ng2_weather_data" fromColumn="id" toColumn="cityobject_id" toRole="child"/>
</featureProperty>
<geometryProperty inlineColumn="ref_point" type="Point" path="referencePoint" schema="ng2"/>
</propertyInjection>
<!-- ADE Building -->
<propertyInjection table="ng2_building" defaultBase="AbstractBuildingType">
<join table="ng2_building" fromColumn="id" toColumn="id" toRole="child"/>
<complexAttribute maxOccurs="1" path="bdgType" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgConstructionWeight" schema="ng2">
<attribute column="constr_weight" type="string" path="." schema="ng2"/>
<attribute column="constr_weight_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="is_protected" type="boolean" path="bdgIsProtected" schema="ng2"/>
<attribute maxOccurs="1" column="attic_thm_status" type="string" path="bdgAtticThermalStatus" schema="ng2"/>
<attribute maxOccurs="1" column="basement_thm_status" type="string" path="bdgBasementThermalStatus" schema="ng2"/>
<complexProperty refType="ng2_QualifiedHeightType" path="bdgHeight" schema="ng2">
<join table="ng2_qualified_attribute" fromColumn="id" toColumn="building_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<complexProperty refType="ng2_QualifiedAreaType" path="bdgArea" schema="ng2">
<join table="ng2_qualified_attribute" fromColumn="id" toColumn="building_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<complexProperty refType="ng2_QualifiedVolumeType" path="bdgVolume" schema="ng2">
<join table="ng2_qualified_attribute" fromColumn="id" toColumn="building_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<featureProperty target="ng2_RefurbishmentMeasureType" path="refurbishmentMeasure" schema="ng2" relationType="composition">
<join table="ng2_refurbishment_measure" fromColumn="id" toColumn="building_id" toRole="child"/>
</featureProperty>
<featureProperty target="ng2_EnergyPerformanceCertificateType" path="energyPerformanceCertificate" schema="ng2" relationType="composition">
<join table="ng2_energy_perf_cert" fromColumn="id" toColumn="building_id" toRole="child"/>
</featureProperty>
<featureProperty target="ng2_AbstractBuildingUnitType" path="buildingUnit" schema="ng2" relationType="composition">
<join table="ng2_building_partition" fromColumn="id" toColumn="building_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<featureProperty target="ng2_AbstractThermalZoneType" path="thermalZone" schema="ng2" relationType="composition">
<join table="ng2_building_partition" fromColumn="id" toColumn="building_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<featureProperty target="ng2_AbstractUsageZoneType" path="usageZone" schema="ng2" relationType="composition">
<join table="ng2_building_partition" fromColumn="id" toColumn="building_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</propertyInjection>
<!-- (Building) ADE _BoundarySurface -->
<propertyInjection table="ng2_thematic_surface" defaultBase="AbstractBoundarySurfaceType">
<join table="ng2_thematic_surface" fromColumn="id" toColumn="id" toRole="child"/>
<complexAttribute maxOccurs="1" path="bdgBdrySurfAzimuth" schema="ng2">
<attribute column="azimuth" type="double" path="." schema="ng2"/>
<attribute column="azimuth_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgBdrySurfGroundViewFactor" schema="ng2">
<attribute column="ground_view_factor" type="double" path="." schema="ng2"/>
<attribute column="ground_view_factor_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgBdrySurfHeatCapacity" schema="ng2">
<attribute column="heat_capacity" type="double" path="." schema="ng2"/>
<attribute column="heat_capacity_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgBdrySurfInclination" schema="ng2">
<attribute column="inclination" type="double" path="." schema="ng2"/>
<attribute column="inclination_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="is_adiabatic" type="boolean" path="bdgBdrySurfIsAdiabatic" schema="ng2"/>
<complexAttribute maxOccurs="1" path="bdgBdrySurfOpaqueSurfaceArea" schema="ng2">
<attribute column="opaque_surf_area" type="double" path="." schema="ng2"/>
<attribute column="opaque_surf_area_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgBdrySurfOpeningToSurfaceRatio" schema="ng2">
<attribute column="open_to_surf_ration" type="double" path="." schema="ng2"/>
<attribute column="open_to_surf_ration_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgBdrySurfSkyViewFactor" schema="ng2">
<attribute column="sky_view_factor" type="double" path="." schema="ng2"/>
<attribute column="sky_view_factor_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgBdrySurfThickness" schema="ng2">
<attribute column="thickness" type="double" path="." schema="ng2"/>
<attribute column="thickness_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgBdrySurfTotalSurfaceArea" schema="ng2">
<attribute column="total_surf_area" type="double" path="." schema="ng2"/>
<attribute column="total_surf_area_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</propertyInjection>
<!-- (Building) ADE _Opening -->
<propertyInjection table="ng2_opening" defaultBase="AbstractOpeningType">
<join table="ng2_opening" fromColumn="id" toColumn="id" toRole="child"/>
<complexAttribute maxOccurs="1" path="bdgOpnArea" schema="ng2">
<attribute column="area" type="double" path="." schema="ng2"/>
<attribute column="area_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgOpnAzimuth" schema="ng2">
<attribute column="azimuth" type="double" path="." schema="ng2"/>
<attribute column="azimuth_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgOpnGroundViewFactor" schema="ng2">
<attribute column="ground_view_factor" type="double" path="." schema="ng2"/>
<attribute column="ground_view_factor_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgOpnInclination" schema="ng2">
<attribute column="inclination" type="double" path="." schema="ng2"/>
<attribute column="inclination_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgOpnSkyViewFactor" schema="ng2">
<attribute column="sky_view_factor" type="double" path="." schema="ng2"/>
<attribute column="sky_view_factor_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</propertyInjection>
</propertyInjections>
</schemaMapping>
rootProject.name = 'energy-ade2-citydb'
includeBuild '../energy-ade2-citygml4j'
\ No newline at end of file
package de.stuttgart.hft;
import de.stuttgart.hft.ade.energy2.exporter.ExportManager;
import de.stuttgart.hft.ade.energy2.importer.ImportManager;
import de.stuttgart.hft.ade.energy2.schema.ObjectMapper;
import de.stuttgart.hft.ade.energy2.schema.SchemaMapper;
import org.citydb.core.ade.ADEExtension;
import org.citydb.core.ade.ADEExtensionException;
import org.citydb.core.ade.ADEObjectMapper;
import org.citydb.core.ade.exporter.ADEExportManager;
import org.citydb.core.ade.importer.ADEImportManager;
import org.citydb.core.database.schema.mapping.SchemaMapping;
import org.citydb.gui.ImpExpLauncher;
import org.citygml4j.ade.energy.EnergyADEContext;
import org.citygml4j.model.citygml.ade.binding.ADEContext;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.List;
public class EnergyADEExtension extends ADEExtension {
private final ObjectMapper objectMapper = new ObjectMapper();
private final SchemaMapper schemaMapper = new SchemaMapper();
private final EnergyADEContext context = new EnergyADEContext();
public static void main(String[] args) {
EnergyADEExtension adeExtension = new EnergyADEExtension();
adeExtension.setBasePath(Paths.get("resources/database").toAbsolutePath());
new ImpExpLauncher().withArgs(args)
.withADEExtension(adeExtension)
.start();
}
@Override
public void init(SchemaMapping schemaMapping) throws ADEExtensionException {
objectMapper.populateObjectClassIds(schemaMapping);
schemaMapper.populateSchemaNames(schemaMapping.getMetadata().getDBPrefix().toLowerCase());
}
@Override
public List<ADEContext> getADEContexts() {
return Collections.singletonList(context);
}
@Override
public ADEObjectMapper getADEObjectMapper() {
return objectMapper;
}
@Override
public ADEImportManager createADEImportManager() {
return new ImportManager(this, schemaMapper);
}
@Override
public ADEExportManager createADEExportManager() {
return new ExportManager(objectMapper, schemaMapper);
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment