This specification, developed by the W3C OpenTrack Community Group, introduces a data schema to describe Athletics data on the Web. Based on the World Athletics' requirements, this document defines the main concepts of Athletics competitions, with the objective of interoperability of result competition data.

This document is in the process of development.

Introduction

This proposal is based on the World Athletics´ requirements to represent competitions and their results, including event structure (rounds), athletes and teams, results, performances, and venues.

This document specifies a lightweight schema implemented in JSON to represent the main concepts and relations and potential values to guarantee a homogeneous representation of the information in this realm.

No section should be considered final, and the absence of any content does not imply that such content is out of scope or may not appear in the future. If you feel something should be covered, please tell us.

Typographical Conventions

The following typographic conventions are used in this specification:

Notes are in light green boxes with a green left border and with a "Note" header in green. Notes are normative or informative depending on whether they are in normative or informative sections.
Examples are in light khaki boxes, with khaki left border, and with a
numbered "Example" header in khaki. The content of the example is in 
monospace font and may be syntax colored. Examples are always informative.
            

Overview of the model

The model is related to competition management in Athletics. Through this model, systems will describe, collect, process, store and publish Athletics competitions and their results.

Athletics Competition Model
Athletics Competition Model

The main entities of the model are:

Competition
A [=competition=] is an organized occasion where one or more sports events are held over one or more days. Athletics events are usually part of a bigger meeting or competition (e.g., Area Championships, Olympic Games, track and field meetings) and are organized in different sub-events depending on the disciplines and categories (i.e., [=competition units=]). These unitary competitions (e.g., 100m U18 Men, 110 U23 Women) are structured in [=rounds=] (e.g., semi-finals, finals...) that include one or more unitary [=races=] or field event.
Competitors (Athletes and Teams)
An [=athlete=] is a person who takes part in a [=competition=] as an individual competitor. Athletes are defined by gender, age, nationality, and other personal information. A [=relay team=] is a group of [=athletes=] who takes part in a competition as a whole, competing against other teams.
Venues
A [=venue=] is a place or location where the [=competitions=] are held.
Results
Unitary [=races=] or field events produce results. Depending on the type of competitor, results may be either [=individual results=] (corresponding to [=athletes=]) or [=relay results=] (generated by [=teams=]). The nature of the event type determines the details of individual results and performance of competitors: [=outdoor horizontal jump results=], [=indoor horizontal jump results=], [=vertical jump results=], [=throws results=], and [=split times=].

See all the concepts below and their attributes explained in detail, including the specific class and properties that serve to describe Athletics resources. Concepts include examples of implementation.

Concepts

Athlete

An athlete is a person who participates in an [=athletics competition=].

Member Type Description Required
`id` `integer` Local identifier of an athlete. yes
`waId` `integer` Unique identifier of an athlete provided by World Athletics. no
`firstName` `string` Athlete's given name. yes
`lastName` `string` Athlete's family name or surname. yes
`birthdate` `string` (Date) Athlete's date of birth. yes
`country` `enum` (Country) Athlete's nationality. yes
`sex` `enum` (Gender) Athlete's gender. no
{
    "id" : 1002,
    "waId" : 1000,
    "firstName" : "John",
    "lastName" : "Smith",
    "sex" : "male" ,
    "birthdate" : "2000-10-01",
    "country" : "GBR",
}
                

Relay Team

A relay team is a group of athletes who take part in an athletics [=competition=].

Member Type Description Required
`id` `integer` Local identifier of a team. yes
`waId` `integer` Unique identifier of a team provided by World Athletics. no
`name` `string` Team's denomination. yes
`country` `enum` (Country or "`INT`") Team's nationality in IOC [[[IOC-ODF]]] format or "`INT`" if international. yes
{
    "id": 10002,
    "waId": 41, 
    "name" : "Great Britain National Team (4x100)",
    "country" : "GBR"
}
                

Venue

A venue is a location, place, or territory where an event is held. Events may take part either in-stadia (e.g., track and field events at Helsinki Olympic Stadium) or outside stadia (e.g., cross-country, road races, etc.).

Member Type Description Required
`id` `integer` Local identifier of a venue. yes
`waId` `integer` Unique identifier of a venue provided by World Athletics. no
`name` `string` Denomination of the venue. yes
`country` `string` (Country) Country of the venue in IOC [[[IOC-ODF]]] format. yes
{
    "id": 10212,
    "waId": 3321, 
    "name" : "Olympic Stadium Amsterdam",
    "country" : "NED"
}
                

