CJFake Manifest Schema
Machine-readable schema for benchmark generation manifests.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://github.com/3DGI/cityjson-fake/raw/main/src/data/cityjson-fake-manifest.schema.json",
"title": "CityJSON Fake Generation Manifest",
"type": "object",
"additionalProperties": false,
"required": ["version", "cases"],
"properties": {
"version": {
"type": "integer",
"const": 1,
"description": "Manifest format version."
},
"purpose": {
"type": ["string", "null"],
"description": "Optional free-form description of the manifest's intent."
},
"cases": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/case"
},
"description": "Generation cases to build from the manifest."
}
},
"$defs": {
"case": {
"type": "object",
"additionalProperties": false,
"required": ["id"],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Stable case identifier used for selection and output naming."
},
"description": {
"type": ["string", "null"],
"description": "Optional human-readable note about the case."
},
"seed": {
"type": ["integer", "null"],
"minimum": 0,
"description": "Optional deterministic seed used to reproduce output."
},
"output": {
"type": ["string", "null"],
"minLength": 1,
"description": "Optional output file path for the generated artifact."
},
"count": {
"type": ["integer", "null"],
"minimum": 1,
"description": "Optional number of documents to emit for this case."
},
"allowed_types_cityobject": {
"type": ["array", "null"],
"uniqueItems": true,
"items": {
"$ref": "#/$defs/cityobject_type"
},
"description": "Restrict generated CityObject types."
},
"min_cityobjects": {
"type": "integer",
"minimum": 1,
"description": "Minimum number of CityObjects to generate."
},
"max_cityobjects": {
"type": "integer",
"minimum": 1,
"description": "Maximum number of CityObjects to generate."
},
"cityobject_hierarchy": {
"type": "boolean",
"description": "Whether to generate parent-child CityObject hierarchies."
},
"min_children": {
"type": "integer",
"minimum": 1,
"description": "Minimum number of children per parent when hierarchy is enabled."
},
"max_children": {
"type": "integer",
"minimum": 1,
"description": "Maximum number of children per parent when hierarchy is enabled."
},
"allowed_types_geometry": {
"type": ["array", "null"],
"uniqueItems": true,
"items": {
"$ref": "#/$defs/geometry_type"
},
"description": "Restrict generated geometry types."
},
"allowed_lods": {
"type": ["array", "null"],
"uniqueItems": true,
"items": {
"$ref": "#/$defs/lod"
},
"description": "Restrict generated LoD values."
},
"min_members_multipoint": {
"type": "integer",
"minimum": 1
},
"max_members_multipoint": {
"type": "integer",
"minimum": 1
},
"min_members_multilinestring": {
"type": "integer",
"minimum": 1
},
"max_members_multilinestring": {
"type": "integer",
"minimum": 1
},
"min_members_multisurface": {
"type": "integer",
"minimum": 1
},
"max_members_multisurface": {
"type": "integer",
"minimum": 1
},
"min_members_solid": {
"type": "integer",
"minimum": 1
},
"max_members_solid": {
"type": "integer",
"minimum": 1
},
"min_members_multisolid": {
"type": "integer",
"minimum": 1
},
"max_members_multisolid": {
"type": "integer",
"minimum": 1
},
"min_members_compositesurface": {
"type": "integer",
"minimum": 1
},
"max_members_compositesurface": {
"type": "integer",
"minimum": 1
},
"min_members_compositesolid": {
"type": "integer",
"minimum": 1
},
"max_members_compositesolid": {
"type": "integer",
"minimum": 1
},
"min_members_cityobject_geometries": {
"type": "integer",
"minimum": 1
},
"max_members_cityobject_geometries": {
"type": "integer",
"minimum": 1
},
"min_coordinate": {
"type": "number",
"description": "Minimum generated vertex coordinate."
},
"max_coordinate": {
"type": "number",
"description": "Maximum generated vertex coordinate."
},
"min_vertices": {
"type": "integer",
"minimum": 1
},
"max_vertices": {
"type": "integer",
"minimum": 1
},
"materials_enabled": {
"type": "boolean"
},
"min_materials": {
"type": "integer",
"minimum": 1
},
"max_materials": {
"type": "integer",
"minimum": 1
},
"nr_themes_materials": {
"type": "integer",
"minimum": 1
},
"generate_ambient_intensity": {
"type": ["boolean", "null"]
},
"generate_diffuse_color": {
"type": ["boolean", "null"]
},
"generate_emissive_color": {
"type": ["boolean", "null"]
},
"generate_specular_color": {
"type": ["boolean", "null"]
},
"generate_shininess": {
"type": ["boolean", "null"]
},
"generate_transparency": {
"type": ["boolean", "null"]
},
"textures_enabled": {
"type": "boolean"
},
"min_textures": {
"type": "integer",
"minimum": 1
},
"max_textures": {
"type": "integer",
"minimum": 1
},
"nr_themes_textures": {
"type": "integer",
"minimum": 1
},
"max_vertices_texture": {
"type": "integer",
"minimum": 1
},
"texture_allow_none": {
"type": "boolean"
},
"use_templates": {
"type": "boolean"
},
"min_templates": {
"type": "integer",
"minimum": 1
},
"max_templates": {
"type": "integer",
"minimum": 1
},
"metadata_enabled": {
"type": "boolean"
},
"metadata_geographical_extent": {
"type": "boolean"
},
"metadata_identifier": {
"type": "boolean"
},
"metadata_reference_date": {
"type": "boolean"
},
"metadata_reference_system": {
"type": "boolean"
},
"metadata_title": {
"type": "boolean"
},
"metadata_point_of_contact": {
"type": "boolean"
},
"attributes_enabled": {
"type": "boolean"
},
"min_attributes": {
"type": "integer",
"minimum": 1
},
"max_attributes": {
"type": "integer",
"minimum": 1
},
"attributes_max_depth": {
"type": "integer",
"minimum": 0
},
"attributes_random_keys": {
"type": "boolean"
},
"attributes_value_mode": {
"type": "string",
"enum": ["heterogenous", "homogenous"],
"default": "heterogenous",
"description": "Attribute value mode. 'heterogenous': the same attribute key can have different value types across CityObjects. 'homogenous': a scalar type (bool, integer, unsigned, float, string) is assigned to each attribute key and stays consistent across all CityObjects, inside arrays, and inside maps."
},
"attributes_allow_null": {
"type": "boolean",
"description": "Allow null values for attributes. In heterogenous mode: null is included in the random type pool. In homogenous mode: each value has a 1-in-7 chance of being null instead of the designated scalar type."
},
"semantics_enabled": {
"type": "boolean"
},
"allowed_types_semantic": {
"type": ["array", "null"],
"uniqueItems": true,
"items": {
"$ref": "#/$defs/semantic_type"
},
"description": "Restrict generated semantic surface types."
}
}
},
"cityobject_type": {
"type": "string",
"enum": [
"Bridge",
"Building",
"CityFurniture",
"CityObjectGroup",
"GenericCityObject",
"LandUse",
"OtherConstruction",
"PlantCover",
"SolitaryVegetationObject",
"TINRelief",
"TransportSquare",
"Railway",
"Road",
"Tunnel",
"WaterBody",
"Waterway",
"BridgePart",
"BridgeInstallation",
"BridgeConstructiveElement",
"BridgeRoom",
"BridgeFurniture",
"BuildingPart",
"BuildingInstallation",
"BuildingConstructiveElement",
"BuildingFurniture",
"BuildingStorey",
"BuildingRoom",
"BuildingUnit",
"TunnelPart",
"TunnelInstallation",
"TunnelConstructiveElement",
"TunnelHollowSpace",
"TunnelFurniture"
]
},
"geometry_type": {
"type": "string",
"enum": [
"MultiPoint",
"MultiLineString",
"MultiSurface",
"CompositeSurface",
"Solid",
"MultiSolid",
"CompositeSolid",
"GeometryInstance"
]
},
"lod": {
"type": "string",
"enum": [
"0",
"0.0",
"0.1",
"0.2",
"0.3",
"1",
"1.0",
"1.1",
"1.2",
"1.3",
"2",
"2.0",
"2.1",
"2.2",
"2.3",
"3",
"3.0",
"3.1",
"3.2",
"3.3"
]
},
"semantic_type": {
"type": "string",
"enum": [
"RoofSurface",
"GroundSurface",
"WallSurface",
"ClosureSurface",
"OuterCeilingSurface",
"OuterFloorSurface",
"Window",
"Door",
"InteriorWallSurface",
"CeilingSurface",
"FloorSurface",
"WaterSurface",
"WaterGroundSurface",
"WaterClosureSurface",
"TrafficArea",
"AuxiliaryTrafficArea",
"TransportationMarking",
"TransportationHole"
]
}
}
}