Pre-release. Until the official launch, content may change, including published files.
Skip to content

Source: https://datamodels.jp/en/models/task/Milestone/ · Text CC BY 4.0

Milestone draft ​

A planned target that groups tasks within a project: a version in Redmine, a milestone in GitHub or GitLab, a fix version in Jira. It has a name, a due date and a state.

Kindentity
Type IRIhttps://datamodels.jp/ns/task/Milestone
@contexthttps://datamodels.jp/context/task/v1.jsonld
JSON Schema/schema/task/Milestone/v1.json
LicenceCC0 1.0: the files (@context, JSON Schema, examples) can be used without conditions

These @context and JSON Schema URLs always point to the latest compatible version.
For URLs that never change, see Versions. More in URLs and versions.

Types and relationships ​

Types and their relationshipsprojectmilestoneMilestoneMilestoneProjectProject3 more links →TaskTask5 more links →

Relationship (attribute name)N more links: continued on that type's page

Attributes ​

AttributeDescriptionValue
name*Name
https://uri.etsi.org/ngsi-ld/name
Property, string
descriptionDescription
http://purl.org/dc/terms/description
Property, string
projectThe project this belongs to
https://datamodels.jp/ns/task/project
Relationship → Project
startPlanned start: a date, or a date and time
https://datamodels.jp/ns/task/start
Property, string (date or date-time)
dueDue: the planned release or completion, a date or a date and time
https://datamodels.jp/ns/task/due
Property, string (date or date-time)
milestoneStatusState: open = accepting tasks, locked = no new tasks may be added, closed = done; status is protected in the core context, hence milestoneStatus
https://datamodels.jp/ns/task/milestoneStatus
Property, string: open | locked | closed
sourceURL of this object in the system of record
https://smart-data-models.github.io/data-models/terms.jsonld#/definitions/source
Property, string (uri)
externalIdIdentifier in the system of record
https://datamodels.jp/ns/task/externalId
Property, string
dateCreatedCreation time in the system of record (distinct from the broker attribute createdAt)
https://smart-data-models.github.io/data-models/terms.jsonld#/definitions/dateCreated
Property, string (date-time)
dateModifiedLast modification time in the system of record
https://smart-data-models.github.io/data-models/terms.jsonld#/definitions/dateModified
Property, string (date-time)

* required

Using this model ​

  • How to validate data and send it to a broker: Using the models.

  • To add attributes of your own to this model, the extension builder writes the @context and JSON Schema.

  • Extended this model? List your extension so others can reuse your names (how to fill in the form).

  • Files that particular brokers and tools can load as they are, made from this model: Adapters

  • The Link header, for sending data without @context in the body:

    http
    Link: <https://datamodels.jp/context/task/v1.jsonld>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"

Example ​

The examples are a fictional scenario (heavy rain in Chiyoda, Tokyo). Place names and codes are real; the events, people and teams are invented. See writing examples.

json
{
  "id": "urn:ngsi-ld:Milestone:heavy-rain-2026-07-initial",
  "type": "Milestone",
  "name": "初動対応(発災から 72 時間)",
  "description": "被害状況の確認と通行規制の設定を終えるまでの段階",
  "project": "urn:ngsi-ld:Project:heavy-rain-2026-07",
  "start": "2026-07-08T07:00:00+09:00",
  "due": "2026-07-11",
  "milestoneStatus": "open",
  "source": "https://tracker.example.jp/versions/7",
  "externalId": "7",
  "dateCreated": "2026-07-08T06:30:00+09:00",
  "dateModified": "2026-07-08T09:15:00+09:00"
}

Files: example.json · example-normalized.jsonld · Open in the JSON-LD Playground: see the full IRI behind every attribute (expanded form).

Something missing or wrong?

Open an issue, or propose new attributes or models with the proposal form. How it works: Contributing. The source files (notes, mapping tables) are on GitHub.

Referenced standards ​

The standards this model corresponds to, field by field. Open one to see its table.

GitHub milestone9 of 10 fields
This modelMaps toNote
nametitle
descriptiondescription
projecturlthe repository is the repos/owner/repo part of url; Project.identifier = owner/repo
startno counterpart
duedue_onthe API gives a date-time, but the GitHub UI sets only a date, so the time of day carries no meaning
milestoneStatusstateopen → open, closed → closed; there is no locked
sourcehtml_url
externalIdnumber
dateCreatedcreated_at
dateModifiedupdated_at

Mapping file (YAML) for converting data from this standard: github.yaml (how: Converting data)

Redmine version9 of 10 fields
This modelMaps toNote
namename
descriptiondescription
projectproject.id
startno counterpartRedmine stores no start date for a version; it computes one from the issues' start dates
duedue_datea date (YYYY-MM-DD), kept as it is
milestoneStatusstatusopen, locked and closed unchanged
source<base_url>/versions/<id>
externalIdid
dateCreatedcreated_on
dateModifiedupdated_on

Mapping file (YAML) for converting data from this standard: redmine.yaml (how: Converting data)

Notes ​

  • The core is deliberately small. System-specific data (time spent, watchers, custom fields, map rotation) belongs in extensions.
  • status is a protected core-context term, hence milestoneStatus. locked means what it means in Redmine, no new tasks may be added; GitHub and GitLab have only open and closed.
  • A task points at its milestone through Task.milestone, one milestone per task as in Redmine, GitHub and GitLab (Jira allows several fix versions; further ones are left to extensions).
  • Changed on 2026-10-09 (team decision; a pre-release correction of 1.0.0 in place): Comment and Attachment were removed from this subject and Milestone was added. Notes and files are not task concepts: they attach to any entity. The two came from Redmine journals and attachments and from the former Takamatsu disaster models, removed on 2026-09-24; GTT itself never emits journals or attachments. If an application needs them, they belong in the common subject, reusing schema.org (Comment, MediaObject) and linkable to any entity. Milestone is what Redmine (versions), GitHub and GitLab (milestones) and Jira (fix versions) share: a name, a description, a due date, open or closed, a project. The original design is in issue #22.
  • Changed on 2026-10-09 (team decision; a pre-release correction of 1.0.0 in place): start and due accept a date (YYYY-MM-DD) or a date-time. Redmine (start date, due date, version due date), GitHub milestones (a date in the UI), GitLab and many municipal work orders have only dates; turning a date into a date-time would invent a time of day that is not in the data. The first implementation, the GTT Redmine plugin, emits plain dates. This differs from RFC 8984, whose start and due are LocalDateTime values (a date and time without offset). In the normalized form a date is an NGSI-LD Date value and a date-time a DateTime value.