Competition

A Competition is an athletics event in which [=athletes=] or [=teams=] take part in order to find out who is best at a particular discipline.

Athletics [=competitions=] may be of different nature, depending on the disciplines (e.g., 100m, marathon, pole vault, etc.), schedule (e.g., one-day meetings, World championships, etc.), competitors (e.g., U23, Masters, etc.), and scope (e.g., regional, national, supranational championships, leagues, etc.). Other amateur competitions such as fund-raising road races or school races are also considered [=competitions=].

According to [[[WA-COMPETITION]]], a [=competition=] may be divided into men's, women's, and universal classifications (both genders in the same classification).

Member Type Description Required
`waId` `integer` Unique identifier of a competition provided by World Athletics. no
`athletes` `array` of [=Athletes=] List of athletes registered in the competition. yes
`relayTeams` `array` of [=Relay Teams=] List of teams registered in the competition. yes
`venues` `array` of [=Venues=] List of venues where a competition is held. yes
`units` `array` of [=Competition Units=] Structure of the competition in units. yes
Relay Teams shouldn't be required in Competitions.
{
    "waId": 10928,
    "athletes": [...],
    "relayTeams": [...],
    "venues": [...],
    "units" : [...]
}
                

Competition Unit

A competition unit is a sub-event within an [=athletics competition=] that addresses a specific discipline and category (e.g., 100m U18 Men, 110 U23 Women, Marathon Men).

Member Type Description Required
`waEventId` `integer` Unique identifier of a competition provided by World Athletics. yes
`title` `string` Additional information about this competition unit to distinguish from other competition units of the same World Athletics event.
`minAge` `integer` Minimum age of the athletes competing in a competition unit [0..130]. no
`maxAge` `integer` Maximum age of the athletes competing in a competition unit [0..130]. no
`rounds` `array` of [=Rounds=] Structure of the unitary competition in rounds. yes
Should we include the classification gender as well? According to the rule book: `men`, `women`, `universal`.
{
    "waEventId": 10930,
    "title": "Marathon Men (U23)",
    "maxAge": 22,
    "minAge": 18,
    "rounds" : [...]
}
                

Round

A round is a stage or phase of a [=competition unit=] (e.g., semi-final, qualifications, final).

Member Type Description Required
`type` `enum` (Round Type) Stage of the competition. yes
`races` `array` of [=Races=] One or more physical events held in a round. yes
Should we change the term of `races` to `race-field-events`?
{
    "type": "Final",
    "races": [...]
}
                

Race

A race or field event is a physical event where the competitors produce [=results=].

Member Type Description Required
`number` `integer` Positive integer indicating the number of the [=race=] or field event in the [=round=]. yes
`date` `string` (Date) Date when the race or field event was held. yes
`wind` `string` (Wind Assistance) Wind assistance in this race or field event.
`oversizedTrack` `boolean` Flag to indicate if the track is oversized.
`startTime` `string` (Time) Start time of the race.
`endTime` `string` (Time) End time of the race.
`results` `array` of [=Results=] Results of this race or field event. yes
Should we include startDate, endDate?
Should we link venues from here?
{
    "number": 1,
    "date": "2022-01-22",
    "wind": "+1.4",
    "startTime": "10:00",
    "endTime": "12:11",
    "results": [...]
}
                

Results

A result is the outcome of the competitor's participation in a [=race=] or field event. Individual [=athletes=] produce [=individual results=], and [=teams=] have [=relay results=].

Individual Result

An individual result is the outcome of the an [=athlete=]'s participation in a [=race=] or field event.

Member Type Description Required
`athleteId` `integer` Identifier of the athlete. yes
`wind` `string` (Wind Assistance) Wind assistance associated with a result. no
`result` `string` (Fault or Time Result Format or Metres Result Format or Points Result Format or Metres Track Result Format) Individual result details (i.e., performance or feature). no
`outOfCompetition` `boolean` Flag to indicate if the athlete is out of the competition. no
`placeInRace` `integer` Athlete's rank in the race or field event. no
`placeInRound` `integer` Athlete's rank in the round. no
`qualified` `enum` (Qualification Type) Information about the qualification for the next round. no
`detail` `array` of ([=Outdoor horizontal jump results=] or [=Indoor horizontal jump results=] or [=Vertical jump results=] or [=Throws results=] or [=Split times=]) Concrete details of the results. no
    {
        "athleteId": 1221,
        "wind": "+1.4",
        "result": "10.33",
        "outOfCompetition": false,
        "placeInRace": 2,
        "placeInRound": 3,
        "qualified": "q",
        "detail": [...]
    }
                    

