GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2026-01-24T01:18:09Z,
for the dataset file:///shared/sankobus-sankobus.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Agencies included


Feed Info


Publisher Name:
九州産交バス
Publisher URL:
https://www.sankobus.jp/
Feed Email:
N/A
Feed Language:
Japanese
Feed Start Date:
2025-07-01
Feed End Date:
2025-11-16

Files included


  1. agency.txt
  2. agency_jp.txt
  3. calendar.txt
  4. calendar_dates.txt
  5. fare_attributes.txt
  6. fare_rules.txt
  7. feed_info.txt
  8. office_jp.txt
  9. routes.txt
  10. routes_jp.txt
  11. stop_times.txt
  12. stops.txt
  13. translations.txt
  14. trips.txt

Counts


  • Agencies: 1
  • Blocks: 0
  • Routes: 485
  • Shapes: 0
  • Stops: 4623
  • Trips: 14793

Specification Compliance report

26172 notices reported (3 errors, 26126 warnings, 43 infos)

Notice Code Severity Total
missing_required_column ERROR 3

missing_required_column

A required column is missing in the input file.

You can see more about this notice here.

filename (?) The name of the faulty file. fieldName (?) The name of the missing column.
"translations.txt" "field_name"
"translations.txt" "language"
"translations.txt" "table_name"
duplicate_route_name WARNING 2

duplicate_route_name

Two distinct routes have either the same route_short_name, the same route_long_name, or the same combination of route_short_name and route_long_name.

All routes of the same route_type with the same agency_id should have unique combinations of route_short_name and route_long_name.

Note that there may be valid cases where routes have the same short and long name, e.g., if they serve different areas. However, different directions must be modeled as the same route.

Example of bad data:

route_id route_short_name route_long_name
route1 U1 Southern
route2 U1 Southern

You can see more about this notice here.

csvRowNumber1 (?) The row number of the first occurrence. routeId1 (?) The id of the the first occurrence. csvRowNumber2 (?) The row number of the other occurrence. routeId2 (?) The id of the the other occurrence. routeShortName (?) Common `routes.route_short_name`. routeLongName (?) Common `routes.route_long_name`. routeTypeValue (?) Common `routes.route_type`. agencyId (?) Common `routes.agency_id`.
349 "120_120730_1_20250701" 351 "120_120740_1_20250701" "" "茂道漁港→→招川内" 3 "9330001006723"
350 "120_120731_1_20250701" 352 "120_120741_1_20250701" "" "招川内→→茂道漁港" 3 "9330001006723"
expired_calendar WARNING 146

expired_calendar

Dataset should not contain date ranges for services that have already expired.

This warning takes into account the calendar_dates.txt file as well as the calendar.txt file.

You can see more about this notice here.

Only the first 50 of 146 affected records are displayed below.

csvRowNumber (?) The row of the faulty record. serviceId (?) The service id of the faulty record.
2 "1220_122001_20250701"
3 "1220_122002_20250701"
4 "1220_122003_20250701"
5 "1220_122004_20250701"
6 "1220_122005_20250701"
7 "1220_122006_20250701"
8 "1220_122007_20250701"
9 "1271_127101_20250701"
10 "1271_127102_20250701"
11 "1271_127103_20250701"
12 "1271_127104_20250701"
13 "1271_127105_20250701"
14 "1271_127106_20250701"
15 "1271_127107_20250701"
16 "1272_127201_20250701"
17 "1272_127202_20250701"
18 "1272_127203_20250701"
19 "1272_127204_20250701"
20 "1272_127205_20250701"
21 "1272_127206_20250701"
22 "1272_127207_20250701"
23 "1280_128001_20250701"
24 "1280_128002_20250701"
25 "1280_128003_20250701"
26 "1280_128004_20250701"
27 "1280_128005_20250701"
28 "1280_128006_20250701"
29 "1280_128007_20250701"
30 "1282_128201_20250701"
31 "1282_128202_20250701"
32 "1282_128203_20250701"
33 "1282_128204_20250701"
34 "1282_128205_20250701"
35 "1282_128206_20250701"
36 "1282_128207_20250701"
37 "1285_128501_20250701"
38 "1285_128502_20250701"
39 "1285_128503_20250701"
40 "1285_128504_20250701"
41 "1285_128505_20250701"
42 "1285_128506_20250701"
43 "1285_128507_20250701"
44 "1999_199901_20250701"
45 "1999_199902_20250701"
46 "1999_199903_20250701"
47 "1999_199904_20250701"
48 "1999_199905_20250701"
49 "1999_199906_20250701"
50 "1999_199907_20250701"
51 "7210_721001_20250701"
feed_expiration_date7_days WARNING 1

