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.
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.
The following typographic conventions are used in this specification:
markup
: Markup (elements, attributes, properties), machine processable values (string, characters, media types), property name, or a file name is represented in a monospace font.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.
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.
The main entities of the model are:
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.
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", }
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" }
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" }
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 |
{ "waId": 10928, "athletes": [...], "relayTeams": [...], "venues": [...], "units" : [...] }
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 |
{ "waEventId": 10930, "title": "Marathon Men (U23)", "maxAge": 22, "minAge": 18, "rounds" : [...] }
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 |
{ "type": "Final", "races": [...] }
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 |
{ "number": 1, "date": "2022-01-22", "wind": "+1.4", "startTime": "10:00", "endTime": "12:11", "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=].
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": [...] }
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" }
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 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 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 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 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 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" }
Date is represented using the ISO 8601 standard: `[YYYY][MM][DD]` or `[YYYY]-[MM]-[DD]`.
2017-04-07
Time is represented using the ISO 8601 standard: `[hh][mm][ss].sss` or `[hh]:[mm]:[ss].sss`.
02:05:34.000
Enumeration of genders with two values:
Code | Gender |
---|---|
Male |
Men and/or boys. |
Female |
Women and/or girls. |
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`
Values:
Measure of wind:
Values:
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.
Values:
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:
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`).
Regular expression: `^(0|[1-9][0-9]{0,2})\.[0-9]{2}$` (result in metres with centimetre precision)
Regular expression: `^(0|[1-9][0-9]{0,2})\.[0-9]{2}$` (combined event points)
Regular expression: `^0|([1-9][0-9]{0,5})$` (result in metres)
Values:
Values:
Values: