{
  "type": "Project",
  "domain": "task",
  "description": "タスクをまとめる単位です。案件、災害対応の 1 つのオペレーション、キャンペーンなど、用途によって呼び方は変わっても、共通の属性を持ちます。",
  "contextUrl": "https://datamodels.jp/context/task/v1.jsonld",
  "propertyDetails": {
    "name": {
      "ngsiType": "Property",
      "valueType": "string",
      "example": "令和8年7月大雨 災害対応",
      "required": true,
      "description": "名称・件名",
      "@context": "https://uri.etsi.org/ngsi-ld/name"
    },
    "description": {
      "ngsiType": "Property",
      "valueType": "string",
      "example": "7/8〜 大雨に伴う区の災害対応オペレーション",
      "required": false,
      "description": "説明",
      "@context": "http://purl.org/dc/terms/description"
    },
    "identifier": {
      "ngsiType": "Property",
      "valueType": "string",
      "example": "heavy-rain-2026-07",
      "required": false,
      "description": "短い識別子（スラッグやコード。元のシステムの中で一意）",
      "@context": "https://schema.org/identifier"
    },
    "parent": {
      "ngsiType": "Relationship",
      "valueType": "uri",
      "example": null,
      "required": false,
      "description": "親プロジェクト",
      "@context": "https://datamodels.jp/ns/task/parent"
    },
    "projectStatus": {
      "ngsiType": "Property",
      "valueType": "string",
      "example": "active",
      "required": false,
      "description": "状態：active（進行中）、closed（終了）、archived（アーカイブ済み。使わなくなったが残している）。status は core context の予約語なので、projectStatus という名前にしています。",
      "@context": "https://datamodels.jp/ns/task/projectStatus",
      "validation": {
        "enum": [
          "active",
          "closed",
          "archived"
        ]
      }
    },
    "isPublic": {
      "ngsiType": "Property",
      "valueType": "boolean",
      "example": false,
      "required": false,
      "description": "公開プロジェクトなら true",
      "@context": "https://datamodels.jp/ns/task/isPublic"
    },
    "homepage": {
      "ngsiType": "Property",
      "valueType": "uri",
      "example": "https://tracker.example.jp/projects/heavy-rain-2026-07",
      "required": false,
      "description": "ホームページ",
      "@context": "https://schema.org/url"
    },
    "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))?$"
      }
    },
    "end": {
      "ngsiType": "Property",
      "valueType": "string",
      "example": null,
      "required": false,
      "description": "予定期間の終了。日付か日時",
      "@context": "https://datamodels.jp/ns/task/end",
      "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))?$"
      }
    },
    "location": {
      "ngsiType": "GeoProperty",
      "valueType": "geojson",
      "example": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              139.73,
              35.67
            ],
            [
              139.78,
              35.67
            ],
            [
              139.78,
              35.705
            ],
            [
              139.73,
              35.705
            ],
            [
              139.73,
              35.67
            ]
          ]
        ]
      },
      "required": false,
      "description": "位置。点、線、面、それらの集まりなど、任意の GeoJSON ジオメトリ",
      "@context": "https://uri.etsi.org/ngsi-ld/location"
    },
    "keywords": {
      "ngsiType": "Property",
      "valueType": "array",
      "example": [
        "大雨",
        "災害対応"
      ],
      "required": false,
      "description": "キーワード、ラベル",
      "@context": "https://schema.org/keywords"
    },
    "source": {
      "ngsiType": "Property",
      "valueType": "uri",
      "example": "https://tracker.example.jp/projects/heavy-rain-2026-07",
      "required": false,
      "description": "元のシステムでのこのプロジェクトの URL",
      "@context": "https://smart-data-models.github.io/data-models/terms.jsonld#/definitions/source"
    },
    "externalId": {
      "ngsiType": "Property",
      "valueType": "string",
      "example": "42",
      "required": false,
      "description": "元のシステムでの識別子",
      "@context": "https://datamodels.jp/ns/task/externalId"
    },
    "dateCreated": {
      "ngsiType": "Property",
      "valueType": "datetime",
      "example": "2026-07-08T06:00: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-08T11:05:00+09:00",
      "required": false,
      "description": "元のシステムでの更新日時",
      "@context": "https://smart-data-models.github.io/data-models/terms.jsonld#/definitions/dateModified"
    }
  },
  "additionalProperties": false
}
