Examples
This page contains practical examples of using Cassiopeia to transform various data formats into NGSI-LD compliant entities. Each example demonstrates different data types, mapping configurations, and use cases.
Quick Reference
Run cassiopeia download first before using any mapping commands. This one-time setup downloads the required Smart Data Model schemas for validation.
Available Commands
-
cassiopeia download— Download Smart Data Model schemas (must run first) -
cassiopeia list— List available Smart Data Model schemas -
cassiopeia search <query>— Search for Smart Data Model schemas -
cassiopeia map— Map data to Smart Data Model -
cassiopeia server— Run in server mode -
cassiopeia generate— Generate a mapping file -
cassiopeia format— Format a JSON5 mapping file -
cassiopeia convert— Convert JSON5 mapping to plain JSON
Map Commands
-
cassiopeia map csv— Map CSV files -
cassiopeia map json— Map JSON files -
cassiopeia map geojson— Map GeoJSON files -
cassiopeia map gbfs— Map GBFS feeds -
cassiopeia map gtfs— Map GTFS feeds
Common Options
-
-i, --input <INPUT>— Input file path -
-m, --mapping <MAPPING>— Mapping file path -
-o, --output <OUTPUT>— Output directory (for file writer) -
--writer <TYPE>— Writer type (file or ContextBroker) -
--site <SITE>— Site component for ID pattern -
--service <SERVICE>— Service component for ID pattern -
--group <GROUP>— Group component for ID pattern
Running Examples
CSV and JSON/GeoJSON
CSV to BikeHireDockingStation:
cassiopeia map csv -i data/csv/BikeHireDockingStation.csv -o output -m data/csv/BikeHireDockingStation.json5 --site milano --validation-representation simplified
JSON to PointOfInterest:
cassiopeia map json -i data/json/PointOfInterest.json -o output -m data/json/PointOfInterest.json5
GeoJSON to BikeHireDockingStation or OffStreetParking:
cassiopeia map geojson -i data/geojson/BikeHireDockingStation.geojson -o output -m data/geojson/BikeHireDockingStation.json5
cassiopeia map geojson -i data/geojson/OffStreetParking.geojson -o output -m data/geojson/OffStreetParking.json5
GTFS and GBFS
GTFS feed processing:
cassiopeia map gtfs -i data/gtfs/GtfsBratislava.zip -o output
cassiopeia map gtfs -i data/gtfs/GtfsLjubljanaLpp.zip -o output
GBFS feed processing:
cassiopeia map gbfs -i data/gbfs/GbfsBicikeLJ.json -o output --validation-representation concise
cassiopeia map gbfs -i data/gbfs/GbfsDottStuttgart.json -o output --validation-representation concise
cassiopeia map gbfs -i data/gbfs/GbfsVoiDE.json -o output --validation-representation concise
Understanding the Examples
| Example | Data Source | Key Features | BikeHireDockingStation (CSV) | Milan bike parking | Italian field names, synthetic entities, conditional logic | PointOfInterest (JSON) | Economic activities | Generic field names (FIELD1–20), address construction | BikeHireDockingStation (GeoJSON) | Geographic bike stations | Geometry preservation, coordinate handling | OffStreetParking (GeoJSON) | Milan parking facilities | Conditional logic, dynamic categorization | GTFS | Standard transit feeds | Pre-built configurations, automatic processing | GBFS | Standard bikeshare feeds | Pre-built configurations, real-time data
Working with the Examples
-
Test with sample data — Use sample data in the
data/directory to test mappings -
Examine output — Inspect entity structure, field mapping, relationships, and data types
-
Modify mappings — Copy mapping files and adapt them for your data
cp data/csv/BikeHireDockingStation.json5 my_mapping.json5
cassiopeia map csv -i your_data.csv -m my_mapping.json5 -o your_output
Advanced Features
Synthetic Entities
Create related entities that do not exist in source data:
owner: {
source: "urn:ngsi-ld:Organization:ComuneDiMilano",
type: "ListRelationship",
targetObjectType: "Organization",
syntheticEntity: {
dataModel: "Organization",
identity: { entityName: "ComuneDiMilano" },
attributes: { ... }
}
}