Relay Result

A relay result is the outcome of a [=relay team=]'s the participation in a [=race=].

Member Type Description Required
`relayTeamId` `integer` Identifier of the team. yes
`legs` `array` of `integer` Local athlete's identifiers corresponding to the relay legs. no
`result` `string` (Fault or Time Result Format or (Metres Result Format) or Points Result Format or Metres Track Result Format) Team result details (i.e., performance or feature). no
`outOfCompetition` `boolean` Flag to indicate if the team is out of the competition. no
`placeInRace` `integer` Team's rank in the race or field event. no
`placeInRound` `integer` Team's rank in the round. no
`qualified` `enum` (Qualification Type) Information about the qualification for the next round. no
    {
        "relayTeamId": 2322,
        "legs": [ 1221, 2029, 9123, 2342],
        "result": "43.33",
        "outOfCompetition": false,
        "placeInRace": 2,
        "placeInRound": 3,
        "qualified": "q"
    }
                

Detailed Results

A detailed result is the fine-grained specification of the competitor's participation in a [=race=] or field event. Depending on the discipline, the result details could be expressed as [=outdoor horizontal jump results=], [=indoor horizontal jump results=], [=vertical jump results=], [=throws results=], and [=split times=].

Outdoor Horizontal Jump Results

Outdoor horizontal jump results are the details of the outcomes of the [=athlete=]'s participation in an outdoor horizontal jump contest.

Member Type Description Required
`result` `string` (Horizontal Jump Features or Metres Result Format) Performance or feature achieved. yes
`wind` `string` (Wind Assistance) Wind assistance associated with a result. yes
    {
        "result": "14.54",
        "wind": "+1.4"
    }
                    

Indoor Horizontal Jump Results

Indoor horizontal jump results are the details of the [=athlete=]'s participation in an indoor horizontal jump contest.

