From 7d3fd1486b8ae60039b7267d86cc1d4e04afbd1e Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 05:49:14 -0500 Subject: [PATCH 01/19] added vehicles_groups table --- samples/template/TIDES/datapackage.json | 15 +++++++ samples/template/TIDES/vehicle_groups.csv | 1 + spec/vehicle_groups.schema.json | 54 +++++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 samples/template/TIDES/vehicle_groups.csv create mode 100644 spec/vehicle_groups.schema.json diff --git a/samples/template/TIDES/datapackage.json b/samples/template/TIDES/datapackage.json index 399cb82a..b317cffd 100644 --- a/samples/template/TIDES/datapackage.json +++ b/samples/template/TIDES/datapackage.json @@ -136,6 +136,21 @@ } ] }, + { + "name": "vehicle_groups", + "profile": "tabular-data-resource", + "path": "vehicle_groups.csv", + "schema": "https://raw.githubusercontent.com/TIDES-transit/TIDES/main/spec/vehicles.schema.json", + "sources": [ + { + "title": "Where did data come from?", + "component": "Type of technology component, i.e. `AVL`", + "product": "Product used.", + "vendor": "Vendor selling product." + } + ] + }, + { "name": "trips_performed", "profile": "tabular-data-resource", diff --git a/samples/template/TIDES/vehicle_groups.csv b/samples/template/TIDES/vehicle_groups.csv new file mode 100644 index 00000000..ff702670 --- /dev/null +++ b/samples/template/TIDES/vehicle_groups.csv @@ -0,0 +1 @@ +vehicle_group_id,capacity_seated,capacity_full,capacity_wheelchair,capacity_bike diff --git a/spec/vehicle_groups.schema.json b/spec/vehicle_groups.schema.json new file mode 100644 index 00000000..8b64451a --- /dev/null +++ b/spec/vehicle_groups.schema.json @@ -0,0 +1,54 @@ +{ + "primaryKey": "vehicle_group_id", + "missingValues": [ + "NA", + "NaN", + "" + ], + "fields": [ + { + "name": "vehicle_group_id", + "type": "string", + "description": "Identifies a group of vehicles.", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "capacity_seated", + "type": "integer", + "description": "Number of seats on the vehicle.", + "constraints": { + "minimum": 0 + } + }, + { + "name": "capacity_full", + "type": "integer", + "description": "Total capacity of the vehicle set by the manufacturer.", + "constraints": { + "minimum": 0 + } + }, + { + "name": "capacity_wheelchair", + "type": "integer", + "description": "Number of wheelchair spaces on the vehicle.", + "constraints": { + "minimum": 0 + } + }, + { + "name": "capacity_bike", + "type": "integer", + "description": "Number of bike spaces on the vehicle.", + "constraints": { + "minimum": 0 + } + } + ], + "name": "vehicle_groups.schema.json", + "description": "Groups of vehicles.", + "_table_type": "Supporting" +} \ No newline at end of file From e0ff307c67feea3f062b8721e9fd70b892a8e0a7 Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 06:01:30 -0500 Subject: [PATCH 02/19] revised vehicles table --- samples/template/TIDES/vehicles.csv | 2 +- spec/vehicles.schema.json | 58 +++++++---------------------- 2 files changed, 14 insertions(+), 46 deletions(-) diff --git a/samples/template/TIDES/vehicles.csv b/samples/template/TIDES/vehicles.csv index 69d4735b..2933c71a 100644 --- a/samples/template/TIDES/vehicles.csv +++ b/samples/template/TIDES/vehicles.csv @@ -1 +1 @@ -vehicle_id,vehicle_start,vehicle_end,model_name,facility_name,capacity_seated,capacity_wheelchair,capacity_bike,bike_rack,capacity_standing +vehicle_id,start_date,end_date,vehicle_group_id,vehicle_label,license_plate diff --git a/spec/vehicles.schema.json b/spec/vehicles.schema.json index 2980b539..66035d58 100644 --- a/spec/vehicles.schema.json +++ b/spec/vehicles.schema.json @@ -9,71 +9,39 @@ { "name": "vehicle_id", "type": "string", - "description": "Identifies a vehicle, such as a bus or a train consist. If possible, this should match other internal agency vehicle IDs and the GTFS-realtime VehicleDescriptor.", + "description": "Identifies a vehicle, such as a bus or a train car. If possible, this should match other internal agency vehicle IDs and the GTFS-realtime VehicleDescriptor.", "constraints": { "required": true, "unique": true } }, { - "name": "vehicle_start", + "name": "start_date", "type": "datetime", - "description": "The timestamp at which the vehicle or train consist is first in operation (i.e., when the consist has been created). Required if Train_car is used." + "description": "The timestamp at which the vehicle is first in operation." }, { - "name": "vehicle_end", + "name": "end_date", "type": "datetime", - "description": "The timestamp at which the vehicle or train consist no longer exists (i.e., the consist is separated or modified). Only used if Train_car is used." + "description": "The timestamp at which the vehicle no longer exists." }, { - "name": "model_name", + "name": "vehicle_group_id", "type": "string", - "description": "Describes the vehicle's model." + "description": "Reference to vehicle_groups.vehicle_group_id" }, { - "name": "facility_name", + "name": "vehicle_label", "type": "string", - "description": "Name or internal agency ID for the facility where the vehicle is generally held." + "description": "The public identifier that is shown on the vehicle (e.g., the bus number)" }, { - "name": "capacity_seated", - "type": "integer", - "description": "Number of seats on the vehicle. Used if Train_car is not used.", - "constraints": { - "minimum": 0 - } - }, - { - "name": "capacity_wheelchair", - "type": "integer", - "description": "Number of wheelchair spaces on the vehicle. Used if Train_car is not used.", - "constraints": { - "minimum": 0 - } - }, - { - "name": "capacity_bike", - "type": "integer", - "description": "Number of bike spaces on the vehicle. Used if Train_car is not used.", - "constraints": { - "minimum": 0 - } - }, - { - "name": "bike_rack", - "type": "boolean", - "description": "Indicates if the vehicle has a useable bike rack. Used if Train_car is not used." - }, - { - "name": "capacity_standing", - "type": "integer", - "description": "Standing capacity of the vehicle set by the manufacturer. Used if Train_car is not used.", - "constraints": { - "minimum": 0 - } + "name": "license_plate", + "type": "string", + "description": "There text of the license plate on the vehicle." } ], "name": "vehicles.schema.json", - "description": "Vehicles, including buses and train consists, with descriptive information.", + "description": "Vehicles, including buses and train cars, with descriptive information.", "_table_type": "Supporting" } From 799a8fe82b129683b0478078f24d928a414cfee1 Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 06:27:15 -0500 Subject: [PATCH 03/19] add vehicle_assignments table --- samples/template/TIDES/datapackage.json | 14 +++ .../template/TIDES/vehicle_assignments.csv | 1 + spec/vehicle_assignments.schema.json | 94 +++++++++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 samples/template/TIDES/vehicle_assignments.csv create mode 100644 spec/vehicle_assignments.schema.json diff --git a/samples/template/TIDES/datapackage.json b/samples/template/TIDES/datapackage.json index b317cffd..0f5b610b 100644 --- a/samples/template/TIDES/datapackage.json +++ b/samples/template/TIDES/datapackage.json @@ -150,6 +150,20 @@ } ] }, + { + "name": "vehicle_assignments", + "profile": "tabular-data-resource", + "path": "vehicle_assignments.csv", + "schema": "https://raw.githubusercontent.com/TIDES-transit/TIDES/main/spec/vehicle_assignments.schema.json", + "sources": [ + { + "title": "Where did data come from?", + "component": "Type of technology component, i.e. `AVL`", + "product": "Product used.", + "vendor": "Vendor selling product." + } + ] + }, { "name": "trips_performed", diff --git a/samples/template/TIDES/vehicle_assignments.csv b/samples/template/TIDES/vehicle_assignments.csv new file mode 100644 index 00000000..bdc742b2 --- /dev/null +++ b/samples/template/TIDES/vehicle_assignments.csv @@ -0,0 +1 @@ +vehicle_assignment_id,service_date,type,vehicle_id,vehicle_assignment_group_id,assignment_start_time,assignment_end_time,operational_status diff --git a/spec/vehicle_assignments.schema.json b/spec/vehicle_assignments.schema.json new file mode 100644 index 00000000..79881e7d --- /dev/null +++ b/spec/vehicle_assignments.schema.json @@ -0,0 +1,94 @@ +{ + "primaryKey": [ + "vehicle_assignment_id", + "service_date" + ], + "missingValues": [ + "NA", + "NaN", + "" + ], + "fields": [ + { + "name": "vehicle_assignment_id", + "type": "string", + "description": "A unique identifier for the vehicle assignment.", + "constraints": { + "required": true, + "unique": true + } + }, + { + "name": "service_date", + "type": "date", + "description": "Service date.", + "constraints": { + "required": true + } + }, + { + "name": "type", + "type": "string", + "description": "Indicates whether the assignment refers to a vehicle or a consist.", + "constraints": { + "enum": [ + "vehicle", + "consist" + ] + } + }, + { + "name": "vehicle_id", + "type": "string", + "title": "ID referencing vehicles.vehicle_id", + "description": "Identifies the vehicle that this assignment is for. Not required for type==consist" + }, + { + "name": "vehicle_assignment_group_id", + "type": "string", + "title": "ID referencing vehicle_groups.vehicle_group_id", + "description": "Identifies the vehicle group that this assignment is for." + }, + { + "name": "assignment_start_time", + "type": "datetime", + "description": "The timestamp when the assignment starts." + }, + { + "name": "assignment_end_time", + "type": "datetime", + "description": "The timestamp when the assignment ends." + }, + { + "name": "operational_status", + "type": "string", + "description": "Indicates the status of the vehicle on this date.", + "constraints": { + "enum": [ + "unavailable", + "available" + ] + } + } + + ], + "foreignReferences": [ + { + "fields": "vehicle_id", + "reference": { + "resource": "vehicles", + "fields": "vehicle_id" + } + }, + { + "fields": "vehicle_assignment_group_id", + "reference": { + "resource": "vehicle_groups", + "fields": "vehicle_group_id" + } + } + ], + "name": "vehicle_assignments.schema.json", + "description": "Daily assigngments of vehicles and consists.", + "_table_type": "Supporting" +} \ No newline at end of file From 5a1365d13303efadad50aedda23be5e1cb8a974e Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 06:36:22 -0500 Subject: [PATCH 04/19] add consist_vehicles table --- samples/template/TIDES/consist_vehicles.csv | 1 + samples/template/TIDES/datapackage.json | 14 +++++ spec/consist_vehicles.schema.json | 70 +++++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 samples/template/TIDES/consist_vehicles.csv create mode 100644 spec/consist_vehicles.schema.json diff --git a/samples/template/TIDES/consist_vehicles.csv b/samples/template/TIDES/consist_vehicles.csv new file mode 100644 index 00000000..5edae9be --- /dev/null +++ b/samples/template/TIDES/consist_vehicles.csv @@ -0,0 +1 @@ +consist_id,car_vehicle_id,car_order,car_orientation diff --git a/samples/template/TIDES/datapackage.json b/samples/template/TIDES/datapackage.json index 0f5b610b..a0e5b70a 100644 --- a/samples/template/TIDES/datapackage.json +++ b/samples/template/TIDES/datapackage.json @@ -164,6 +164,20 @@ } ] }, + { + "name": "consist_vehicles", + "profile": "tabular-data-resource", + "path": "consist_vehicles.csv", + "schema": "https://raw.githubusercontent.com/TIDES-transit/TIDES/main/spec/consist_vehicles.schema.json", + "sources": [ + { + "title": "Where did data come from?", + "component": "Type of technology component, i.e. `AVL`", + "product": "Product used.", + "vendor": "Vendor selling product." + } + ] + }, { "name": "trips_performed", diff --git a/spec/consist_vehicles.schema.json b/spec/consist_vehicles.schema.json new file mode 100644 index 00000000..330cf6a8 --- /dev/null +++ b/spec/consist_vehicles.schema.json @@ -0,0 +1,70 @@ +{ + "primaryKey": [ + "consist_id", + "car_vehicle_id" + ], + "missingValues": [ + "NA", + "NaN", + "" + ], + "fields": [ + { + "name": "consist_id", + "type": "string", + "title": "ID referencing vehicle_assignments.vehicle_assignment_id", + "description": "Identifies the consist assignment record.", + "constraints": { + "required": true + } + }, + { + "name": "car_vehicle_id", + "type": "string", + "title": "ID referencing vehicles.vehicle_id", + "description": "Identifies the train car vehicle record in the vehicles table.", + "constraints": { + "required": true + } + }, + { + "name": "car_order", + "type": "integer", + "description": "The assigned order of the car within the consist.", + "constraints": { + "minimum": 1, + "maximum": 3 + } + }, + { + "name": "car_orientation", + "type": "string", + "description": "Indicates the orientation of the car within the consist.", + "constraints": { + "enum": [ + "forward", + "backward" + ] + } + } + ], + "foreignReferences": [ + { + "fields": "consist_id", + "reference": { + "resource": "vehicle_assignments", + "fields": "vehicle_assignment_id" + } + }, + { + "fields": "car_vehicle_id", + "reference": { + "resource": "vehicles", + "fields": "vehicle_id" + } + } + ], + "name": "consist_vehicles.schema.json", + "description": "Relationships between consist assignments and the vehicles that comprise them.", + "_table_type": "Supporting" +} From 319e9df317af58a1f098c9c3b582b03278525dd3 Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 06:48:23 -0500 Subject: [PATCH 05/19] added vehicle_direction field to event and summary tables --- samples/template/TIDES/fare_transactions.csv | 2 +- samples/template/TIDES/passenger_events.csv | 2 +- samples/template/TIDES/stop_visits.csv | 2 +- samples/template/TIDES/trips_performed.csv | 2 +- samples/template/TIDES/vehicle_locations.csv | 2 +- spec/fare_transactions.schema.json | 11 +++++++++++ spec/passenger_events.schema.json | 11 +++++++++++ spec/stop_visits.schema.json | 11 +++++++++++ spec/trips_performed.schema.json | 11 +++++++++++ spec/vehicle_locations.schema.json | 11 +++++++++++ 10 files changed, 60 insertions(+), 5 deletions(-) diff --git a/samples/template/TIDES/fare_transactions.csv b/samples/template/TIDES/fare_transactions.csv index 530c18b9..3a850b6f 100644 --- a/samples/template/TIDES/fare_transactions.csv +++ b/samples/template/TIDES/fare_transactions.csv @@ -1 +1 @@ -transaction_id,date,timestamp,location_ping_id,amount,currency_type,fare_action,trip_id_performed,stop_sequence,vehicle_id,device_id,fare_id,stop_id,group_size,media_type,rider_category,fare_product,fare_period,fare_capped,fare_media_id,fare_media_id_purchased,balance,service_date,event_timestamp +transaction_id,date,timestamp,location_ping_id,amount,currency_type,fare_action,trip_id_performed,stop_sequence,vehicle_id,vehicle_direction,device_id,fare_id,stop_id,group_size,media_type,rider_category,fare_product,fare_period,fare_capped,fare_media_id,fare_media_id_purchased,balance,service_date,event_timestamp diff --git a/samples/template/TIDES/passenger_events.csv b/samples/template/TIDES/passenger_events.csv index 09ac509f..a6d00723 100644 --- a/samples/template/TIDES/passenger_events.csv +++ b/samples/template/TIDES/passenger_events.csv @@ -1 +1 @@ -passenger_event_id,service_date,event_timestamp,location_ping_id,trip_id_performed,trip_id_scheduled,trip_stop_sequence,scheduled_stop_sequence,event_type,vehicle_id,device_id,train_car_id,stop_id,pattern_id,event_count +passenger_event_id,service_date,event_timestamp,location_ping_id,trip_id_performed,trip_id_scheduled,trip_stop_sequence,scheduled_stop_sequence,event_type,vehicle_id,vehicle_direction,device_id,train_car_id,stop_id,pattern_id,event_count diff --git a/samples/template/TIDES/stop_visits.csv b/samples/template/TIDES/stop_visits.csv index d617b8a4..f82ef493 100644 --- a/samples/template/TIDES/stop_visits.csv +++ b/samples/template/TIDES/stop_visits.csv @@ -1 +1 @@ -service_date,trip_id_performed,trip_stop_sequence,scheduled_stop_sequence,pattern_id,vehicle_id,dwell,stop_id,timepoint,schedule_arrival_time,schedule_departure_time,actual_arrival_time,actual_departure_time,distance,boarding_1,alighting_1,boarding_2,alighting_2,departure_load,door_open,door_close,door_status,ramp_deployed_time,ramp_failure,kneel_deployed_time,lift_deployed_time,bike_rack_deployed,bike_load,revenue,number_of_transactions,schedule_relationship +service_date,trip_id_performed,trip_stop_sequence,scheduled_stop_sequence,pattern_id,vehicle_id,vehicle_direction,dwell,stop_id,timepoint,schedule_arrival_time,schedule_departure_time,actual_arrival_time,actual_departure_time,distance,boarding_1,alighting_1,boarding_2,alighting_2,departure_load,door_open,door_close,door_status,ramp_deployed_time,ramp_failure,kneel_deployed_time,lift_deployed_time,bike_rack_deployed,bike_load,revenue,number_of_transactions,schedule_relationship diff --git a/samples/template/TIDES/trips_performed.csv b/samples/template/TIDES/trips_performed.csv index 74af104f..d83008e2 100644 --- a/samples/template/TIDES/trips_performed.csv +++ b/samples/template/TIDES/trips_performed.csv @@ -1 +1 @@ -date,trip_id_performed,vehicle_id,trip_id_scheduled,route_id,route_type,shape_id,direction_id,operator_id,block_id,trip_start_stop_id,trip_end_stop_id,schedule_trip_start,schedule_trip_end,actual_trip_start,actual_trip_end,trip_type,schedule_relationship,service_date +date,trip_id_performed,vehicle_id,vehicle_direction,trip_id_scheduled,route_id,route_type,shape_id,direction_id,operator_id,block_id,trip_start_stop_id,trip_end_stop_id,schedule_trip_start,schedule_trip_end,actual_trip_start,actual_trip_end,trip_type,schedule_relationship,service_date diff --git a/samples/template/TIDES/vehicle_locations.csv b/samples/template/TIDES/vehicle_locations.csv index bb4971df..c139e18e 100644 --- a/samples/template/TIDES/vehicle_locations.csv +++ b/samples/template/TIDES/vehicle_locations.csv @@ -1 +1 @@ -location_ping_id,date,timestamp,trip_id_performed,stop_sequence,vehicle_id,device_id,stop_id,current_status,latitude,longitude,gps_quality,heading,speed,odometer,schedule_deviation,headway_deviation,trip_type,schedule_relationship,event_timestamp +location_ping_id,date,timestamp,trip_id_performed,stop_sequence,vehicle_id,vehicle_direction,device_id,stop_id,current_status,latitude,longitude,gps_quality,heading,speed,odometer,schedule_deviation,headway_deviation,trip_type,schedule_relationship,event_timestamp diff --git a/spec/fare_transactions.schema.json b/spec/fare_transactions.schema.json index b9de76b7..b963b52e 100644 --- a/spec/fare_transactions.schema.json +++ b/spec/fare_transactions.schema.json @@ -118,6 +118,17 @@ "title": "ID referencing vehicles.vehicle_id", "description": "Identifies the vehicle. May be null if collection device is NOT located on a vehicle. May be null if on a vehicle but vehicle data is unavailable, in which case the data would be associated with a trip and/or stop." }, + { + "name": "vehicle_direction", + "type": "string", + "description": "Indicates the direction of travel of the vehicle for this event.", + "constraints": { + "enum": [ + "forward", + "backward" + ] + } + }, { "name": "device_id", "type": "string", diff --git a/spec/passenger_events.schema.json b/spec/passenger_events.schema.json index 0e91a7e3..7256c4d9 100644 --- a/spec/passenger_events.schema.json +++ b/spec/passenger_events.schema.json @@ -104,6 +104,17 @@ "required": true } }, + { + "name": "vehicle_direction", + "type": "string", + "description": "Indicates the direction of travel of the vehicle for this event.", + "constraints": { + "enum": [ + "forward", + "backward" + ] + } + }, { "name": "device_id", "type": "string", diff --git a/spec/stop_visits.schema.json b/spec/stop_visits.schema.json index 104473fd..58c41891 100644 --- a/spec/stop_visits.schema.json +++ b/spec/stop_visits.schema.json @@ -57,6 +57,17 @@ "title": "ID referencing vehicles.vehicle_id", "description": "Identifies the vehicle." }, + { + "name": "vehicle_direction", + "type": "string", + "description": "Indicates the direction of travel of the vehicle for this event.", + "constraints": { + "enum": [ + "forward", + "backward" + ] + } + }, { "name": "dwell", "type": "integer", diff --git a/spec/trips_performed.schema.json b/spec/trips_performed.schema.json index 8c4c4b35..d538d129 100644 --- a/spec/trips_performed.schema.json +++ b/spec/trips_performed.schema.json @@ -34,6 +34,17 @@ "required": true } }, + { + "name": "vehicle_direction", + "type": "string", + "description": "Indicates the direction of travel of the vehicle for this trip.", + "constraints": { + "enum": [ + "forward", + "backward" + ] + } + }, { "name": "trip_id_scheduled", "type": "string", diff --git a/spec/vehicle_locations.schema.json b/spec/vehicle_locations.schema.json index 8f7d3d62..09a4da51 100644 --- a/spec/vehicle_locations.schema.json +++ b/spec/vehicle_locations.schema.json @@ -67,6 +67,17 @@ "required": true } }, + { + "name": "vehicle_direction", + "type": "string", + "description": "Indicates the direction of travel of the vehicle for this event.", + "constraints": { + "enum": [ + "forward", + "backward" + ] + } + }, { "name": "device_id", "type": "string", From 76b07eaa34ef2e3198be7a128f5770b6df7d87ee Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 06:48:55 -0500 Subject: [PATCH 06/19] correct consist_vehicles table remove inadvertent constraints --- spec/consist_vehicles.schema.json | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/spec/consist_vehicles.schema.json b/spec/consist_vehicles.schema.json index 330cf6a8..c983d113 100644 --- a/spec/consist_vehicles.schema.json +++ b/spec/consist_vehicles.schema.json @@ -30,11 +30,7 @@ { "name": "car_order", "type": "integer", - "description": "The assigned order of the car within the consist.", - "constraints": { - "minimum": 1, - "maximum": 3 - } + "description": "The assigned order of the car within the consist." }, { "name": "car_orientation", From 5510525d421a944897820231260fc0129fb75d22 Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 07:00:03 -0500 Subject: [PATCH 07/19] correct schema reference in sample datapackage --- samples/template/TIDES/datapackage.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/template/TIDES/datapackage.json b/samples/template/TIDES/datapackage.json index a0e5b70a..8a15a17a 100644 --- a/samples/template/TIDES/datapackage.json +++ b/samples/template/TIDES/datapackage.json @@ -140,7 +140,7 @@ "name": "vehicle_groups", "profile": "tabular-data-resource", "path": "vehicle_groups.csv", - "schema": "https://raw.githubusercontent.com/TIDES-transit/TIDES/main/spec/vehicles.schema.json", + "schema": "https://raw.githubusercontent.com/TIDES-transit/TIDES/main/spec/vehicle_groups.schema.json", "sources": [ { "title": "Where did data come from?", From a5c9e17ad1401df913b0d75e8e00bce67a5df32f Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 07:09:12 -0500 Subject: [PATCH 08/19] Update consists_vehicles field descriptions --- spec/consist_vehicles.schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/consist_vehicles.schema.json b/spec/consist_vehicles.schema.json index c983d113..72ce62ef 100644 --- a/spec/consist_vehicles.schema.json +++ b/spec/consist_vehicles.schema.json @@ -13,7 +13,7 @@ "name": "consist_id", "type": "string", "title": "ID referencing vehicle_assignments.vehicle_assignment_id", - "description": "Identifies the consist assignment record.", + "description": "Identifies the vehicle assignment record for the consist.", "constraints": { "required": true } @@ -61,6 +61,6 @@ } ], "name": "consist_vehicles.schema.json", - "description": "Relationships between consist assignments and the vehicles that comprise them.", + "description": "Assignment of vehicles/cars into consists.", "_table_type": "Supporting" } From 8369b2656a9146fe2e3dcf69121fa2a2f2b7976e Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 07:09:32 -0500 Subject: [PATCH 09/19] Update list of tabes in datapackage profile --- spec/tides-datapackage-profile.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spec/tides-datapackage-profile.json b/spec/tides-datapackage-profile.json index aa25313b..0453c699 100644 --- a/spec/tides-datapackage-profile.json +++ b/spec/tides-datapackage-profile.json @@ -293,16 +293,17 @@ }, "tides-table": { "enum": [ + "consist_vehicles", "devices", "fare_transactions", "operators", "station_activities", "passenger_events", "stop_visits", - "train_cars", "trips_performed", + "vehicle_assignments", + "vehicle_groups", "vehicle_locations", - "vehicle_train_cars", "vehicles" ], "description": "An identifier string corresponding to the name of one of the table specs in the TIDES data package", From cba5d690658ce9cd86c98d0af641021ed7e2d4ba Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 07:11:34 -0500 Subject: [PATCH 10/19] Remove train_cars and vehicle_train_cars tables --- samples/template/TIDES/datapackage.json | 28 ------- samples/template/TIDES/train_cars.csv | 1 - samples/template/TIDES/vehicle_train_cars.csv | 1 - spec/train_cars.schema.json | 81 ------------------- spec/vehicle_train_cars.schema.json | 70 ---------------- 5 files changed, 181 deletions(-) delete mode 100644 samples/template/TIDES/train_cars.csv delete mode 100644 samples/template/TIDES/vehicle_train_cars.csv delete mode 100644 spec/train_cars.schema.json delete mode 100644 spec/vehicle_train_cars.schema.json diff --git a/samples/template/TIDES/datapackage.json b/samples/template/TIDES/datapackage.json index 8a15a17a..00877f98 100644 --- a/samples/template/TIDES/datapackage.json +++ b/samples/template/TIDES/datapackage.json @@ -66,20 +66,6 @@ } ] }, - { - "name": "train_cars", - "profile": "tabular-data-resource", - "path": "train_cars.csv", - "schema": "https://raw.githubusercontent.com/TIDES-transit/TIDES/main/spec/train_cars.schema.json", - "sources": [ - { - "title": "Where did data come from?", - "component": "Type of technology component, i.e. `AVL`", - "product": "Product used.", - "vendor": "Vendor selling product." - } - ] - }, { "name": "operators", "profile": "tabular-data-resource", @@ -108,20 +94,6 @@ } ] }, - { - "name": "vehicle_train_cars", - "profile": "tabular-data-resource", - "path": "vehicle_train_cars.csv", - "schema": "https://raw.githubusercontent.com/TIDES-transit/TIDES/main/spec/vehicle_train_cars.schema.json", - "sources": [ - { - "title": "Where did data come from?", - "component": "Type of technology component, i.e. `AVL`", - "product": "Product used.", - "vendor": "Vendor selling product." - } - ] - }, { "name": "vehicles", "profile": "tabular-data-resource", diff --git a/samples/template/TIDES/train_cars.csv b/samples/template/TIDES/train_cars.csv deleted file mode 100644 index 56056710..00000000 --- a/samples/template/TIDES/train_cars.csv +++ /dev/null @@ -1 +0,0 @@ -train_car_id,model_name,facility_name,capacity_seated,capacity_wheelchair,capacity_bike,bike_rack,capacity_standing,train_car_type diff --git a/samples/template/TIDES/vehicle_train_cars.csv b/samples/template/TIDES/vehicle_train_cars.csv deleted file mode 100644 index 9044359c..00000000 --- a/samples/template/TIDES/vehicle_train_cars.csv +++ /dev/null @@ -1 +0,0 @@ -vehicle_id,train_car_id,order,operator_id diff --git a/spec/train_cars.schema.json b/spec/train_cars.schema.json deleted file mode 100644 index 67dd4bec..00000000 --- a/spec/train_cars.schema.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "primaryKey": "train_car_id", - "missingValues": [ - "NA", - "NaN", - "" - ], - "fields": [ - { - "name": "train_car_id", - "type": "string", - "description": "Identifies a train car or asset. If possible, this should match other internal agency asset IDs.", - "constraints": { - "required": true, - "unique": true - } - }, - { - "name": "model_name", - "type": "string", - "description": "Describes the train car or asset's model." - }, - { - "name": "facility_name", - "type": "string", - "description": "Name or internal agency ID for the facility where the train car or asset is generally held." - }, - { - "name": "capacity_seated", - "type": "integer", - "description": "Number of seats on the train car or asset.", - "constraints": { - "minimum": 0 - } - }, - { - "name": "capacity_wheelchair", - "type": "integer", - "description": "Number of wheelchair spaces on the train car or asset.", - "constraints": { - "minimum": 0 - } - }, - { - "name": "capacity_bike", - "type": "integer", - "description": "Number of bike spaces on the train car or asset.", - "constraints": { - "minimum": 0 - } - }, - { - "name": "bike_rack", - "type": "boolean", - "description": "Indicates if the train car or asset has a usable bike rack." - }, - { - "name": "capacity_standing", - "type": "integer", - "description": "Standing capacity of the train car or asset set by the manufacturer.", - "constraints": { - "minimum": 0 - } - }, - { - "name": "train_car_type", - "type": "string", - "description": "Indicates the type of train car or asset.", - "constraints": { - "enum": [ - "Train car", - "Trolley", - "Other" - ] - } - } - ], - "name": "train_cars.schema.json", - "description": "Assets that comprise vehicles, such as train cars, with descriptive information.", - "_table_type": "Supporting" -} diff --git a/spec/vehicle_train_cars.schema.json b/spec/vehicle_train_cars.schema.json deleted file mode 100644 index a08671b8..00000000 --- a/spec/vehicle_train_cars.schema.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "primaryKey": [ - "vehicle_id", - "train_car_id" - ], - "missingValues": [ - "NA", - "NaN", - "" - ], - "fields": [ - { - "name": "vehicle_id", - "type": "string", - "title": "ID referencing vehicles.vehicle_id", - "description": "Identifies a vehicle, such as a train consist. If possible, this should match other internal agency vehicle IDs.", - "constraints": { - "required": true - } - }, - { - "name": "train_car_id", - "type": "string", - "title": "ID referencing train_cars.train_car_id", - "description": "Identifies a train car or an asset that is a component of the vehicle.", - "constraints": { - "required": true - } - }, - { - "name": "train_car_order", - "type": "integer", - "description": "The assigned order of the train car or asset within the vehicle.", - "constraints": { - "minimum": 0 - } - }, - { - "name": "operator_id", - "type": "string", - "description": "Identifies an operator (person). If possible, this should match other internal agency operator IDs." - } - ], - "foreignReferences": [ - { - "fields": "vehicle_id", - "reference": { - "resource": "vehicles", - "fields": "vehicle_id" - } - }, - { - "fields": "train_car_id", - "reference": { - "resource": "train_cars", - "fields": "train_car_id" - } - }, - { - "fields": "operator_id", - "reference": { - "resource": "operator", - "fields": "operator_id" - } - } - ], - "name": "vehicle_train_cars.schema.json", - "description": "Relationships between assets and vehicles.", - "_table_type": "Supporting" -} From 447e1d1d17f642beddd4bae550ecb6dc05338799 Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 10:15:50 -0500 Subject: [PATCH 11/19] add minimum value to consist_vehicles.car_order --- spec/consist_vehicles.schema.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spec/consist_vehicles.schema.json b/spec/consist_vehicles.schema.json index 72ce62ef..cf385c8b 100644 --- a/spec/consist_vehicles.schema.json +++ b/spec/consist_vehicles.schema.json @@ -30,7 +30,10 @@ { "name": "car_order", "type": "integer", - "description": "The assigned order of the car within the consist." + "description": "The assigned order of the car within the consist.", + "constraints": { + "minimum": 1 + } }, { "name": "car_orientation", From e3efa2d274c4a298d421a319bed9b57bd8c8ff4d Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 10:17:25 -0500 Subject: [PATCH 12/19] Remove old references to train_cars --- spec/devices.schema.json | 13 ------------- spec/passenger_events.schema.json | 13 ------------- spec/tides-datapackage-profile.json | 2 +- 3 files changed, 1 insertion(+), 27 deletions(-) diff --git a/spec/devices.schema.json b/spec/devices.schema.json index 64384d14..504c04d0 100644 --- a/spec/devices.schema.json +++ b/spec/devices.schema.json @@ -27,12 +27,6 @@ "type": "string", "description": "Identifies the vehicle on which the device is located. May be null if the device is at a stop or station." }, - { - "name": "train_car_id", - "title": "ID referencing train_cars.train_car_id", - "type": "string", - "description": "Identifies the train car or asset on which the device is located. May be null if the device is at a stop or station or if the Train_cars file is not used." - }, { "name": "device_type", "type": "string", @@ -78,13 +72,6 @@ "resource": "vehicles", "fields": "vehicle_id" } - }, - { - "fields": "train_car_id", - "reference": { - "resource": "train_car", - "fields": "train_car_id" - } } ], "name": "devices.schema.json", diff --git a/spec/passenger_events.schema.json b/spec/passenger_events.schema.json index 7256c4d9..f3f3ae9c 100644 --- a/spec/passenger_events.schema.json +++ b/spec/passenger_events.schema.json @@ -121,12 +121,6 @@ "title": "ID referencing devices.device_id", "description": "Identifies the device that recorded the event. May be null if only a single device is reporting passenger events on a vehicle/ train car and the device_id is not distinct from vehicle_id/train_car_id." }, - { - "name": "train_car_id", - "type": "string", - "title": "ID referencing train_cars.train_car_id", - "description": "Identifies the train car." - }, { "name": "stop_id", "type": "string", @@ -185,13 +179,6 @@ "fields": "device_id" } }, - { - "fields": "train_car_id", - "reference": { - "resource": "train_cars", - "fields": "train_car_id" - } - }, { "fields": "stop_id", "reference": { diff --git a/spec/tides-datapackage-profile.json b/spec/tides-datapackage-profile.json index 0453c699..3ab2d161 100644 --- a/spec/tides-datapackage-profile.json +++ b/spec/tides-datapackage-profile.json @@ -310,7 +310,7 @@ "type": "string", "examples": [ "fare_transactions", - "train_cars" + "vehicles" ] }, "schema": { From 8a927ac51af4c9b047556e9d0dd37ee8a553b028 Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 10:18:48 -0500 Subject: [PATCH 13/19] Fixes to vehicle_assignments Remove service_date from key, required fields Make type required --- spec/vehicle_assignments.schema.json | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/spec/vehicle_assignments.schema.json b/spec/vehicle_assignments.schema.json index 79881e7d..5cfba333 100644 --- a/spec/vehicle_assignments.schema.json +++ b/spec/vehicle_assignments.schema.json @@ -1,7 +1,6 @@ { "primaryKey": [ - "vehicle_assignment_id", - "service_date" + "vehicle_assignment_id" ], "missingValues": [ "NA", @@ -21,17 +20,15 @@ { "name": "service_date", "type": "date", - "description": "Service date.", - "constraints": { - "required": true - } + "description": "Service date." }, { "name": "type", "type": "string", "description": "Indicates whether the assignment refers to a vehicle or a consist.", "constraints": { - "enum": [ + "required": true, + "enum": [ "vehicle", "consist" ] @@ -89,6 +86,6 @@ } ], "name": "vehicle_assignments.schema.json", - "description": "Daily assigngments of vehicles and consists.", + "description": "Daily assignments of vehicles and consists.", "_table_type": "Supporting" } \ No newline at end of file From 0d5f397cad59dee8811492b2b9c81f8a42a1ba3f Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 10:19:10 -0500 Subject: [PATCH 14/19] Change vehicles.start_date and end_date to date fields --- spec/vehicles.schema.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/spec/vehicles.schema.json b/spec/vehicles.schema.json index 66035d58..043fbd98 100644 --- a/spec/vehicles.schema.json +++ b/spec/vehicles.schema.json @@ -17,13 +17,13 @@ }, { "name": "start_date", - "type": "datetime", - "description": "The timestamp at which the vehicle is first in operation." + "type": "date", + "description": "Start of the date range for which operational data may reference this vehicle." }, { "name": "end_date", - "type": "datetime", - "description": "The timestamp at which the vehicle no longer exists." + "type": "date", + "description": "End of the date range for which operational data may reference this vehicle." }, { "name": "vehicle_group_id", @@ -38,7 +38,7 @@ { "name": "license_plate", "type": "string", - "description": "There text of the license plate on the vehicle." + "description": "The text of the license plate on the vehicle." } ], "name": "vehicles.schema.json", From 77afa0ef7c7e73374c64a6e1b21100e170a5cf3c Mon Sep 17 00:00:00 2001 From: John Levin Date: Mon, 20 Jul 2026 10:19:30 -0500 Subject: [PATCH 15/19] Update tides_spec.json for schema changes --- spec/tides.spec.json | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/spec/tides.spec.json b/spec/tides.spec.json index e5f17d88..6e1a5940 100644 --- a/spec/tides.spec.json +++ b/spec/tides.spec.json @@ -61,25 +61,33 @@ "required": false }, { - "title": "Train Cars", - "name": "train_cars", - "description": "Assets that comprise vehicles, such as train cars, with descriptive information.", - "path": "train_cars.csv", - "schema": "train_cars.schema.json", + "title": "Vehicle Groups", + "name": "vehicle_groups", + "description": "Logical groupings of vehicles with similar attributes.", + "path": "vehicle_groups.csv", + "schema": "vehicle_groups.schema.json", "required": false }, { - "title": "Vehicle Train Cars", - "name": "vehicle_train_cars", - "description": "Relationships between assets and vehicles.", - "path": "vehicle_train_cars.csv", - "schema": "vehicle_train_cars.schema.json", + "title": "Vehicle Assignments", + "name": "vehicle_assignments", + "description": "Daily assignments of vehicles and consists to service operations.", + "path": "vehicle_assignments.csv", + "schema": "vehicle_assignments.schema.json", + "required": false + }, + { + "title": "Consist Vehicles", + "name": "consist_vehicles", + "description": "Assignment of train cars into ordered consists.", + "path": "consist_vehicles.csv", + "schema": "consist_vehicles.schema.json", "required": false }, { "title": "Vehicles", "name": "vehicles", - "description": "Vehicles, including buses and train consists, with descriptive information.", + "description": "Vehicles, including buses and train cars, with descriptive information.", "path": "vehicles.csv", "schema": "vehicles.schema.json", "required": false From 7b2caa3949ca2fc48b8776cce2d01b6b7c0d6ecd Mon Sep 17 00:00:00 2001 From: Christopher Yamas Date: Thu, 23 Jul 2026 09:29:42 -0400 Subject: [PATCH 16/19] rename vehicle_assignment_group_id to vehicle_group_id and clarify assignment field descriptions --- samples/template/TIDES/vehicle_assignments.csv | 2 +- spec/vehicle_assignments.schema.json | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/samples/template/TIDES/vehicle_assignments.csv b/samples/template/TIDES/vehicle_assignments.csv index bdc742b2..43147e60 100644 --- a/samples/template/TIDES/vehicle_assignments.csv +++ b/samples/template/TIDES/vehicle_assignments.csv @@ -1 +1 @@ -vehicle_assignment_id,service_date,type,vehicle_id,vehicle_assignment_group_id,assignment_start_time,assignment_end_time,operational_status +vehicle_assignment_id,service_date,type,vehicle_id,vehicle_group_id,assignment_start_time,assignment_end_time,operational_status diff --git a/spec/vehicle_assignments.schema.json b/spec/vehicle_assignments.schema.json index 5cfba333..ff786f1c 100644 --- a/spec/vehicle_assignments.schema.json +++ b/spec/vehicle_assignments.schema.json @@ -11,7 +11,7 @@ { "name": "vehicle_assignment_id", "type": "string", - "description": "A unique identifier for the vehicle assignment.", + "description": "The identifier associated with the vehicle or consist in the operational data. For a single vehicle (type=vehicle), this is typically the same as vehicles.vehicle_id. For a consist (type=consist), this is a unique identifier assigned when the consist is formed; a consist that is broken up and re-formed should receive a new identifier. This identifier is not required to match GTFS-realtime VehicleDescriptor values, though it may where operational systems use the same identifiers.", "constraints": { "required": true, "unique": true @@ -20,7 +20,7 @@ { "name": "service_date", "type": "date", - "description": "Service date." + "description": "Service date of the assignment. Optional; assignment_start_time and assignment_end_time may be used to bound assignments that span multiple days or change within a day." }, { "name": "type", @@ -38,13 +38,13 @@ "name": "vehicle_id", "type": "string", "title": "ID referencing vehicles.vehicle_id", - "description": "Identifies the vehicle that this assignment is for. Not required for type==consist" + "description": "Identifies the physical vehicle for this assignment. Required when type=vehicle; omitted when type=consist (the cars of a consist are documented in consist_vehicles)." }, { - "name": "vehicle_assignment_group_id", + "name": "vehicle_group_id", "type": "string", "title": "ID referencing vehicle_groups.vehicle_group_id", - "description": "Identifies the vehicle group that this assignment is for." + "description": "Identifies the vehicle group whose attributes apply to this assignment. For a single vehicle, this matches vehicles.vehicle_group_id; for a consist, this references the group describing the consist type." }, { "name": "assignment_start_time", @@ -78,7 +78,7 @@ } }, { - "fields": "vehicle_assignment_group_id", + "fields": "vehicle_group_id", "reference": { "resource": "vehicle_groups", "fields": "vehicle_group_id" @@ -86,6 +86,6 @@ } ], "name": "vehicle_assignments.schema.json", - "description": "Daily assignments of vehicles and consists.", + "description": "Vehicles and consists available for assignment to service, to which operational data and devices may be associated. Optional table: agencies with static fleets and no consists or vehicle status tracking may omit it. A single-car train is represented by two records: one for the physical vehicle and one for the consist.", "_table_type": "Supporting" } \ No newline at end of file From db0dede854851b68711b34b719f7b86a5b5d831f Mon Sep 17 00:00:00 2001 From: Christopher Yamas Date: Thu, 23 Jul 2026 09:29:42 -0400 Subject: [PATCH 17/19] clarify vehicle identifier descriptions and add vehicle_group_id reference --- spec/passenger_events.schema.json | 2 +- spec/vehicles.schema.json | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/spec/passenger_events.schema.json b/spec/passenger_events.schema.json index f3f3ae9c..1cbfbefc 100644 --- a/spec/passenger_events.schema.json +++ b/spec/passenger_events.schema.json @@ -119,7 +119,7 @@ "name": "device_id", "type": "string", "title": "ID referencing devices.device_id", - "description": "Identifies the device that recorded the event. May be null if only a single device is reporting passenger events on a vehicle/ train car and the device_id is not distinct from vehicle_id/train_car_id." + "description": "Identifies the device that recorded the event. May be null if only a single device is reporting passenger events on a vehicle and the device_id is not distinct from vehicle_id." }, { "name": "stop_id", diff --git a/spec/vehicles.schema.json b/spec/vehicles.schema.json index 043fbd98..c784a3e2 100644 --- a/spec/vehicles.schema.json +++ b/spec/vehicles.schema.json @@ -9,7 +9,7 @@ { "name": "vehicle_id", "type": "string", - "description": "Identifies a vehicle, such as a bus or a train car. If possible, this should match other internal agency vehicle IDs and the GTFS-realtime VehicleDescriptor.", + "description": "Identifies a physical vehicle, such as a bus or an individual train car. If possible, this should match internal agency asset and vehicle IDs. Note that identifiers in operational data streams (including GTFS-realtime) may refer to either an individual vehicle or a consist; those operational identifiers are documented in vehicle_assignments.", "constraints": { "required": true, "unique": true @@ -28,7 +28,8 @@ { "name": "vehicle_group_id", "type": "string", - "description": "Reference to vehicle_groups.vehicle_group_id" + "title": "ID referencing vehicle_groups.vehicle_group_id", + "description": "Identifies the vehicle group whose attributes apply to this vehicle." }, { "name": "vehicle_label", @@ -41,7 +42,16 @@ "description": "The text of the license plate on the vehicle." } ], + "foreignReferences": [ + { + "fields": "vehicle_group_id", + "reference": { + "resource": "vehicle_groups", + "fields": "vehicle_group_id" + } + } + ], "name": "vehicles.schema.json", - "description": "Vehicles, including buses and train cars, with descriptive information.", + "description": "Physical vehicles, including buses and individual train cars.", "_table_type": "Supporting" } From be5c3b033c1fcb5bd601e859d7ccf3c0fb17a0a1 Mon Sep 17 00:00:00 2001 From: Christopher Yamas Date: Thu, 23 Jul 2026 09:29:42 -0400 Subject: [PATCH 18/19] add changelog entries for vehicles restructure --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 610b96b5..ccf02435 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- **BREAKING:** `vehicle_groups` table normalizing shared vehicle attributes (capacities, and additional attributes to be defined) ([#269](https://github.com/TIDES-transit/TIDES/issues/269), [#272](https://github.com/TIDES-transit/TIDES/pull/272)) +- `vehicle_assignments` table representing vehicles and consists in operation, to which operational data and devices may be associated ([#269](https://github.com/TIDES-transit/TIDES/issues/269)) +- `consist_vehicles` table documenting the cars of each consist with order and orientation ([#269](https://github.com/TIDES-transit/TIDES/issues/269)) +- `vehicle_direction` field on `vehicle_locations`, `passenger_events`, `fare_transactions`, `stop_visits`, and `trips_performed` ([#269](https://github.com/TIDES-transit/TIDES/issues/269)) + +### Changed + +- **BREAKING:** `vehicles` table repurposed as the registry of physical vehicles (buses and individual train cars); attribute fields moved to `vehicle_groups`, and `vehicle_label`, `license_plate`, `start_date`, `end_date`, and `vehicle_group_id` fields added ([#269](https://github.com/TIDES-transit/TIDES/issues/269)) + +### Removed + +- **BREAKING:** `train_cars` and `vehicle_train_cars` tables, superseded by `vehicles`, `vehicle_assignments`, and `consist_vehicles` ([#269](https://github.com/TIDES-transit/TIDES/issues/269)) + ## [1.0] - 2025-12-23 ### Changed From e6331e888fd6a8a5e3b98641e59214ca6793caf8 Mon Sep 17 00:00:00 2001 From: Christopher Yamas Date: Thu, 30 Jul 2026 12:21:37 -0400 Subject: [PATCH 19/19] fix: add required profile property to tides.spec.json resources --- spec/tides.spec.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/spec/tides.spec.json b/spec/tides.spec.json index 6e1a5940..f395224c 100644 --- a/spec/tides.spec.json +++ b/spec/tides.spec.json @@ -10,6 +10,7 @@ "description": "Timestamped vehicle locations and speeds.", "path": "vehicle_locations.csv", "schema": "vehicle_locations.schema.json", + "profile": "tabular-data-resource", "required": false }, { @@ -18,6 +19,7 @@ "description": "Timestamped passenger-related events, including boardings and alightings.", "path": "passenger_events.csv", "schema": "passenger_events.schema.json", + "profile": "tabular-data-resource", "required": false }, { @@ -26,6 +28,7 @@ "description": "Timestamped fare transaction, associated with devices.", "path": "fare_transactions.csv", "schema": "fare_transactions.schema.json", + "profile": "tabular-data-resource", "required": false }, { @@ -34,6 +37,7 @@ "description": "Summarized boarding, alighting, arrival, departure, and other events (kneel engaged, ramp deployed, etc.) by trip and stop for each service date.", "path": "Stop_visits.csv", "schema": "stop_visits.schema.json", + "profile": "tabular-data-resource", "required": false }, { @@ -42,6 +46,7 @@ "description": "Trips performed for each service date.", "path": "trips_performed.csv", "schema": "trips_performed.schema.json", + "profile": "tabular-data-resource", "required": false }, { @@ -50,6 +55,7 @@ "description": "Summarized transactions, entries, and exits by stop or station and time period for each service date (for events not associated with a trip).", "path": "station_activities.csv", "schema": "station_activities.schema.json", + "profile": "tabular-data-resource", "required": false }, { @@ -58,6 +64,7 @@ "description": "Measurement devices, such as AVL, APC, and AFC devices, associated with vehicles or stops or stations.", "path": "devices.csv", "schema": "devices.schema.json", + "profile": "tabular-data-resource", "required": false }, { @@ -66,6 +73,7 @@ "description": "Logical groupings of vehicles with similar attributes.", "path": "vehicle_groups.csv", "schema": "vehicle_groups.schema.json", + "profile": "tabular-data-resource", "required": false }, { @@ -74,6 +82,7 @@ "description": "Daily assignments of vehicles and consists to service operations.", "path": "vehicle_assignments.csv", "schema": "vehicle_assignments.schema.json", + "profile": "tabular-data-resource", "required": false }, { @@ -82,6 +91,7 @@ "description": "Assignment of train cars into ordered consists.", "path": "consist_vehicles.csv", "schema": "consist_vehicles.schema.json", + "profile": "tabular-data-resource", "required": false }, { @@ -90,6 +100,7 @@ "description": "Vehicles, including buses and train cars, with descriptive information.", "path": "vehicles.csv", "schema": "vehicles.schema.json", + "profile": "tabular-data-resource", "required": false }, { @@ -98,6 +109,7 @@ "description": "Personnel who operate vehicles.", "path": "operators.csv", "schema": "operators.schema.json", + "profile": "tabular-data-resource", "required": false } ]