feed_expiration_date7_days

Dataset should be valid for at least the next 7 days.

The dataset expiration date defined in feed_info.txt is in seven days or less. At any time, the published GTFS dataset should be valid for at least the next 7 days.

You can see more about this notice here.

csvRowNumber (?) The row number of the faulty record. currentDate (?) Current date (YYYYMMDD format). feedEndDate (?) Feed end date (YYYYMMDD format). suggestedExpirationDate (?) Suggested expiration date (YYYYMMDD format).
2 "20260124" "20251116" "20260131"
leading_or_trailing_whitespaces WARNING 3982

leading_or_trailing_whitespaces

The value in CSV file has leading or trailing whitespaces.

This notice is emitted for values protected with double quotes since whitespaces for non-protected values are trimmed automatically by CSV parser.

The validator strips whitespaces from protected values. We do not see any use case when such a whitespace may be needed. On the other hand, some real-world feeds use trailing whitespaces for some values and omit them for the others. This is causing the largest problem when a primary key and a foreign key differ just by a whitespace: it is clear that they are intended to be the same, that is why we always strip whitespaces.

You can see more about this notice here.

Only the first 50 of 3982 affected records are displayed below.

filename (?) The name of the faulty file. csvRowNumber (?) The row of the faulty record. fieldName (?) Faulty record's field name. fieldValue (?) Faulty value.
"stop_times.txt" 565095 "stop_headsign" " 田崎橋"
"stop_times.txt" 565096 "stop_headsign" " 田崎橋"
"stop_times.txt" 565105 "stop_headsign" " 田崎橋"
"stop_times.txt" 565106 "stop_headsign" " 田崎橋"
"stop_times.txt" 565115 "stop_headsign" " 田崎橋"
"stop_times.txt" 565116 "stop_headsign" " 田崎橋"
"stop_times.txt" 565125 "stop_headsign" " 田崎橋"
"stop_times.txt" 565126 "stop_headsign" " 田崎橋"
"stop_times.txt" 565135 "stop_headsign" " 田崎橋"
"stop_times.txt" 565136 "stop_headsign" " 田崎橋"
"stop_times.txt" 565145 "stop_headsign" " 田崎橋"
"stop_times.txt" 565146 "stop_headsign" " 田崎橋"
"stop_times.txt" 565155 "stop_headsign" " 田崎橋"
"stop_times.txt" 565156 "stop_headsign" " 田崎橋"
"stop_times.txt" 565165 "stop_headsign" " 田崎橋"
"stop_times.txt" 565166 "stop_headsign" " 田崎橋"
"stop_times.txt" 565175 "stop_headsign" " 田崎橋"
"stop_times.txt" 565176 "stop_headsign" " 田崎橋"
"stop_times.txt" 565185 "stop_headsign" " 田崎橋"
"stop_times.txt" 565186 "stop_headsign" " 田崎橋"
"stop_times.txt" 565188 "stop_headsign" " 市役所前"
"stop_times.txt" 565189 "stop_headsign" " 市役所前"
"stop_times.txt" 565190 "stop_headsign" " 市役所前"
"stop_times.txt" 565192 "stop_headsign" " 市役所前"
"stop_times.txt" 565193 "stop_headsign" " 市役所前"
"stop_times.txt" 565194 "stop_headsign" " 市役所前"
"stop_times.txt" 565196 "stop_headsign" " 市役所前"
"stop_times.txt" 565197 "stop_headsign" " 市役所前"
"stop_times.txt" 565198 "stop_headsign" " 市役所前"
"stop_times.txt" 565200 "stop_headsign" " 市役所前"
"stop_times.txt" 565201 "stop_headsign" " 市役所前"
"stop_times.txt" 565202 "stop_headsign" " 市役所前"
"stop_times.txt" 565204 "stop_headsign" " 市役所前"
"stop_times.txt" 565205 "stop_headsign" " 市役所前"
"stop_times.txt" 565206 "stop_headsign" " 市役所前"
"stop_times.txt" 565208 "stop_headsign" " 市役所前"
"stop_times.txt" 565209 "stop_headsign" " 市役所前"
"stop_times.txt" 565210 "stop_headsign" " 市役所前"
"stop_times.txt" 565212 "stop_headsign" " 市役所前"
"stop_times.txt" 565213 "stop_headsign" " 市役所前"
"stop_times.txt" 565214 "stop_headsign" " 市役所前"
"stop_times.txt" 565216 "stop_headsign" " 市役所前"
"stop_times.txt" 565217 "stop_headsign" " 市役所前"
"stop_times.txt" 565218 "stop_headsign" " 市役所前"
"stop_times.txt" 565220 "stop_headsign" " 市役所前"
"stop_times.txt" 565221 "stop_headsign" " 市役所前"
"stop_times.txt" 565222 "stop_headsign" " 市役所前"
"stop_times.txt" 565224 "stop_headsign" " 市役所前"
"stop_times.txt" 565225 "stop_headsign" " 市役所前"
"stop_times.txt" 565226 "stop_headsign" " 市役所前"
missing_feed_contact_email_and_url WARNING 1

