Dev:categoryUsage: Difference between revisions

From railML 2 Wiki
Jump to navigation Jump to search
[checked revision][checked revision]
(Osobní vlak (Czechia) and Lokaltog (Norway) added)
m (Quotes adapted)
Line 32: Line 32:
It is up to the reading software how it deals with such attributes missing. It can opt for a default case, or ask the user, or force the usage of these attributes e. g. by providing an error message.
It is up to the reading software how it deals with such attributes missing. It can opt for a default case, or ask the user, or force the usage of these attributes e. g. by providing an error message.


The attribute {{Attr|categoryRef}} escpecially of {{TT:Tag|trainPart}} references to train categories which are commonly known as """products""" in practice. They are normally used for publishing. It has to be noted that a train can consist of more than one product at the same time because different train parts may reference different products (see also [[Dev:Train_Coupling_And_Sharing|Train coupling and sharing]]). This really happens in practice e. g. in Germany between Erfurt and Plaue (Thüringen) where trains of Erfurter Bahn (product ""EB"") and of Süd-Thüringen-Bahn (product ""STB"") often run coupled, or at ÖBB where sometimes trains with the product name ""RailJet"" have additional carriages for peak periods placed as ""IC"".
The attribute {{Attr|categoryRef}} escpecially of {{TT:Tag|trainPart}} references to train categories which are commonly known as '''products''' in practice. They are normally used for publishing. It has to be noted that a train can consist of more than one product at the same time because different train parts may reference different products (see also [[Dev:Train_Coupling_And_Sharing|Train coupling and sharing]]). This really happens in practice e. g. in Germany between Erfurt and Plaue (Thüringen) where trains of Erfurter Bahn (product ''EB'') and of Süd-Thüringen-Bahn (product ''STB'') often run coupled, or at ÖBB where sometimes trains with the product name ''RailJet'' have additional carriages for peak periods placed as ''IC''.


In contrary to products there is the operational """train category""". (In UK this is part of the head code of a train at least in a certain sense.) It is something rather internal, not to be published. Also, a train can have only one operational category at the same time. For this kind of train categories, there is the attribute {{Attr|categoryRef}} at the element {{TT:Tag|train}} in {{rml}}. It is sub-placed below {{TT:Tag|trainPartSequence}} because the operational category may change between different sections of the train’s route. The many long-distance trains which run empty before and after their published route are examples from practice for such changes. In Germany, this is widely common between Berlin’s stations Grunewald, Lehrter Bahnhof (main station), and Rummelsburg (stabling station):
In contrary to products there is the operational '''train category'''. (In UK this is part of the head code of a train at least in a certain sense.) It is something rather internal, not to be published. Also, a train can have only one operational category at the same time. For this kind of train categories, there is the attribute {{Attr|categoryRef}} at the element {{TT:Tag|train}} in {{rml}}. It is sub-placed below {{TT:Tag|trainPartSequence}} because the operational category may change between different sections of the train’s route. The many long-distance trains which run empty before and after their published route are examples from practice for such changes. In Germany, this is widely common between Berlin’s stations Grunewald, Lehrter Bahnhof (main station), and Rummelsburg (stabling station):


{{Deu|Es bleibt hier dem lesenden Programm überlassen, wie es damit umgeht, wenn diese Attribute nicht angegeben sind: Es kann einen Standard-Fall annehmen oder beim Anwender nachfragen oder diese Attribute zwingend erfordern, indem es eine Fehlermeldung ausgibt.}}
{{Deu|Es bleibt hier dem lesenden Programm überlassen, wie es damit umgeht, wenn diese Attribute nicht angegeben sind: Es kann einen Standard-Fall annehmen oder beim Anwender nachfragen oder diese Attribute zwingend erfordern, indem es eine Fehlermeldung ausgibt.}}


