On Mon, 2012-07-09 at 16:04 -0400, Frederic Thouin wrote:
> Well, there are a few different models used by long-distance buses
> agencies.
> * Origin-destination based: prices are generally driven by the
> first and last stop of the journey. This is similar to
> zone-based system, but where each zone is a different city.
This seems possible within the current zone-based system.
> * Class-based: some buses have different ticket categories, such
> as first class where seats can be converted to beds for longer
> journeys. This is different than discounts for
> students/seniors/etc because they could be combined (e.g.
> senior + first class fare).
Do you think that people would want information about what the
differences between fare classes are? Or is it enough to have short
textual descriptors like "first class"?
Also, given that senior fares are likely to be somewhat idiosyncratic or
non-normalized, is it possible to simply flatten the list of fares to
the cartesian product of fare class x discount? This would account
better for cases like Amtrak, where "the senior discount does not apply
to Business class, First class or sleeping accommodation."
> * Service-based: the bus that leaves in the morning could have a
> different price than another service later in the day. This
> is similar to a time-of-day fare system, but you could have
> simultaneous services with different classes available (i.e.
> one with sleeper seats and the other one without).
Would it work to represent this by a service_class field in trips.txt
and a service_class limitation in the fare rules?
> * Date-based: some companies have prices that vary based on the
> date of travel and how far ahead the ticket is purchased.
> Megabus is a good example: they have 1$ fares for some routes
> if the ticket is purchased weeks in advance.
Yeah, Megabus is a bit closer to airline pricing, which is so
complicated that Orbitz needs an army of Lisp hackers just to find your
fare.
Fortunately, Megabus fares (at least in the US) can't be combined with
other fares. In this case, the right approach might be to encode
min/max fares in the GTFS, and, optionally, define an API for current
fares.
Whether Megabus or anyone else would publish to that API is kind of an
open question. I guess we should just leave that part of the spec open
until we have a producer.