missing_feed_contact_email_and_url

Best Practices for feed_info.txt suggest providing at least one of feed_contact_email and feed_contact_url.

You can see more about this notice here.

csvRowNumber (?) The row number of the validated record.
2
missing_recommended_field WARNING 20172

missing_recommended_field

A recommended field is missing.

The given field has no value in some input row, even though values are recommended.

You can see more about this notice here.

Only the first 50 of 20172 affected records are displayed below.

filename (?) The name of the faulty file. csvRowNumber (?) The row of the faulty record. fieldName (?) The name of the missing field.
"fare_attributes.txt" 2 "agency_id"
"fare_attributes.txt" 3 "agency_id"
"fare_attributes.txt" 4 "agency_id"
"fare_attributes.txt" 5 "agency_id"
"fare_attributes.txt" 6 "agency_id"
"fare_attributes.txt" 7 "agency_id"
"fare_attributes.txt" 8 "agency_id"
"fare_attributes.txt" 9 "agency_id"
"fare_attributes.txt" 10 "agency_id"
"fare_attributes.txt" 11 "agency_id"
"fare_attributes.txt" 12 "agency_id"
"fare_attributes.txt" 13 "agency_id"
"fare_attributes.txt" 14 "agency_id"
"fare_attributes.txt" 15 "agency_id"
"fare_attributes.txt" 16 "agency_id"
"fare_attributes.txt" 17 "agency_id"
"fare_attributes.txt" 18 "agency_id"
"fare_attributes.txt" 19 "agency_id"
"fare_attributes.txt" 20 "agency_id"
"fare_attributes.txt" 21 "agency_id"
"fare_attributes.txt" 22 "agency_id"
"fare_attributes.txt" 23 "agency_id"
"fare_attributes.txt" 24 "agency_id"
"fare_attributes.txt" 25 "agency_id"
"fare_attributes.txt" 26 "agency_id"
"fare_attributes.txt" 27 "agency_id"
"fare_attributes.txt" 28 "agency_id"
"fare_attributes.txt" 29 "agency_id"
"fare_attributes.txt" 30 "agency_id"
"fare_attributes.txt" 31 "agency_id"
"fare_attributes.txt" 32 "agency_id"
"fare_attributes.txt" 33 "agency_id"
"fare_attributes.txt" 34 "agency_id"
"fare_attributes.txt" 35 "agency_id"
"fare_attributes.txt" 36 "agency_id"
"fare_attributes.txt" 37 "agency_id"
"fare_attributes.txt" 38 "agency_id"
"fare_attributes.txt" 39 "agency_id"
"fare_attributes.txt" 40 "agency_id"
"fare_attributes.txt" 41 "agency_id"
"fare_attributes.txt" 42 "agency_id"
"fare_attributes.txt" 43 "agency_id"
"fare_attributes.txt" 44 "agency_id"
"fare_attributes.txt" 45 "agency_id"
"fare_attributes.txt" 46 "agency_id"
"fare_attributes.txt" 47 "agency_id"
"fare_attributes.txt" 48 "agency_id"
"fare_attributes.txt" 49 "agency_id"
"fare_attributes.txt" 50 "agency_id"
"fare_attributes.txt" 51 "agency_id"
mixed_case_recommended_field WARNING 1821

mixed_case_recommended_field

This field has customer-facing text and should use Mixed Case (should contain upper and lower case letters).

This field contains customer-facing text and should use Mixed Case (upper and lower case letters) to ensure good readability when displayed to riders. Avoid the use of abbreviations throughout the feed (e.g. St. for Street) unless a location is called by its abbreviated name (e.g. “JFK Airport”). Abbreviations may be problematic for accessibility by screen reader software and voice user interfaces.

Good examples:
Field Text Dataset
"Schwerin, Hauptbahnhof" Verkehrsverbund Berlin-Brandenburg
"Red Hook/Atlantic Basin" NYC Ferry
"Campo Grande Norte" Carris
Bad examples:
Field Text
"GALLERIA MALL"
"3427 GG 17"
"21 Clark Rd Est"

