Overview

A JourneyPart is a subsection of a ServiceJourney that differs from the rest of the journey in at least one relevant characteristic — such as a different train number, operator, or on-board facilities. The ServiceJourney as a whole still runs from start to finish; JourneyParts subdivide it into meaningful segments for passenger information or operational purposes.

When to use: When a ServiceJourney changes its train number, operator, or on-board service (e.g. bistro available only on part of the route).

graph LR
  Bern -->|"IC 703 — bistro open"| Zürich
  Zürich -->|"IC 703 — no bistro"| StGallen["St. Gallen"]
  Bern -->|"ServiceJourney IC 703"| StGallen

Mapping between HRDF and NeTEx

HRDF NeTEx RG1 NeTEx RG2 Use Case
[attribut] per Teilstrecke JourneyPart JourneyPart Change of train number, operator, or on-board facilities

Use Cases in the Swiss Profile

1. Change of on-board facilities (PurposeOfJourneyPartition:FacilityChange)

When to use: When a service (e.g. bistro, wifi) is only available on part of the route.

In the example IC 703 Bern – St. Gallen, the bistro is open between Bern and Zürich (05:29–06:28) and again between Zürich and Wil SG (06:57–07:52), but not on the full journey.

<ServiceJourney id="ch:1:ServiceJourney:703" version="1">
  <!-- ... passingTimes ... -->
  <parts>
    <JourneyPart id="ch:1:JourneyPart:703-bistro-1" version="1">
      <FromStopPointRef ref="ch:1:sloid:7000:4:7" version="1"/>
      <ToStopPointRef ref="ch:1:sloid:218:7" version="1"/>
      <StartTime>05:29:00</StartTime>
      <StartTimeDayOffset>0</StartTimeDayOffset>
      <EndTime>06:28:00</EndTime>
      <EndTimeDayOffset>0</EndTimeDayOffset>
      <PurposeOfJourneyPartitionRef ref="ch:1:PurposeOfJourneyPartition:FacilityChange" version="1"/>
      <facilities>
        <ServiceFacilitySetRef ref="ch:1:ServiceFacilitySet:bistro-open" version="1"/>
      </facilities>
    </JourneyPart>
    <JourneyPart id="ch:1:JourneyPart:703-bistro-2" version="1">
      <FromStopPointRef ref="ch:1:sloid:3000:501:33" version="1"/>
      <ToStopPointRef ref="ch:1:sloid:6302:1" version="1"/>
      <StartTime>06:57:00</StartTime>
      <StartTimeDayOffset>0</StartTimeDayOffset>
      <EndTime>07:52:00</EndTime>
      <EndTimeDayOffset>0</EndTimeDayOffset>
      <PurposeOfJourneyPartitionRef ref="ch:1:PurposeOfJourneyPartition:FacilityChange" version="1"/>
      <facilities>
        <ServiceFacilitySetRef ref="ch:1:ServiceFacilitySet:bistro-open" version="1"/>
      </facilities>
    </JourneyPart>
  </parts>
</ServiceJourney>

2. Change of train number — NOT USED in the Swiss profile

Status: This use case is intentionally not implemented via JourneyPart in the Swiss profile.

Although passenger displays may show a train number change as if it were a single continuous journey, in the underlying data this is always modeled as two separate ServiceJourneys linked via a ServiceJourneyInterchange (suppressed in passenger-facing presentation). See uc02 Joining and splitting. When to use: When a train operates under different train numbers on different sections of the same ServiceJourney.

3. Splitting and Joining

JourneyPart together with CoupledJourneycould be used for a different modeling of joining and splitting (see relevant use case. However, we currently won’t do that.

4. Integrating data from different sources to have something to load into a trip planner in international travel

A ServiceJourney may exist in the Swiss system only up to the first commerical stop abroad and completly but with less information in the Austrian system. To make sure that real-time data is easily applied the aggregated NeTEx timetable may still wish to keep the original delivered ServiceJourney. The relevant parts are then also modeled with JourneyPart and CoupledJourney. We won’t do this either. But we study this for some international projects we have on aggregation of timetables.

Key Elements

Element Usage Description
FromStopPointRef mandatory ScheduledStopPoint where the part begins
ToStopPointRef mandatory ScheduledStopPoint where the part ends
StartTime / EndTime mandatory Time bounds of the part
PurposeOfJourneyPartitionRef expected Reason for the partition (e.g. FacilityChange, TrainNumberChange)
TrainNumberRef optional Train number valid for this part
facilities optional ServiceFacilitySet valid for this part only
JourneyPartCoupleRef optional Links to a coupled section (Flügelzug) — not used in Swiss profile

Usage Notes

  • JourneyParts are nested directly within the ServiceJourney under <parts>.
  • A JourneyPart always references the same ScheduledStopPoints as the parent ServiceJourney — it cannot introduce new stops.
  • ServiceFacilitySet defined on a JourneyPart overrides the one on the ServiceJourney for that section.
  • JourneyPartCouple is not used in the Swiss profile for splitting and joining — use ServiceJourneyInterchange instead. See uc02 Joining and splitting.
  • JourneyPart may become relevant for train composition (Wagenreihung) data in a future version of the profile. See uc15 Formations.