{{Deu|Das bei {{TT:Tag|trainPart}} angegebene Attribut {{Attr|categoryRef}} verweist auf Zugarten (categories), die in der Praxis üblicherweise als """Produkte""" bezeichnet und auch veröffentlicht werden. Hierbei ist zu beachten, dass ein Zug gleichzeitig mehrere Produkte haben kann, da verschiedene Zugteile unterschiedliche Produkte haben können (s. a. [[Dev:Train_Coupling_And_Sharing|Train coupling and sharing]]). Dies kommt durchaus auch praktisch vor, z. B. die zwischen Erfurt und Plaue (Thüringen) vereinigt verkehrenden Züge der Erfurter Bahn (Produktbezeichnung ""EB"") und Süd-Thüringen-Bahn (Produktbezeichnung ""STB"") oder die bei der ÖBB gelegentlich an Züge mit der Produktbezeichnung ""RailJet"" angehangenen Verstärkungswagen, die jedoch als ""IC"" vermarktet werden.}}
{{Deu|Das bei {{TT:Tag|trainPart}} angegebene Attribut {{Attr|categoryRef}} verweist auf Zugarten (categories), die in der Praxis üblicherweise als '''Produkte''' bezeichnet und auch veröffentlicht werden. Hierbei ist zu beachten, dass ein Zug gleichzeitig mehrere Produkte haben kann, da verschiedene Zugteile unterschiedliche Produkte haben können (s. a. [[Dev:Train_Coupling_And_Sharing|Train coupling and sharing]]). Dies kommt durchaus auch praktisch vor, z. B. die zwischen Erfurt und Plaue (Thüringen) vereinigt verkehrenden Züge der Erfurter Bahn (Produktbezeichnung ''EB'') und Süd-Thüringen-Bahn (Produktbezeichnung ''STB'') oder die bei der ÖBB gelegentlich an Züge mit der Produktbezeichnung ''RailJet'' angehangenen Verstärkungswagen, die jedoch als ''IC'' vermarktet werden.}}


{{Deu|Dem gegenüber steht die traditionelle """Zuggattung""" als etwas eher Betriebsinternes, wobei ein Zug in einem Streckenabschnitt nur eine Zuggattung haben kann. Für diese Zuggattung gibt es in {{rml}} das Attribut {{Attr|categoryRef}} im Element {{TT:Tag|train}}, und zwar unter {{TT:Tag|trainPartSequence}}, da auch die betriebliche Gattung innerhalb des Laufwegs eines Zuges wechseln kann. Praktische Beispiele für solche Wechsel wären die vielen Fernreisezüge, die vor und nach ihrem eigentlichen (veröffentlichten) Zuglauf als Leerreisezüge zu- und abgeführt werden, wie das z. B. zwischen Berlin-Grunewald, Lehrter Bahnhof und Rummelsburg üblich ist: }}
{{Deu|Dem gegenüber steht die traditionelle '''Zuggattung''' als etwas eher Betriebsinternes, wobei ein Zug in einem Streckenabschnitt nur eine Zuggattung haben kann. Für diese Zuggattung gibt es in {{rml}} das Attribut {{Attr|categoryRef}} im Element {{TT:Tag|train}}, und zwar unter {{TT:Tag|trainPartSequence}}, da auch die betriebliche Gattung innerhalb des Laufwegs eines Zuges wechseln kann. Praktische Beispiele für solche Wechsel wären die vielen Fernreisezüge, die vor und nach ihrem eigentlichen (veröffentlichten) Zuglauf als Leerreisezüge zu- und abgeführt werden, wie das z. B. zwischen Berlin-Grunewald, Lehrter Bahnhof und Rummelsburg üblich ist: }}
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
       <train id="tro_1" type="operational" trainNumber="141" scope="primary">
       <train id="tro_1" type="operational" trainNumber="141" scope="primary">
Line 54: Line 54:
The attribute {{Attr|categoryRef}} at {{TT:Tag|train}} for the operational category is normally used at operational trains only (elements {{TT:Tag|train}} with occurrence {{Attr|type}}="operational").
The attribute {{Attr|categoryRef}} at {{TT:Tag|train}} for the operational category is normally used at operational trains only (elements {{TT:Tag|train}} with occurrence {{Attr|type}}="operational").