You can see more about this notice here.

Only the first 50 of 1821 affected records are displayed below.

filename (?) Name of the faulty file. fieldName (?) Name of the faulty field. fieldValue (?) Faulty value. csvRowNumber (?) The row number of the faulty record.
"routes.txt" "route_long_name" "L6-3/T2-1:小島→西高校~健軍→木山" 2
"routes.txt" "route_long_name" "L6-3/T2-1:木山→健軍~西高→小島" 3
"routes.txt" "route_long_name" "L6-3:桜町バスターミナル→健軍~交通広場→木山" 4
"routes.txt" "route_long_name" "L6-3:木山→交通広場~健軍→桜町バスターミナル" 5
"routes.txt" "route_long_name" "K4-3:桜町バスターミナル→自衛隊~佐土原→木山" 6
"routes.txt" "route_long_name" "K4-3:木山→佐土原~自衛隊→桜町バスターミナル" 7
"routes.txt" "route_long_name" "K3-3/T1-1:小島→上高橋~県庁→木山" 8
"routes.txt" "route_long_name" "K3-3/T1-1:木山→県庁~上高橋→小島" 9
"routes.txt" "route_long_name" "K3-1/T1-1:小島→上高橋~県庁→沼山津" 10
"routes.txt" "route_long_name" "K3-3/T3-0:西部車庫→県庁→木山" 11
"routes.txt" "route_long_name" "K3-3/T3-0:木山→県庁→西部車庫" 12
"routes.txt" "route_long_name" "K3-1/T3-0:西部車庫→県庁→沼山津" 13
"routes.txt" "route_long_name" "K3-3/S4-3:木山→県庁~野口→川口" 14
"routes.txt" "route_long_name" "K3-1/S4-3:川口→野口~県庁→沼山津" 15
"routes.txt" "route_long_name" "K3-1/S4-3:沼山津→県庁~野口→川口" 16
"routes.txt" "route_long_name" "K3-3/T1-2:五丁→上高橋~県庁→木山" 17
"routes.txt" "route_long_name" "K3-3/T1-2:木山→県庁~上高橋→五丁" 18
"routes.txt" "route_long_name" "K3-1/T1-2:五丁→上高橋~県庁→沼山津" 19
"routes.txt" "route_long_name" "K3-1/S4-2:五丁→野口~県庁→沼山津" 20
"routes.txt" "route_long_name" "K3-1/S4-2:沼山津→県庁~野口→五丁" 21
"routes.txt" "route_long_name" "K3-2/S4-1:アクアドーム→県庁~市民病院→沼山津" 22
"routes.txt" "route_long_name" "K3-2/S4-1:沼山津→市民病院~県庁→アクアドーム" 23
"routes.txt" "route_long_name" "K1-1/T2-1:木山産交→秋津西高→小島" 24
"routes.txt" "route_long_name" "K1-1:桜町バスターミナル→秋津県庁→木山" 25
"routes.txt" "route_long_name" "K1-1:木山→秋津県庁→桜町バスターミナル" 26
"routes.txt" "route_long_name" "K3-1/T4-1:小島産交→春日校前~県庁前→沼山津" 27
"routes.txt" "route_long_name" "K4-2:熊本駅→県庁~テクノ→阿蘇くまもと空港" 28
"routes.txt" "route_long_name" "K4-2:阿蘇くまもと空港→テクノ~県庁→熊本駅" 29
"routes.txt" "route_long_name" "K4-1:桜町バスターミナル→県庁前~花立三丁目→沼山津" 30
"routes.txt" "route_long_name" "K4-1:沼山津→花立三丁目~県庁前→桜町バスターミナル" 31
"routes.txt" "route_long_name" "L4-1/T4-0:西部車庫→春日校前~東区役所→沼山津" 32
"routes.txt" "route_long_name" "L4-1/T4-0:沼山津→東区役所~春日校前→西部車庫" 33
"routes.txt" "route_long_name" "L5-1:桜町バスターミナル→健軍~東無田→御船" 34
"routes.txt" "route_long_name" "L5-1:御船→東無田~健軍→桜町バスターミナル" 35
"routes.txt" "route_long_name" "F2-3/S4-3:川口→野口~子飼→戸島" 36
"routes.txt" "route_long_name" "F2-3/S4-3:戸島→子飼~野口→川口" 37
"routes.txt" "route_long_name" "F2-1/S4-3:川口→野口~子飼→小山団地" 38
"routes.txt" "route_long_name" "F2-1/S4-3:小山団地→子飼~野口→川口" 39
"routes.txt" "route_long_name" "F2-1/S4-2:五丁→野口~子飼→小山団地" 40
"routes.txt" "route_long_name" "F2-1/S4-2:小山団地→子飼~野口→五丁" 41
"routes.txt" "route_long_name" "F2-1/S4-1:アクアドーム→野口~子飼→小山団地" 42
"routes.txt" "route_long_name" "F2-1/S4-1:小山団地→子飼~野口→アクアドーム" 43
"routes.txt" "route_long_name" "G2-3:桜町バスターミナル→熊本整形~託麻原本通→戸島" 44
"routes.txt" "route_long_name" "G2-3:戸島→託麻原本通~熊本整形→桜町バスターミナル" 45
"routes.txt" "route_long_name" "G2-1:桜町バスターミナル→熊本整形~託麻原本通→小山団地" 46
"routes.txt" "route_long_name" "G2-1:小山団地→託麻原本通~熊本整形→桜町バスターミナル" 47
"routes.txt" "route_long_name" "G2-1/T3-0:西部車庫→熊本整形~託麻八反田→小山団地" 48
"routes.txt" "route_long_name" "G2-1/T3-0:小山団地→託麻原本通り~熊本整形→西部車庫" 49
"routes.txt" "route_long_name" "E3-5:桜町バスターミナル→子飼~三里木→大津産交" 50
"routes.txt" "route_long_name" "E3-5:桜町バスターミナル→子飼~三里木→吹田団地" 51
trip_coverage_not_active_for_next7_days WARNING 1

