{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://www.cityjson.org/schemas/2.0.2/cityobjects.schema.json",
  "title": "CityJSON City Objects schema v2.0.2",
  
  "ExtensionObject": {
    "type": "object",
    "properties": {
      "type": {
        "type": "string",
        "pattern": "(\\+)([A-Z])\\w+"
      }
    },
    "required": [
      "type"
    ]
  },
  "_AbstractCityObject": {
    "properties": {
      "attributes": { 
        "type": "object" 
      },
      "parents": {
        "type": "array",
        "description": "the IDs of the parents",
        "items": {
          "type": "string"
        }
      },
      "children": {
        "type": "array",
        "description": "the IDs of children",
        "items": {
          "type": "string"
        }
      },
      "geographicalExtent": {
        "type": "array",
        "items": {
          "type": "number"
        },
        "minItems": 6,
        "maxItems": 6
      }
    }
  },
  "OtherConstruction": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "OtherConstruction"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                },
                {
                  "$ref": "geomtemplates.schema.json#/GeometryInstance"
                }
              ]
            }
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  },  
  "_AbstractBuilding": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "address": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "location": {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                }
              }
            }
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                }
              ]
            }
          }
        }
      }
    ]
  },
  "Building": {
    "allOf": [
      {
        "$ref": "#/_AbstractBuilding"
      },
      {
        "properties": {
          "type": {
            "const": "Building"
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  },
  "BuildingPart": {
    "allOf": [
      {
        "$ref": "#/_AbstractBuilding"
      },
      {
        "properties": {
          "type": {
            "const": "BuildingPart"
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },
  "BuildingInstallation": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "BuildingInstallation"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                },
                {
                  "$ref": "geomtemplates.schema.json#/GeometryInstance"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },
  "BuildingConstructiveElement": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "BuildingConstructiveElement"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                },
                {
                  "$ref": "geomtemplates.schema.json#/GeometryInstance"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },
  "BuildingFurniture": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "BuildingFurniture"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                },
                {
                  "$ref": "geomtemplates.schema.json#/GeometryInstance"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },
  "BuildingRoom": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "BuildingRoom"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },
  "BuildingUnit": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "BuildingUnit"
          },
          "address": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "location": {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                }
              }
            }
          },          
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },  
  "BuildingStorey": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "BuildingStorey"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },  
  "CityObjectGroup": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "CityObjectGroup"
          },
          "children_roles": {
            "type": "array",
            "description": "the role of each of the CityObjects members of that group",
            "items": {
              "type": ["string", "null"]
            }
          }, 
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "children"
        ]
      }
    ]
  },
  "GenericCityObject": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "GenericCityObject"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomtemplates.schema.json#/GeometryInstance"
                }
              ]
            }
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  },
  "Tunnel": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "Tunnel"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {               
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                }
              ]
            }
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  },  
  "TunnelPart": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "TunnelPart"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {               
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },
  "TunnelInstallation": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "TunnelInstallation"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                },
                {
                  "$ref": "geomtemplates.schema.json#/GeometryInstance"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },
  "TunnelConstructiveElement": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "TunnelConstructiveElement"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                },
                {
                  "$ref": "geomtemplates.schema.json#/GeometryInstance"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },
  "TunnelHollowSpace": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "TunnelHollowSpace"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },  
  "TunnelFurniture": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "TunnelFurniture"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                },
                {
                  "$ref": "geomtemplates.schema.json#/GeometryInstance"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },  

  "Bridge": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "Bridge"
          },
          "address": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "location": {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                }
              }
            }
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {               
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {               
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                }
              ]
            }
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  },  
  "BridgePart": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "BridgePart"
          },
          "address": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "location": {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                }
              }
            }
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {               
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {               
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },
  "BridgeInstallation": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "BridgeInstallation"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                },
                {
                  "$ref": "geomtemplates.schema.json#/GeometryInstance"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },
  "BridgeConstructiveElement": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "BridgeConstructiveElement"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                },
                {
                  "$ref": "geomtemplates.schema.json#/GeometryInstance"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },
  "BridgeRoom": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "BridgeRoom"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },  
  "BridgeFurniture": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "BridgeFurniture"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                },
                {
                  "$ref": "geomtemplates.schema.json#/GeometryInstance"
                }
              ]
            }
          }
        },
        "required": [
          "type",
          "parents"
        ]
      }
    ]
  },  

  "_AbstractTransportationComplex": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                }
              ]
            }
          }
        }
      }
    ]
  },
  "Road": {
    "allOf": [
      {
        "$ref": "#/_AbstractTransportationComplex"
      },
      {
        "properties": {
          "type": {
            "const": "Road"
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  },
  "Railway": {
    "allOf": [
      {
        "$ref": "#/_AbstractTransportationComplex"
      },
      {
        "properties": {
          "type": {
            "const": "Railway"
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  },
  "TransportSquare": {
    "allOf": [
      {
        "$ref": "#/_AbstractTransportationComplex"
      },
      {
        "properties": {
          "type": {
            "const": "TransportSquare"
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  },
  "Waterway": {
    "allOf": [
      {
        "$ref": "#/_AbstractTransportationComplex"
      },
      {
        "properties": {
          "type": {
            "const": "Waterway"
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  },
  "TINRelief": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "TINRelief"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                }
              ]
            }
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  },
  "WaterBody": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "WaterBody"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                }
              ]
            }
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  },
  "PlantCover": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "PlantCover"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                }
              ]
            }
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  },
  "SolitaryVegetationObject": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "SolitaryVegetationObject"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                },
                {
                  "$ref": "geomtemplates.schema.json#/GeometryInstance"
                }
              ]
            }
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  },
  "LandUse": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "LandUse"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                }
              ]
            }
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  },
  "CityFurniture": {
    "allOf": [
      {
        "$ref": "#/_AbstractCityObject"
      },
      {
        "properties": {
          "type": {
            "const": "CityFurniture"
          },
          "geometry": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "geomprimitives.schema.json#/MultiPoint"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiLineString"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSurface"
                },
                {
                  "$ref": "geomprimitives.schema.json#/Solid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/CompositeSolid"
                },
                {
                  "$ref": "geomprimitives.schema.json#/MultiSolid"
                },
                {
                  "$ref": "geomtemplates.schema.json#/GeometryInstance"
                }
              ]
            }
          }
        },
        "required": [
          "type"
        ]
      }
    ]
  }
}