Currently there is no explicit distinction between ""product"" and ""operational category"" in {{rml}} – an element {{TT:Tag|category}} can represent an operational category (i. e. referenced by a {{TT:Tag|train}}) as well as a product (i. e. referenced by a {{TT:Tag|trainPart}}).
Currently there is no explicit distinction between ''product'' and ''operational category'' in {{rml}} – an element {{TT:Tag|category}} can represent an operational category (i. e. referenced by a {{TT:Tag|train}}) as well as a product (i. e. referenced by a {{TT:Tag|trainPart}}).


Here again it is up to the reading software how to deal with potential contradictions of this contextual redundancy in case a train (part) is shown e. g. as passenger hauling by its {{TT:Tag|trainPart}}.{{Attr|categoryRef}} and at the same time as non passenger hauling by its {{TT:Tag|train}}.{{Attr|categoryRef}}. It is recommended to “consult” the product for traffic properties (such as ""passenger hauling"") and to “consult” the operational category for operational properties (which may be for instance {{Attr|categoryPriority}}).
Here again it is up to the reading software how to deal with potential contradictions of this contextual redundancy in case a train (part) is shown e. g. as passenger hauling by its {{TT:Tag|trainPart}}.{{Attr|categoryRef}} and at the same time as non passenger hauling by its {{TT:Tag|train}}.{{Attr|categoryRef}}. It is recommended to “consult” the product for traffic properties (such as ''passenger hauling'') and to “consult” the operational category for operational properties (which may be for instance {{Attr|categoryPriority}}).


{{Deu| 1 = Das Attribut {{Attr|categoryRef}} unter {{TT:Tag|train}} für die betriebliche Zuggattung wird üblicher Weise nur bei betrieblichen Zügen (Elemente {{TT:Tag|train}} mit Ausprägung {{Attr|type}}="operational") angegeben.}}
{{Deu| 1 = Das Attribut {{Attr|categoryRef}} unter {{TT:Tag|train}} für die betriebliche Zuggattung wird üblicher Weise nur bei betrieblichen Zügen (Elemente {{TT:Tag|train}} mit Ausprägung {{Attr|type}}="operational") angegeben.}}
Line 62: Line 62:
{{Deu|Es gibt in {{rml}} derzeit keine explizite Unterscheidung zwischen Produkt und Gattung – ein Element {{TT:Tag|category}} kann sowohl als Zuggattung (d. h. referenziert von einem {{TT:Tag|train}}) als auch als Produkt (d. h. referenziert von einem {{TT:Tag|trainPart}}) verwendet werden.}}
{{Deu|Es gibt in {{rml}} derzeit keine explizite Unterscheidung zwischen Produkt und Gattung – ein Element {{TT:Tag|category}} kann sowohl als Zuggattung (d. h. referenziert von einem {{TT:Tag|train}}) als auch als Produkt (d. h. referenziert von einem {{TT:Tag|trainPart}}) verwendet werden.}}


{{Deu|Auch hier bleibt es dem lesenden Programm überlassen, wie es mit theoretisch möglichen Widersprüchen innerhalb der inhaltlichen Redundanz umgeht, falls ein Zug(teil) über seine {{TT:Tag|trainPart}}.{{Attr|categoryRef}} z. B. als personenbefördernd, über seine {{TT:Tag|train}}.{{Attr|categoryRef}} jedoch als nicht personenbefördernd dargestellt wird. Es wird empfohlen, sich für verkehrliche Eigenschaften (wie z. B. ""personenbefördernd"") am Produkt zu orientieren, für eventuelle betriebliche Eigenschaften (wie vielleicht {{Attr|categoryPriority}}) jedoch an der Gattung.}}
{{Deu|Auch hier bleibt es dem lesenden Programm überlassen, wie es mit theoretisch möglichen Widersprüchen innerhalb der inhaltlichen Redundanz umgeht, falls ein Zug(teil) über seine {{TT:Tag|trainPart}}.{{Attr|categoryRef}} z. B. als personenbefördernd, über seine {{TT:Tag|train}}.{{Attr|categoryRef}} jedoch als nicht personenbefördernd dargestellt wird. Es wird empfohlen, sich für verkehrliche Eigenschaften (wie z. B. ''personenbefördernd'') am Produkt zu orientieren, für eventuelle betriebliche Eigenschaften (wie vielleicht {{Attr|categoryPriority}}) jedoch an der Gattung.}}


