-
Notifications
You must be signed in to change notification settings - Fork 186
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clarify intended use for timepoint in stop_times.txt #474
Conversation
What's your interpretation of this propose change with respect to existing feeds that use a mix of timepoint specified and timepoint empty values (aka sample 2 above)? Do you consider this a backwards-compatible change? |
@bdferris-v2 since we are working with WARNINGS, I consider this change backwards-compatible. My initial intention was to consider that sample 2 would not trigger any WARNING. But now that I think more about it, it creates a conflict: if the field is Recommended and can only be populated with values I see two possible resolutions:
For what it's worth, we interpreted the current spec for the Canonical GTFS Schedule Validator as follows (which is along the lines of resolution 2):
We are happy to change this logic to a better one. Thoughts? |
On the Mobility Database:
Given how infrequent partially specified timepoint values are, I tend to think resolution 2 is the best, and I've added this statement:
|
Coming back to look at this, I ultimately don't have much issue with either of your two proposed resolutions. I have a slight preference for Resolution 1 (recommended if times are provided), but I could see the argument for Resolution 2 as it's more straightforward. |
I believe we've covered enough ground for this issue, I'll go ahead and open a vote. This PR has been open for at least 7 days, as per the Spec Amendment Process, I am opening a vote to clarify what "empty" means for timepoint, because it is interpreted in unintended ways. Overview of this change Here are the main cases with partially specified timepoint values and the clarification addressed by this PR:
You can find previous discussions on the topic in the issue #61. |
I am definitely in support of clarifying these recommendations around timepoints and am prepared to vote +1, but I do have one concern which would require modifying the PR—I apologize for coming to the conversation only after a vote has already been called... It doesn't make sense to recommend timepoints for flexible stop_times, i.e., stop times with no
|
Ah, thank you for bringing flexible stop_times @westontrillium!
With:
With this, datasets with (1) Thoughts? |
Except, doesn't "All records with defined arrival or departure times should have timepoint values populated" conflict with "...datasets with...no timepoint whatsoever won't trigger a WARNING"? |
Sorry, I meant datasets with no times or timepoint whatsoever (flex). Edited the comment. |
OK yes, I think that your proposed change works. |
Okay, given that no one voted yet and that @westontrillium brought a good argument for resolution 1 rather than 2 as described here, I am canceling the first vote and will re-open it with the other proposed change. |
And here we go again! As per the Spec Amendment Process, I am opening a vote to clarify what "empty" means for timepoint, because it is interpreted in unintended ways. Overview of this change This PR essentially changes two things:
This change affects the following type of datasets:
If this PR gets merged, we will make a modification of the canonical validator, as its logic is currently to give a WARNINGS in all cases of |
+1 from National RTAP and our rural/tribal partners. Empty timepoints are replaced with zero (as interpolated or estimated times) |
+1 from Trillium |
+1 from Google |
What is the reason from reverting recommended to optional? |
@skinkie timepoint goes from recommended at all times via the Recommended Presence condition to recommended if departure/arrival_time is provided via a statement in the description. There will still be the validator WARNING, but we will adapt its logic so it depends on the presence of times. |
The voting period ended on 2024-07-31 at 23:59:59 UTC. With 3 votes in favor and no votes against, the vote passes. Thank you to everyone who participated! |
This clarification has been incorporated into the Canonical GTFS Validator V6.0.0. Please refer to the release page: https://github.com/MobilityData/gtfs-validator/releases/tag/v6.0.0. |
Problem
Related issue: #61
In stop_times.timepoint (ref), the spec says:
The meaning of "empty" here is interpreted in different ways:
Sample 1 from Greater Glens Falls Transit where
timepoint=""
means times are exact:Sample 2 from Squaxin Island Transit where
timepoint=""
is used when no times are provided:Solution proposed
A spec amendment to clarify that empty, in this case, means no timepoint values are provided for any record in
stop_times.txt
, and if provided, all records that have times associated should have timepoint values of0
or1
.Historical context (provided by @barbeau here)
Originally, prior to the timepoint field, GTFS spec said you should only provide arrival and departure times for
stop_times.txt
records that are timepoints. So, if stops 1 and 4 were timepoints, but 2 and 3 were not, you'd have a valid GTFS that looks like this:However, producers realized that for multiple consumers to show consistent scheduled arrival and departure times at each stop (i.e., so consumers didn't interpolate them and come up with their own values), they would need to share arrival/departure times for each stop in the trip. A large number of GTFS producers started doing the following, even though technically it was against the GTFS spec:
Now, to consumers, all the stops looked like timepoints, even though that wasn't the producer's intent.
The
timepoint
field was added to give producers a legitimate way to share times for each stop in the trip, while still correctly indicating which stops are timepoints.So if producers want to provide times for every stop, they shouldn't be doing the above, and instead should provide the
timepoint
field:This means as of today, IMHO, there are two valid ways to share arrival and departure times in GTFS. The first is the original GTFS spec without the timepoint field, where times are omitted for stops that are not timepoints:
Or, if they want to provide times for every stop, they should provide timepoint values for the entire stop-times.txt.