trip_coverage_not_active_for_next7_days

Trips data should be valid for at least the next seven days.

This notice is triggered if the date range where a significant number of trips are running ends in less than 7 days.

You can see more about this notice here.

currentDate (?) Current date (YYYYMMDD format). serviceWindowStartDate (?) The start date of the majority service window. serviceWindowEndDate (?) The end date of the majority service window.
"20260124" "20250701" "20251115"
platform_without_parent_station INFO 34

platform_without_parent_station

A platform has no parent_station field set.

This is different from location_without_parent_station since it is less severe.

You can see more about this notice here.

csvRowNumber (?) Row number of the faulty record. stopId (?) The id of the faulty record. stopName (?) The stop name of the faulty record.
5 "100002_3" "桜町バスターミナル"
6 "100002_4" "桜町バスターミナル"
7 "100002_5" "桜町バスターミナル"
8 "100002_6" "桜町バスターミナル"
9 "100002_9" "桜町バスターミナル"
10 "100002_14" "桜町バスターミナル"
11 "100002_15" "桜町バスターミナル"
12 "100002_16" "桜町バスターミナル"
13 "100002_20" "桜町バスターミナル"
14 "100002_21" "桜町バスターミナル"
15 "100002_24" "桜町バスターミナル"
16 "100002_25" "桜町バスターミナル"
17 "100002_27" "桜町バスターミナル"
21 "100004_1" "水道町"
22 "100004_2" "水道町"
23 "100004_3" "水道町"
24 "100004_4" "水道町"
25 "100004_5" "水道町"
26 "100004_6" "水道町"
111 "100339_1" "熊本駅前"
112 "100339_2" "熊本駅前"
113 "100339_3" "熊本駅前"
114 "100339_4" "熊本駅前"
115 "100339_5" "熊本駅前"
116 "100339_7" "熊本駅前"
117 "100339_8" "熊本駅前"
188 "100502_3" "上熊本駅前"
189 "100502_4" "上熊本駅前"
229 "100598_1" "水前寺駅通り"
230 "100598_2" "水前寺駅通り"
1602 "102112_1" "阿蘇くまもと空港"
1603 "102112_3" "阿蘇くまもと空港"
1604 "102112_4" "阿蘇くまもと空港"
1605 "102112_5" "阿蘇くまもと空港"
unknown_column INFO 6

unknown_column

A column name is unknown.

You can see more about this notice here.

filename (?) The name of the faulty file. fieldName (?) The name of the unknown column. index (?) The index of the faulty column.
"routes.txt" "jp_parent_route_id" 10
"trips.txt" "jp_trip_desc" 9
"trips.txt" "jp_trip_desc_symbol" 10
"trips.txt" "jp_office_id" 11
"translations.txt" "trans_id" 1
"translations.txt" "lang" 2
unknown_file INFO 3

unknown_file

A file is unknown.

You can see more about this notice here.

filename (?) The name of the unknown file.
"routes_jp.txt"
"agency_jp.txt"
"office_jp.txt"