=== Overriding of places ===
=== Overriding of places ===
;{{deu|Überschreiben von Platzkapazitäten}}
;{{deu|Überschreiben von Platzkapazitäten}}
To explicitly declare a train or train part as passenger hauling, it must stringently reference a properly defined {{TT:Tag|category}} by its {{Attr|categoryRef}}. But, in this relation, it has to be considered that sometimes the so-called """overriding of places""" happens. Here, the element {{TT:Tag|passengerUsage}} of {{TT:Tag|trainPart}} is used to override (correct) the place capacities inherited from a formation (by the attribute {{Attr|formationRef}}). If the place capacities are corrected to 0 by this method, this included implicitly that the train part cannot be passenger-hauling in a certain sense - even if its {{Attr|categoryRef}} says something else. This method is used e. g. to declare some carriages in a train to be closed. (Some carriages = part of the train may normally be used by passengers but another train part is closed may be because it does not fit at some platform.)
To explicitly declare a train or train part as passenger hauling, it must stringently reference a properly defined {{TT:Tag|category}} by its {{Attr|categoryRef}}. But, in this relation, it has to be considered that sometimes the so-called '''overriding of places''' happens. Here, the element {{TT:Tag|passengerUsage}} of {{TT:Tag|trainPart}} is used to override (correct) the place capacities inherited from a formation (by the attribute {{Attr|formationRef}}). If the place capacities are corrected to 0 by this method, this included implicitly that the train part cannot be passenger-hauling in a certain sense - even if its {{Attr|categoryRef}} says something else. This method is used e. g. to declare some carriages in a train to be closed. (Some carriages = part of the train may normally be used by passengers but another train part is closed may be because it does not fit at some platform.)


{{Deu|1=Um einen Zug oder Zugteil explizit als personenbefördernd oder nicht personenbefördernd zu deklarieren, muss dieser zwingend über  {{Attr|categoryRef}} auf eine entsprechend definierte {{TT:Tag|category}} verweisen. In diesem Zusammenhang ist jedoch zu beachten, dass gelegentlich das sogenannte „"""Überschreiben von Sitzplätzen"""“ vorkommt: Hierbei wird das Element {{TT:Tag|passengerUsage}} unter {{TT:Tag|trainPart}} benutzt, um die aus einer Formation (Attribut {{Attr|formationRef}}) „geerbten“ Platzkapazitäten zu überschreiben, d. h. im Einzelfall zu korrigieren. Falls die Platzkapazitäten dabei auf 0 korrigiert werden, folgt daraus implizit, dass der Zugteil in gewissem Sinne nicht mehr personenbefördernd sein kann – u. U. obwohl seine {{Attr|categoryRef}} etwas anderes suggeriert. Diese Möglichkeit wird z. B. benutzt, um abgesperrte Wagen innerhalb eines Zuges auszudrücken (ein Teil der Wagen = Zugteil darf von Reisenden ganz normal benutzt werden, ein anderer Zugteil ist jedoch abgesperrt, z. B. weil diese Wagen nicht an einen Bahnsteig passen). }}
{{Deu|1=Um einen Zug oder Zugteil explizit als personenbefördernd oder nicht personenbefördernd zu deklarieren, muss dieser zwingend über  {{Attr|categoryRef}} auf eine entsprechend definierte {{TT:Tag|category}} verweisen. In diesem Zusammenhang ist jedoch zu beachten, dass gelegentlich das sogenannte „'''Überschreiben von Sitzplätzen'''“ vorkommt: Hierbei wird das Element {{TT:Tag|passengerUsage}} unter {{TT:Tag|trainPart}} benutzt, um die aus einer Formation (Attribut {{Attr|formationRef}}) „geerbten“ Platzkapazitäten zu überschreiben, d. h. im Einzelfall zu korrigieren. Falls die Platzkapazitäten dabei auf 0 korrigiert werden, folgt daraus implizit, dass der Zugteil in gewissem Sinne nicht mehr personenbefördernd sein kann – u. U. obwohl seine {{Attr|categoryRef}} etwas anderes suggeriert. Diese Möglichkeit wird z. B. benutzt, um abgesperrte Wagen innerhalb eines Zuges auszudrücken (ein Teil der Wagen = Zugteil darf von Reisenden ganz normal benutzt werden, ein anderer Zugteil ist jedoch abgesperrt, z. B. weil diese Wagen nicht an einen Bahnsteig passen). }}
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
     <trainPart id="tp_4" name="141" … categoryRef="cat_3">
     <trainPart id="tp_4" name="141" … categoryRef="cat_3">
