TCMF Handbook Help

TCMF - The format

TCMF builds on previous formats built on the same semantic coordinate space principles, including Port Call Messaging Format which is established as the S-211 IALA Standard. These formats are designed to support information sharing in systems that builds on the information exchange concept of Collaborative Decision Making, CDM

Collaborative Decision Making

Collaborative Decision Making, hereafter known as CDM, is a concept for transport node or hub improvement through digitisation.

As CDM has progressed as a concept the need for a unified messaging format for all transport modes has become apparent. This is a first draft of such a format, as illustrated with a few examples.

Anatomy of a Transport Collaboration Message

Structure of TCMF messages

A Transport Collaboration Message (TCM), can carry five different types of payload, referring to which type of state in the CDM metromap it pertains to. Each type has its own set of time sequence values and for Locationstate and ServiceState types there is also a time type, describing if the time given for the state change is planned, estimated or actual.

A first example

As TCMF is a generalisation of earlier xCMF formats, a few things have been altered. Instead of explicitly having an identified train to hold together all types of messages in RCMF and the port call in PCMF, this grouping is now supported by a typed grouping object where the grouping can be based on any number of different entities, depending on context and what kinds of transportation objects we want to build primary data structures for.

Grouping types, a sample

Carriers
  • train

  • wagon (as in train wagon)

  • truck

  • ship

  • container

  • portcall

Grouping is a list of identifiers under the tcmf:grouping namespace where the first field identifies the grouping type. In this first example, the message is related to a train, as can be seen by the type of grouping used:

{ "messageId": "tcmf:message:3cefb644-14bf-4df1-9ee1-9dfe4bd0ee1c", "grouping": ["tcmf:grouping:train:se:otn:476"], "reportedBy": "tcmf:user:rise:johanX", "reportedAt": "2023-01-09T13:52:43.123Z", "comment":"", "payload": { "@type":"LocationState", "location":"tcmf:location:station:Kde:3", "timeSequence": "arrival_to|departure_from|passing_by", "timeType":"estimated|planned|actual", "referenceObject":"tcmf:train:operativeTrainNumber:476", "time": "2023-01-09T16:00:00.000Z" } }

Service State payload

This is an example payload for the above message communicating a ServiceState event

"payload": { "@type":"ServiceState", "timeSequence": "commenced|completed", "timeType":"estimated|planned|actual", "referenceObject":"tcmf:reference_object:catering:coffee" #FD serviceObject, "location": "tcmf:location:station:G", "time": "2023-01-09T16:00:00.000Z" }

Administrative State payload

This is an example payload for the above message communicating a AdministrativeState event

"payload": { "@type":"AdministrativeState", "timeSequence": "requested|confirmed|denied|cancelled|assigned", "referenceObject":"tcmf:reference_object:trainNumber:1234" #FD serviceObject, "location": "tcmf:location:station:Hgl", "time": "2023-01-09T16:00:00.000Z" }

Carrier State grouping and payload

Here, the container BICU1234567 is bound to a truck with the swedish registration plate abc123. Even though the truck can be said to be bound to the container here, we only bind in one direction in such a way that the carrier bound to is the one closest to the top carrier.

"grouping": { "@type":"Container", "containerId": "BICU1234567" } "payload": { "@type":"CarrierState", "timeSequence": "bound_to|unbound_from", "carrier": "tcmf:truck:se:abc123", "referenceObject": "tcmf:reference_object:container" }

MessageOperation meta payload

The payload type of MessageOperation can be used to perform operations on other messages. For now, only invalidate is supported.

"payload": { "@type": "MessageOperation", "operation": "invalidate", "messageId": "tcmf:message:3cefb644-14bf-4df1-9ee1-9dfe4bd0ee1c" }
Last modified: 11 March 2025