{
  "type": "Milestone",
  "domain": "task",
  "description": "プロジェクトの中でタスクをまとめる、予定の目標です。Redmine のバージョン、GitHub や GitLab のマイルストーン、Jira の修正バージョンなどにあたります。名前、期限、状態を持ちます。",
  "contextUrl": "https://datamodels.jp/context/task/v1.jsonld",
  "propertyDetails": {
    "name": {
      "ngsiType": "Property",
      "valueType": "string",
      "example": "初動対応（発災から 72 時間）",
      "required": true,
      "description": "名称",
      "@context": "https://uri.etsi.org/ngsi-ld/name"
    },
    "description": {
      "ngsiType": "Property",
      "valueType": "string",
      "example": "被害状況の確認と通行規制の設定を終えるまでの段階",
      "required": false,
      "description": "説明",
      "@context": "http://purl.org/dc/terms/description"
    },
    "project": {
      "ngsiType": "Relationship",
      "valueType": "uri",
      "example": "urn:ngsi-ld:Project:heavy-rain-2026-07",
      "required": false,
      "description": "所属するプロジェクト",
      "@context": "https://datamodels.jp/ns/task/project"
    },
    "start": {
      "ngsiType": "Property",
      "valueType": "string",
      "example": "2026-07-08T07:00:00+09:00",
      "required": false,
      "description": "予定期間の開始。日付か日時",
      "@context": "https://datamodels.jp/ns/task/start",
      "validation": {
        "pattern": "^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])(?:T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d))?$"
      }
    },
    "due": {
      "ngsiType": "Property",
      "valueType": "string",
      "example": "2026-07-11",
      "required": false,
      "description": "期限（予定しているリリースや完了）。日付か日時",
      "@context": "https://datamodels.jp/ns/task/due",
      "validation": {
        "pattern": "^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])(?:T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d))?$"
      }
    },
    "milestoneStatus": {
      "ngsiType": "Property",
      "valueType": "string",
      "example": "open",
      "required": false,
      "description": "状態：open（受付中）、locked（ロック中。新しいタスクを追加できない）、closed（完了）。status は core context の予約語なので、milestoneStatus という名前にしています。",
      "@context": "https://datamodels.jp/ns/task/milestoneStatus",
      "validation": {
        "enum": [
          "open",
          "locked",
          "closed"
        ]
      }
    },
    "source": {
      "ngsiType": "Property",
      "valueType": "uri",
      "example": "https://tracker.example.jp/versions/7",
      "required": false,
      "description": "元のシステムでのこのマイルストーンの URL",
      "@context": "https://smart-data-models.github.io/data-models/terms.jsonld#/definitions/source"
    },
    "externalId": {
      "ngsiType": "Property",
      "valueType": "string",
      "example": "7",
      "required": false,
      "description": "元のシステムでの識別子",
      "@context": "https://datamodels.jp/ns/task/externalId"
    },
    "dateCreated": {
      "ngsiType": "Property",
      "valueType": "datetime",
      "example": "2026-07-08T06:30:00+09:00",
      "required": false,
      "description": "元のシステムでの作成日時（ブローカーの createdAt とは別）",
      "@context": "https://smart-data-models.github.io/data-models/terms.jsonld#/definitions/dateCreated"
    },
    "dateModified": {
      "ngsiType": "Property",
      "valueType": "datetime",
      "example": "2026-07-08T09:15:00+09:00",
      "required": false,
      "description": "元のシステムでの更新日時",
      "@context": "https://smart-data-models.github.io/data-models/terms.jsonld#/definitions/dateModified"
    }
  },
  "additionalProperties": false
}