Line 78: Line 78:
         </formationTT>
         </formationTT>
</syntaxhighlight>
</syntaxhighlight>
Though it alternatively can be expressed by assigning an „empty-run product“ to the this train part, it is not always common to do so. Sometimes it is up to the custom of the user and therefore cannot be forced by the writing software. Also, normally there should not be all the train set to 0 places but some of its parts only. Anyway, it is recommended for reading software when determining such properties as ""passenger"", ""freight"", or ""public"" to check any possible overriding of places too and possibly to act according.
Though it alternatively can be expressed by assigning an „empty-run product“ to the this train part, it is not always common to do so. Sometimes it is up to the custom of the user and therefore cannot be forced by the writing software. Also, normally there should not be all the train set to 0 places but some of its parts only. Anyway, it is recommended for reading software when determining such properties as ''passenger'', ''freight'', or ''public'' to check any possible overriding of places too and possibly to act according.


{{Deu|Es kann zwar alternativ auch durch Zuweisung eines „Leerzug-Produkts“ zu diesem Zugteil ausgedrückt werden, dass die Wagen als abgesperrt gelten, jedoch ist das nicht immer üblich und oft von Gepflogenheiten des Anwenders abhängig (und kann daher nicht immer durch das schreibende Programm sichergestellt werden). Ebenso sollte i. d. R. nicht der gesamte Zug, sondern nur einige seiner Teile, durch Überschreiben auf 0 Plätze gesetzt sein. Dennoch wird lesenden Programmen empfohlen, beim Feststellen von Eigenschaften wie ""personenbefördernd"" oder ""zu veröffentlichen"" auch das Überschreiben der Plätze zu prüfen und ggf. darauf zu reagieren.}}
{{Deu|Es kann zwar alternativ auch durch Zuweisung eines „Leerzug-Produkts“ zu diesem Zugteil ausgedrückt werden, dass die Wagen als abgesperrt gelten, jedoch ist das nicht immer üblich und oft von Gepflogenheiten des Anwenders abhängig (und kann daher nicht immer durch das schreibende Programm sichergestellt werden). Ebenso sollte i. d. R. nicht der gesamte Zug, sondern nur einige seiner Teile, durch Überschreiben auf 0 Plätze gesetzt sein. Dennoch wird lesenden Programmen empfohlen, beim Feststellen von Eigenschaften wie ''personenbefördernd'' oder ''zu veröffentlichen'' auch das Überschreiben der Plätze zu prüfen und ggf. darauf zu reagieren.}}


[[Category:GeneralDescription]]
[[Category:GeneralDescription]]
[[category:Timetable Concept]]
[[category:Timetable Concept]]

Revision as of 14:14, 27 June 2021

This article explains basic concepts of train categorization via <category> elements within the timetable subschema.

Dieser Artikel erklärt Grundlagen der Zugkategorisierung mittels <category>-Elementen innerhalb des Timetable-Subschemas.

Train types, categories, products, and passenger usage

