Making it simpler to plan complex cross-country rail trips in Europe
In the code we need to make the distinction between the abstract way of getting somewhere and the specific way of actually getting there.
Abstract | Specific |
---|---|
city Verona |
stopover overnight stay in Verona on 2024-10-14 |
- | station Verona Puerta Nuova |
leg from Verona to Munich |
connection the EC87 running from Munich Hbf to Verona Puerta Nuova on 2024-10-14 at 13:34 |
route [Berlin, Munich, Verona, Florence, Livorno, Bastia] |
journey [ICE505 on 2024-10-14, EC87 on 2024-10-14, ...] |
- origin The city the user starts from, e.g. Berlin
- destination The city the user wants to get to, e.g. Bastia
- A route describes one possibility to get from origin to destination. It lists, in order, the cities (e.g. [Berlin, Munich, Verona, Florence, Livorno, Bastia]) in which the user has to switch transportations. There usually exist multiple possible routes to get from origin to destination. A route can also be expressed in natural language, e.g. from Berlin to Korsika via Verona and Livorno.
- A leg is formed by taking two subsequent cities in a route. A leg has a start city and an end city, e.g. the leg from Munich to Verona. A leg is only valid if there exists at least one direct connection from start city to end city.
- A connection is a specific train/ferry/something that directly fulfills a leg. A connection runs from a start station to an end station. The start/end stations must be located in the start/end cities of the corresponding leg. A connection is always tied to a specific date and time, e.g. the EC87 running from Munich Hbf to Verona Puerta Nuova on 2024-10-14 at 13:34. There are usually many possible alternative connections that can fulfill a leg.
- A journey is the specific version of a route. It lists, in order, all the necessary connections to fulfill the route. There are usually many possible journeys that can fulfill a route.
- A stopover corresponds to the abstract city in which the user has to switch transportation. It is tied to a date/time and can be of different types (e.g. simple switching of trains, overnight stay).