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

Project draft ​

A grouping of tasks: a project in a tracker, one disaster-response operation, a campaign. Called differently in different settings, with the same common attributes.

Japanese nameプロジェクト
Type IRIhttps://datamodels.jp/ns/task/Project
@contexthttps://datamodels.jp/context/task/v1.jsonld (alias, latest compatible version)
https://datamodels.jp/context/task/v1.0.0.jsonld (this version, immutable)
JSON Schema/schema/task/Project/v1.json
/schema/task/Project/v1.0.0.json
Exampleskey-values · normalized
Sourcegithub.com/geolonia/datamodels

Attributes ​

name ​

required

Name or subject

  • Value: Property, string
  • IRI: https://uri.etsi.org/ngsi-ld/name

description ​

Description

  • Value: Property, string
  • IRI: https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context-v1.8.jsonld#description

identifier ​

Short handle: a slug or code, unique within the source system

  • Value: Property, string
  • IRI: https://schema.org/identifier

parent ​

Parent project

  • Value: Relationship → Project
  • IRI: https://datamodels.jp/ns/task/parent

projectStatus ​

State; status is protected in the core context, hence projectStatus

  • Value: Property, string: active | closed | archived
  • IRI: https://datamodels.jp/ns/task/projectStatus

isPublic ​

true when public

  • Value: Property, boolean
  • IRI: https://datamodels.jp/ns/task/isPublic

homepage ​

Homepage

  • Value: Property, string (uri)
  • IRI: https://schema.org/url

start ​

Planned start

  • Value: Property, string (date-time)
  • IRI: https://datamodels.jp/ns/task/start

end ​

Planned end

  • Value: Property, string (date-time)
  • IRI: https://datamodels.jp/ns/task/end

location ​

Location as any GeoJSON geometry: point, line, polygon or a collection

  • Value: GeoProperty (Geometry)
  • IRI: https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context-v1.8.jsonld#location

keywords ​

Keywords or labels

  • Value: Property, array
  • IRI: https://schema.org/keywords

source ​

URL of this object in the system of record

  • Value: Property, string (uri)
  • IRI: https://smart-data-models.github.io/data-models/terms.jsonld#/definitions/source

externalId ​

Identifier in the system of record

  • Value: Property, string
  • IRI: https://datamodels.jp/ns/task/externalId

dateCreated ​

Creation time in the system of record (distinct from the broker attribute createdAt)

  • Value: Property, string (date-time)
  • IRI: https://smart-data-models.github.io/data-models/terms.jsonld#/definitions/dateCreated

dateModified ​

Last modification time in the system of record

  • Value: Property, string (date-time)
  • IRI: https://smart-data-models.github.io/data-models/terms.jsonld#/definitions/dateModified

Example (key-values) ​

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:Project:heavy-rain-2026-07",
  "type": "Project",
  "name": "令和8年7月大雨 災害対応",
  "description": "7/8〜 大雨に伴う区の災害対応オペレーション",
  "identifier": "heavy-rain-2026-07",
  "projectStatus": "active",
  "isPublic": false,
  "homepage": "https://tracker.example.jp/projects/heavy-rain-2026-07",
  "start": "2026-07-08T07:00:00+09:00",
  "location": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          139.73,
          35.67
        ],
        [
          139.78,
          35.67
        ],
        [
          139.78,
          35.705
        ],
        [
          139.73,
          35.705
        ],
        [
          139.73,
          35.67
        ]
      ]
    ]
  },
  "keywords": [
    "大雨",
    "災害対応"
  ],
  "source": "https://tracker.example.jp/projects/heavy-rain-2026-07",
  "externalId": "42",
  "dateCreated": "2026-07-08T06:00:00+09:00",
  "dateModified": "2026-07-08T11:05:00+09:00"
}

Example (normalized) ​

json
{
  "@context": [
    "https://datamodels.jp/context/task/v1.0.0.jsonld",
    "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context-v1.8.jsonld"
  ],
  "id": "urn:ngsi-ld:Project:heavy-rain-2026-07",
  "type": "Project",
  "name": {
    "type": "Property",
    "value": "令和8年7月大雨 災害対応"
  },
  "description": {
    "type": "Property",
    "value": "7/8〜 大雨に伴う区の災害対応オペレーション"
  },
  "identifier": {
    "type": "Property",
    "value": "heavy-rain-2026-07"
  },
  "projectStatus": {
    "type": "Property",
    "value": "active"
  },
  "isPublic": {
    "type": "Property",
    "value": false
  },
  "homepage": {
    "type": "Property",
    "value": "https://tracker.example.jp/projects/heavy-rain-2026-07"
  },
  "start": {
    "type": "Property",
    "value": {
      "@type": "DateTime",
      "@value": "2026-07-08T07:00:00+09:00"
    }
  },
  "location": {
    "type": "GeoProperty",
    "value": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            139.73,
            35.67
          ],
          [
            139.78,
            35.67
          ],
          [
            139.78,
            35.705
          ],
          [
            139.73,
            35.705
          ],
          [
            139.73,
            35.67
          ]
        ]
      ]
    }
  },
  "keywords": {
    "type": "Property",
    "value": [
      "大雨",
      "災害対応"
    ]
  },
  "source": {
    "type": "Property",
    "value": "https://tracker.example.jp/projects/heavy-rain-2026-07"
  },
  "externalId": {
    "type": "Property",
    "value": "42"
  },
  "dateCreated": {
    "type": "Property",
    "value": {
      "@type": "DateTime",
      "@value": "2026-07-08T06:00:00+09:00"
    }
  },
  "dateModified": {
    "type": "Property",
    "value": {
      "@type": "DateTime",
      "@value": "2026-07-08T11:05:00+09:00"
    }
  }
}
http
Link: <https://datamodels.jp/context/task/v1.jsonld>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"

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

Corresponding standards: GitHub repository ​

GitHub repository

This modelMaps toNote
namename
descriptiondescription
identifierfull_name
parentno counterparta fork's parent means the copied-from repository
projectStatusarchivedtrue → archived
isPublicprivatenegated
homepagehtml_url
keywordstopics
sourcehtml_url
externalIdid
dateCreatedcreated_at
dateModifiedupdated_at

Corresponding standards: Redmine project ​

Redmine project

This modelMaps toNote
namename
descriptiondescription
identifieridentifier
parentparent.id
projectStatusstatus1 → active
isPublicis_public
homepagehomepage
locationgeomredmine_gtt project boundary
source<base_url>/projects/<identifier>
externalIdid
dateCreatedcreated_on
dateModifiedupdated_on

Notes ​

  • Upstream considered (2026-09-18): Smart Data Models dataModel.IssueTracking (Open311 service_requests/services; IUDX IssueReporting), both citizen-complaint records shaped by one country's municipal process, not task models; dataModel.Transportation CityWork and dataModel.PredictiveMaintenance, domain-specific. RFC 8984 (JSCalendar Task) is the universal reference and supplies the value spaces used here. See issue #22.
  • The core is deliberately small. System-specific data (time spent, milestones, watchers, custom fields, map rotation) belongs in extensions.
  • status is a protected core-context term, hence projectStatus.

Model content on this page is licensed under CC BY 4.0. LICENSE-CONTENT