Zugarten, Produkte und Passagierverkehr

How to find out whether a train or train part is for passengers or freight?

Wie kann man ermitteln, ob ein Zug oder Zugteil eine "Fahrgastfahrt" ist?

Currently there is no attribute at <train> nor <trainPart> where one can directly deduce from whether a train (part) is for passengers or freight. Rather, the attribute categoryRef of the element <trainPart> has to be „traced back“:

Innerhalb der Elemente <train> und <trainPart> gibt es in railML® derzeit kein Attribut, das unmittelbar erkennen lässt, von welcher Zuggattung ein Zug(teil) ist oder ob es ein Reisezug (Fahrgastfahrt, personenbefördernd) ist. Vielmehr muss hierfür das Attribut categoryRef des Elements <trainPart> „zurückverfolgt“ werden:

<trainPart id="tp_1" name="222" line="EC 200" trainNumber="222" processStatus="planned"
				 timetablePeriodRef="ttp_2020_21" categoryRef="cat_3">

The categories are summarised in an own list at <timetable>. There, the attributes trainUsage and deadRun can be used to determine whether a type of train normally is used for passengers or freight:

Die Zugarten sind innerhalb der Struktur <timetable> in einer eigenen Liste zusammengefasst. Hier können die optionalen Attribute trainUsage und deadRun zu Rate gezogen werden, um festzustellen, ob eine Zugart i. d. R. für Reiseverkehr vorgesehen ist:

    <categories>
      <category id="cat_1" code="SEV" name="Schienenersatzverkehr" lang="de"/>
      <category id="cat_3" code="EC" name="EuroCity" description="Schnellfahrende Reisezüge im internationalen Verkehr mit besonderem Komfort" lang="de" trainUsage="passenger"/>
      <category id="cat_6" code="D" name="Schnellzug mit Durchgangswagen" description="Schnellfahrende Reisezüge des Fernverkehrs" lang="de" trainUsage="passenger"/>
      <category id="cat_7" code="Os" name="Osobní vlak" description="Osobní vlak je na tratích Správy železnic označení druhu vlaku, který zajišťuje přepravu většinou na krátké vzdálenosti na určité trati. Osobní vlaky zastavují až na výjimky ve všech stanicích a zastávkách." lang="cz" trainUsage="passenger"/>
      <category id="cat_9" code="S" name="Stadtschnellbahn" description="Reisezüge des linienbezogenen Ballungsverkehrs mit Systemhalten im dichten Takt unter S-Bahn-Tarifanwendung" lang="de" trainUsage="passenger"/>
      <category id="cat_10" code="FZ" name="FrachtZubringer" lang="de" trainUsage="goods"/>
      <category id="cat_11" code="Lt" name="Leertriebwagen" lang="de" deadrun="true"/>
      <category id="cat_12" code="P" name="Personenzug" description="Reisezüge des Binnenverkehrs der ÖBB auf DB-Infrastruktur und Züge der ÖBB und CD im Korridorverkehr" lang="de" trainUsage="passenger"/>
      <category id="cat_no76" code="L" name="Lokaltog" description="Lokaltog dekker transport mellom sentrum og forsteder i storbyområder. Toget stopper ved alle stasjoner og de har ideelt sett så høy avgangsfrekvens at reisende ikke må planlegge tidspunktet for reisen sin på forhånd." lang="no" trainUsage="passenger"/>
    </categories>

It is up to the reading software how it deals with such attributes missing. It can opt for a default case, or ask the user, or force the usage of these attributes e. g. by providing an error message.

The attribute categoryRef escpecially of <trainPart> references to train categories which are commonly known as products in practice. They are normally used for publishing. It has to be noted that a train can consist of more than one product at the same time because different train parts may reference different products (see also Train coupling and sharing). This really happens in practice e. g. in Germany between Erfurt and Plaue (Thüringen) where trains of Erfurter Bahn (product EB) and of Süd-Thüringen-Bahn (product STB) often run coupled, or at ÖBB where sometimes trains with the product name RailJet have additional carriages for peak periods placed as IC.

