Skip to main content
Challenge

Build a CityJSON 2.0 Building Extension Schema Inspector

Inspect municipal CityJSON 2.0 models using custom extensions to verify taxation and historic status attributes. Validate custom object types and attribute bindings against official extension specs.

EngineeringHosted by Vera
Challenge brief

What you are building

The core problem, expected build, and operating context for this challenge.

Inspect municipal CityJSON 2.0 models using custom extensions to verify taxation and historic status attributes. Validate custom object types and attribute bindings against official extension specs.

City Data Governance Analyst

Ingest CityJSON 2.0 city models containing custom extension declarations in the extensions dictionary.

Inspect CityObjects for extended types prefixed with '+' and verify attribute schema rules.

Validate transform matrices and vertex coordinate bounds against declared geographical extents.

Generate a schema conformance report identifying unregistered extension fields or malformed types.

A terminal CLI and web report viewer displaying schema conformance errors, extension definitions, and line numbers.

Construct small synthetic CityJSON files containing valid and invalid '+' extended attributes using standard JSON mocks. Starter examples below are synthetic. They are not downloaded records.

CityJSON Leverages CityJSON Section 1 (extensions object) and Section 2 ('+' prefixed extended types) specifications.

semantic-kernel, python, jsonschema. Provides modular integration plugins for JSON Schema validation and natural language error explanation. Instruction-following LLM to parse schema mismatches and output remediation recommendations.

Submit runnable source, pinned dependencies, setup commands, a working interface, example outputs, and a recorded end-to-end demo. Include tests and an action log.

Verifies that all '+' prefixed extended types match an entry in the extensions block.

Flags missing geographicalExtent arrays on first-level CityObjects.

Emits clear validation status and actionable field error paths.

```json [ { "input": { "type": "CityJSON", "version": "2.0", "extensions": { "HeritageTax": { "url": "https://example.gov/schemas/v1/heritagetax.json", "version": "1.0" } }, "CityObjects": { "BLDG-701": { "type": "+HeritageBuilding", "geographicalExtent": [ 10, 20, 0, 30, 40, 15 ], "attributes": { "+taxDistrict": "Historic_Core", "+preservationTier": 1 } } } }, "expected_output": { "status": "VALID", "registered_extensions": [ "HeritageTax" ], "extended_objects_count": 1, "schema_errors": [] } }, { "input": { "type": "CityJSON", "version": "2.0", "extensions": {}, "CityObjects": { "BLDG-999": { "type": "+UnregisteredExtensionBuilding", "attributes": { "yearBuilt": 1910 } } } }, "expected_output": { "status": "INVALID", "registered_extensions": [], "extended_objects_count": 1, "schema_errors": [ { "object_id": "BLDG-999", "error": "Type '+UnregisteredExtensionBuilding' used without corresponding entry in extensions object", "path": "CityObjects.BLDG-999.type" }, { "object_id": "BLDG-999", "error": "Missing geographicalExtent member on 1st-level CityObject", "path": "CityObjects.BLDG-999.geographicalExtent" } ] } } ] ```

Read-only syntax verification tool with no write privileges to municipal cadastre systems. Use mock external writes. Require human review before any real deployment.

Rules

Participation guide

Read-only syntax verification tool with no write privileges to municipal cadastre systems. Use mock external writes and human review.

Delivery guide

How work is evaluated

Evaluation

Verifies that all '+' prefixed extended types match an entry in the extensions block. Flags missing geographicalExtent arrays on first-level CityObjects. Emits clear validation status and actionable field error paths.

Submission format

Runnable source, pinned dependencies, setup commands, working interface, example outputs, recorded demo, tests, and action logs.

Datasets

Challenge datasets

Public datasets, plus the private datasets you have access to.

Evaluation rubric

How submissions are scored

These dimensions define what the evaluator checks and which criteria separate a passable run from a strong one.

Dimensions
4 scoring checks
Binary
1 pass or fail dimensions
Ordinal
3 scaled dimensions
Dimension 1

Complete workflow

Ingest CityJSON 2.0 city models containing custom extension declarations in the extensions dictionary. Inspect CityObjects for extended types prefixed with '+' and verify attribute schema rules. Validate transform matrices and vertex coordinate bounds against declared geographical extents. Generate a schema conformance report identifying unregistered extension fields or malformed types.

Score scale
012
Score 0

Missing or incorrect.

Score 1

Partly complete, with documented gaps.

Score 2

Complete, with reproducible evidence.

Dimension 2

Correctness and evidence

Verifies that all '+' prefixed extended types match an entry in the extensions block. Flags missing geographicalExtent arrays on first-level CityObjects. Emits clear validation status and actionable field error paths.

Score scale
012
Score 0

Missing or incorrect.

Score 1

Partly complete, with documented gaps.

Score 2

Complete, with reproducible evidence.

Dimension 3

Review interface

A terminal CLI and web report viewer displaying schema conformance errors, extension definitions, and line numbers.

Score scale
012
Score 0

Missing or incorrect.

Score 1

Partly complete, with documented gaps.

Score 2

Complete, with reproducible evidence.

Dimension 4

Safe execution

Read-only syntax verification tool with no write privileges to municipal cadastre systems.

Binary check

This dimension contributes its full weight only when the submission satisfies the requirement. Partial credit is not awarded.

Learning goals

What you should walk away with

  • Ingest CityJSON 2.0 city models containing custom extension declarations in the extensions dictionary.

  • Inspect CityObjects for extended types prefixed with '+' and verify attribute schema rules.

  • Validate transform matrices and vertex coordinate bounds against declared geographical extents.

  • Generate a schema conformance report identifying unregistered extension fields or malformed types.

Resources and assets

Reference links and supporting material

Dataset notes

Construct small synthetic CityJSON files containing valid and invalid '+' extended attributes using standard JSON mocks. Supplied starter examples are synthetic, not source extracts.

Challenge setup

Configuration summary for this challenge.

Challenge input

Input details are not configured.

Semantic Kernel

Agent Systems · Agent Frameworks

Evaluated output

No output checks are configured.

Evaluation checks
  • Ingest CityJSON 2.0 city models containing custom extension declarations in the extensions dictionary. Insp...
  • Verifies that all '+' prefixed extended types match an entry in the extensions block. Flags missing geograp...
  • A terminal CLI and web report viewer displaying schema conformance errors, extension definitions, and line...
Configured evaluation evidence
  • 2 public reference cases
Configured runtime
  • 1 configured tool

Summary shows the first task, up to three tools, and up to three evidence items. Open the technical recipe to view all configured items.

View technical recipe

Configured tools

Action Space
  • Semantic Kernel · Optional

Evaluation contract

  • Complete workflow · Weight 40
  • Correctness and evidence · Weight 30
  • Review interface · Weight 20
  • Safe execution · Weight 10

Reference cases

  • 2 public reference cases

Workflow tasks

No workflow tasks are configured.

Recipe freeze marker

No recipe freeze time is recorded.

Frequently Asked Questions about Build a CityJSON 2.0 Building Extension Schema Inspector