Member Type Description Required
`result` `string` (Horizontal Jump Features or (Metres Result Format) Performance or feature achieved. yes
    {
        "result": "14.54"
    }
                    

Vertical Jump Results

Vertical jump results are the details of the [=athlete=]'s participation in a vertical jump contest.

Member Type Description Required
`height` `string` (Metres Result Format) Performance or feature achieved. yes
`attempts` `string` (Vertical Jump Features) Record of attempts in the contest. yes
    {
        "height": "2.22",
        "attempts": "xxo"
    }
                    

Throws Results

Throws results are the details of the [=athlete=]'s participation in a throws contest.

Member Type Description Required
`result` `string` (Throws Features or Metres Result Format) Performance or feature achieved. yes
    {
        "height": "15.31"
    }
                    

Split Times

Split times are the partial times of the [=athlete=]'s performance recorded during a [=race=] at specific distances.

Member Type Description Required
`distance` `string` (Metres Result Format) Distance of the race where a split time was recorded. yes
`result` `string` (Time Result Format) Split time at a specific distance during a race. yes
    {
        "distance": "400",
        "result": "01:04.23"
    }
                    

Enumerations and Codes

Date

Date is represented using the ISO 8601 standard: `[YYYY][MM][DD]` or `[YYYY]-[MM]-[DD]`.

2017-04-07
                

Time

Time is represented using the ISO 8601 standard: `[hh][mm][ss].sss` or `[hh]:[mm]:[ss].sss`.

02:05:34.000
                

Gender

Enumeration of genders with two values:

Code Gender
Male Men and/or boys.
Female Women and/or girls.
Should we unify the notation styles of terms (title case)?

Country

One of: `AFG`, `AIA`, `ALB`, `ALG`, `ANA`, `AND`, `ANG`, `ANT`, `ARG`, `ARM`, `ART`, `ARU`, `ASA`, `AUS`, `AUT`, `AZE`, `BAH`, `BAN`, `BAR`, `BDI`, `BEL`, `BEN`, `BER`, `BHU`, `BIH`, `BIZ`, `BLR`, `BOL`, `BOT`, `BRA`, `BRN`, `BRU`, `BUL`, `BUR`, `CAF`, `CAM`, `CAN`, `CAY`, `CGO`, `CHA`, `CHI`, `CHN`, `CIV`, `CMR`, `COD`, `COK`, `COL`, `COM`, `CPV`, `CRC`, `CRO`, `CUB`, `CYP`, `CZE`, `DEN`, `DJI`, `DMA`, `DOM`, `ECU`, `EGY`, `ERI`, `ESA`, `ESP`, `EST`, `ETH`, `FIJ`, `FIN`, `FRA`, `FSM`, `GAB`, `GAM`, `GBR`, `GBS`, `GEO`, `GEQ`, `GER`, `GHA`, `GIB`, `GRE`, `GRN`, `GUA`, `GUI`, `GUM`, `GUY`, `HAI`, `HKG`, `HON`, `HUN`, `INA`, `IND`, `IRI`, `IRL`, `IRQ`, `ISL`, `ISR`, `ISV`, `ITA`, `IVB`, `JAM`, `JOR`, `JPN`, `KAZ`, `KEN`, `KGZ`, `KIR`, `KOR`, `KOS`, `KSA`, `KUW`, `LAO`, `LAT`, `LBA`, `LBN`, `LBR`, `LCA`, `LES`, `LIE`, `LTU`, `LUX`, `MAC`, `MAD`, `MAR`, `MAS`, `MAW`, `MDA`, `MDV`, `MEX`, `MGL`, `MHL`, `MKD`, `MLI`, `MLT`, `MNE`, `MNT`, `MON`, `MOZ`, `MRI`, `MTN`, `MYA`, `NAM`, `NCA`, `NED`, `NEP`, `NFI`, `NGR`, `NIG`, `NMI`, `NOR`, `NRU`, `NZL`, `OMA`, `PAK`, `PAN`, `PAR`, `PER`, `PHI`, `PLE`, `PLW`, `PNG`, `POL`, `POR`, `PRK`, `PUR`, `PYF`, `QAT`, `ROU`, `RSA`, `RUS`, `RWA`, `SAM`, `SEN`, `SEY`, `SGP`, `SKN`, `SLE`, `SLO`, `SMR`, `SOL`, `SOM`, `SRB`, `SRI`, `SSD`, `STP`, `SUD`, `SUI`, `SUR`, `SVK`, `SWE`, `SWZ`, `SYR`, `TAN`, `TGA`, `THA`, `TJK`, `TKM`, `TKS`, `TLS`, `TOG`, `TPE`, `TTO`, `TUN`, `TUR`, `TUV`, `UAE`, `UGA`, `UKR`, `URU`, `USA`, `UZB`, `VAN`, `VEN`, `VIE`, `VIN`, `YEM`, `ZAM`, `ZIM`

Round Type

Values:

Should we use simpler identifiers?

Wind Assistance

Measure of wind:

Qualification Type

Values:

Result Types

A [=race=] or field event, always produces an array of either [=individual results=] or [=relay results=]. These entities contain a `result` member whose value pattern is a `string` that varies depending on the type of event.

Fault

Values:

  • `DNF`: Did Not Finish
  • `DNS`: Did Not Start
  • `DQ`: Disqualified
  • `NM`: No Mark

Time Result Format

Regular expression: `^(((0|[1-9][0-9]{0,2})\.[0-9][0-9h])|((0|[1-9][0-9]{0,2}):[0-5][0-9](\.[0-9][0-9h])?)|((0|[1-9][0-9]{0,2})(:[0-5][0-9]){2}(\.[0-9][0-9h])?))$`

Measured time is represented following these patterns:

  • `ss.uu`
  • `mm:ss.uu`
  • `hh:mm:ss.uu`
  • `mm:ss`
  • `hh:mm:ss`

Where `hh` (hours), `mm` (minutes), `ss` (seconds), `uu` (milliseconds)

In the case of hand timing, the `h` character must be used in place of the millisecond digit (i.e., `ss.uh`, `mm:ss.uh`, and `hh:mm:ss.uh`).

Metres Result Format

Regular expression: `^(0|[1-9][0-9]{0,2})\.[0-9]{2}$` (result in metres with centimetre precision)

Points Result Format

Regular expression: `^(0|[1-9][0-9]{0,2})\.[0-9]{2}$` (combined event points)

Metres Track Result Format

Regular expression: `^0|([1-9][0-9]{0,5})$` (result in metres)

Horizontal Jump Features

Values:

  • `o`: clearance (valid trial)
  • `-`: pass
  • `x`: failure

Vertical Jump Features

Values:

  • `o`
  • `x`
  • `r`
  • `-`
  • `xo`
  • `xx`
  • `xr`
  • `x-`
  • `or`
  • `xxo`
  • `xxx`
  • `xxr`
  • `xx-`
  • `xor`

Throws Features

Values:

  • `x`
  • `-`
  • `r`