In contrary to products there is the operational train category. (In UK this is part of the head code of a train at least in a certain sense.) It is something rather internal, not to be published. Also, a train can have only one operational category at the same time. For this kind of train categories, there is the attribute categoryRef at the element <train> in railML®. It is sub-placed below <trainPartSequence> because the operational category may change between different sections of the train’s route. The many long-distance trains which run empty before and after their published route are examples from practice for such changes. In Germany, this is widely common between Berlin’s stations Grunewald, Lehrter Bahnhof (main station), and Rummelsburg (stabling station):

Es bleibt hier dem lesenden Programm überlassen, wie es damit umgeht, wenn diese Attribute nicht angegeben sind: Es kann einen Standard-Fall annehmen oder beim Anwender nachfragen oder diese Attribute zwingend erfordern, indem es eine Fehlermeldung ausgibt.

Das bei <trainPart> angegebene Attribut categoryRef verweist auf Zugarten (categories), die in der Praxis üblicherweise als Produkte bezeichnet und auch veröffentlicht werden. Hierbei ist zu beachten, dass ein Zug gleichzeitig mehrere Produkte haben kann, da verschiedene Zugteile unterschiedliche Produkte haben können (s. a. Train coupling and sharing). Dies kommt durchaus auch praktisch vor, z. B. die zwischen Erfurt und Plaue (Thüringen) vereinigt verkehrenden Züge der Erfurter Bahn (Produktbezeichnung EB) und Süd-Thüringen-Bahn (Produktbezeichnung STB) oder die bei der ÖBB gelegentlich an Züge mit der Produktbezeichnung RailJet angehangenen Verstärkungswagen, die jedoch als IC vermarktet werden.

Dem gegenüber steht die traditionelle Zuggattung als etwas eher Betriebsinternes, wobei ein Zug in einem Streckenabschnitt nur eine Zuggattung haben kann. Für diese Zuggattung gibt es in railML® das Attribut categoryRef im Element <train>, und zwar unter <trainPartSequence>, da auch die betriebliche Gattung innerhalb des Laufwegs eines Zuges wechseln kann. Praktische Beispiele für solche Wechsel wären die vielen Fernreisezüge, die vor und nach ihrem eigentlichen (veröffentlichten) Zuglauf als Leerreisezüge zu- und abgeführt werden, wie das z. B. zwischen Berlin-Grunewald, Lehrter Bahnhof und Rummelsburg üblich ist:

      <train id="tro_1" type="operational" trainNumber="141" scope="primary">
        <trainPartSequence sequence="1" categoryRef="cat_3">  <!-- IC Schiphol - Berlin -->
          <trainPartRef ref="tp_2" position="1"/>
        </trainPartSequence>
        <trainPartSequence sequence="2" categoryRef="cat_11">   <!-- empty run to stable -->
          <trainPartRef ref="tp_3" position="1"/>
        </trainPartSequence>
      </train>

The attribute categoryRef at <train> for the operational category is normally used at operational trains only (elements <train> with occurrence type="operational").

Currently there is no explicit distinction between product and operational category in railML® – an element <category> can represent an operational category (i. e. referenced by a <train>) as well as a product (i. e. referenced by a <trainPart>).

Here again it is up to the reading software how to deal with potential contradictions of this contextual redundancy in case a train (part) is shown e. g. as passenger hauling by its <trainPart>.categoryRef and at the same time as non passenger hauling by its <train>.categoryRef. It is recommended to “consult” the product for traffic properties (such as passenger hauling) and to “consult” the operational category for operational properties (which may be for instance categoryPriority).

Das Attribut categoryRef unter <train> für die betriebliche Zuggattung wird üblicher Weise nur bei betrieblichen Zügen (Elemente <train> mit Ausprägung type="operational") angegeben.

Es gibt in railML® derzeit keine explizite Unterscheidung zwischen Produkt und Gattung – ein Element <category> kann sowohl als Zuggattung (d. h. referenziert von einem <train>) als auch als Produkt (d. h. referenziert von einem <trainPart>) verwendet werden.

Auch hier bleibt es dem lesenden Programm überlassen, wie es mit theoretisch möglichen Widersprüchen innerhalb der inhaltlichen Redundanz umgeht, falls ein Zug(teil) über seine <trainPart>.categoryRef z. B. als personenbefördernd, über seine <train>.categoryRef jedoch als nicht personenbefördernd dargestellt wird. Es wird empfohlen, sich für verkehrliche Eigenschaften (wie z. B. personenbefördernd) am Produkt zu orientieren, für eventuelle betriebliche Eigenschaften (wie vielleicht categoryPriority) jedoch an der Gattung.

Overriding of places

Überschreiben von Platzkapazitäten

To explicitly declare a train or train part as passenger hauling, it must stringently reference a properly defined <category> by its categoryRef. But, in this relation, it has to be considered that sometimes the so-called overriding of places happens. Here, the element <passengerUsage> of <trainPart> is used to override (correct) the place capacities inherited from a formation (by the attribute formationRef). If the place capacities are corrected to 0 by this method, this included implicitly that the train part cannot be passenger-hauling in a certain sense - even if its categoryRef says something else. This method is used e. g. to declare some carriages in a train to be closed. (Some carriages = part of the train may normally be used by passengers but another train part is closed may be because it does not fit at some platform.)

Um einen Zug oder Zugteil explizit als personenbefördernd oder nicht personenbefördernd zu deklarieren, muss dieser zwingend über categoryRef auf eine entsprechend definierte <category> verweisen. In diesem Zusammenhang ist jedoch zu beachten, dass gelegentlich das sogenannte „Überschreiben von Sitzplätzen“ vorkommt: Hierbei wird das Element <passengerUsage> unter <trainPart> benutzt, um die aus einer Formation (Attribut formationRef) „geerbten“ Platzkapazitäten zu überschreiben, d. h. im Einzelfall zu korrigieren. Falls die Platzkapazitäten dabei auf 0 korrigiert werden, folgt daraus implizit, dass der Zugteil in gewissem Sinne nicht mehr personenbefördernd sein kann – u. U. obwohl seine categoryRef etwas anderes suggeriert. Diese Möglichkeit wird z. B. benutzt, um abgesperrte Wagen innerhalb eines Zuges auszudrücken (ein Teil der Wagen = Zugteil darf von Reisenden ganz normal benutzt werden, ein anderer Zugteil ist jedoch abgesperrt, z. B. weil diese Wagen nicht an einen Bahnsteig passen).

     <trainPart id="tp_4" name="141" … categoryRef="cat_3">
        <formationTT formationRef="fmt_1" … >
          <passengerUsage>
            <places category="class1" count="0"/>
            <places category="class2" count="0"/>
          </passengerUsage>
        </formationTT>

Though it alternatively can be expressed by assigning an „empty-run product“ to the this train part, it is not always common to do so. Sometimes it is up to the custom of the user and therefore cannot be forced by the writing software. Also, normally there should not be all the train set to 0 places but some of its parts only. Anyway, it is recommended for reading software when determining such properties as passenger, freight, or public to check any possible overriding of places too and possibly to act according.

Es kann zwar alternativ auch durch Zuweisung eines „Leerzug-Produkts“ zu diesem Zugteil ausgedrückt werden, dass die Wagen als abgesperrt gelten, jedoch ist das nicht immer üblich und oft von Gepflogenheiten des Anwenders abhängig (und kann daher nicht immer durch das schreibende Programm sichergestellt werden). Ebenso sollte i. d. R. nicht der gesamte Zug, sondern nur einige seiner Teile, durch Überschreiben auf 0 Plätze gesetzt sein. Dennoch wird lesenden Programmen empfohlen, beim Feststellen von Eigenschaften wie personenbefördernd oder zu veröffentlichen auch das Überschreiben der Plätze zu prüfen und ggf. darauf zu reagieren.