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

Task draft ​

A tracked unit of work: a ticket or issue in a tracker, a calendar to-do, a municipal work order. State and priority follow RFC 8984 (JSCalendar); the source system's own status name and kind are kept in statusLabel and subtype. Location may be any geometry.

Japanese nameタスク
Type IRIhttps://datamodels.jp/ns/task/Task
@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/Task/v1.json
/schema/task/Task/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

project ​

The project this belongs to, when the source system has projects

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

parent ​

Parent task (RFC 8984 relatedTo parent)

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

relatedTo ​

Related tasks. Always an array in the key-values form, even with one target. The kind of relation (blocks, precedes, duplicates) is left to extensions

  • Value: Relationship → Task (multiple)
  • IRI: https://datamodels.jp/ns/task/relatedTo

refersTo ​

The entity this task is about (a report, an asset, a road)

  • Value: Relationship → any entity
  • IRI: https://datamodels.jp/ns/task/refersTo

progress ​

Normalised state (RFC 8984 progress: needs-action, in-process, completed, failed, cancelled). When no value fits, leave it out and give the local wording in statusLabel.

  • Value: Property, string: needs-action | in-process | completed | failed | cancelled
  • IRI: https://datamodels.jp/ns/task/progress

statusLabel ​

The source system's own status name, unchanged (for example "In progress", "Resolved"). Required when progress is left out

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

subtype ​

The source system's kind: tracker, issue type, category

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

priority ​

Priority 0 to 9: 1 highest, 9 lowest, 0 undefined (RFC 8984)

  • Value: Property, integer, ≥ 0
  • IRI: https://datamodels.jp/ns/task/priority

assignee ​

Assignees: person, organisation or team entities, possibly outside this subject. Always an array in the key-values form, even with one target

  • Value: Relationship → person, organisation or team (multiple)
  • IRI: https://datamodels.jp/ns/task/assignee

author ​

Creator (a person, organisation or team entity)

  • Value: Relationship → person, organisation or team
  • IRI: https://schema.org/author

start ​

Planned start (RFC 8984 start)

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

due ​

Due time (RFC 8984 due)

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

completedAt ​

When progress became completed

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

estimatedDuration ​

Estimated effort as an ISO 8601 duration, e.g. PT1H30M (RFC 8984 estimatedDuration)

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

percentComplete ​

Completion 0 to 100 (RFC 8984 percentComplete)

  • Value: Property, integer, ≥ 0
  • IRI: https://datamodels.jp/ns/task/percentComplete

keywords ​

Keywords or labels

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

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

spatialId ​

Spatial IDs (ZFXY) covering the task. Optional

  • Value: Property, array
  • IRI: https://datamodels.jp/ns/task/spatialId

isPrivate ​

true when private; default false

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

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:Task:1234",
  "type": "Task",
  "name": "靖国通りのアンダーパスの冠水を確認する",
  "description": "住民からの通報の現地確認。水位と通行可否を報告すること。",
  "project": "urn:ngsi-ld:Project:heavy-rain-2026-07",
  "parent": "urn:ngsi-ld:Task:1200",
  "relatedTo": [
    "urn:ngsi-ld:Task:1198"
  ],
  "refersTo": "urn:ngsi-ld:RoadRestriction:0001",
  "progress": "in-process",
  "statusLabel": "対応中",
  "subtype": "現地確認",
  "priority": 2,
  "assignee": [
    "urn:ngsi-ld:Team:field-team-a"
  ],
  "author": "urn:ngsi-ld:Person:staff-0012",
  "start": "2026-07-08T10:30:00+09:00",
  "due": "2026-07-08T12:00:00+09:00",
  "estimatedDuration": "PT1H30M",
  "percentComplete": 40,
  "keywords": [
    "冠水",
    "現地確認"
  ],
  "location": {
    "type": "Point",
    "coordinates": [
      139.7512,
      35.6953
    ]
  },
  "spatialId": [
    "/25/0/29802971/13211383"
  ],
  "isPrivate": false,
  "source": "https://tracker.example.jp/issues/1234",
  "externalId": "1234",
  "dateCreated": "2026-07-08T10:20: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:Task:1234",
  "type": "Task",
  "name": {
    "type": "Property",
    "value": "靖国通りのアンダーパスの冠水を確認する"
  },
  "description": {
    "type": "Property",
    "value": "住民からの通報の現地確認。水位と通行可否を報告すること。"
  },
  "project": {
    "type": "Relationship",
    "object": "urn:ngsi-ld:Project:heavy-rain-2026-07"
  },
  "parent": {
    "type": "Relationship",
    "object": "urn:ngsi-ld:Task:1200"
  },
  "relatedTo": [
    {
      "type": "Relationship",
      "object": "urn:ngsi-ld:Task:1198",
      "datasetId": "urn:ngsi-ld:dataset:relatedTo:1"
    }
  ],
  "refersTo": {
    "type": "Relationship",
    "object": "urn:ngsi-ld:RoadRestriction:0001"
  },
  "progress": {
    "type": "Property",
    "value": "in-process"
  },
  "statusLabel": {
    "type": "Property",
    "value": "対応中"
  },
  "subtype": {
    "type": "Property",
    "value": "現地確認"
  },
  "priority": {
    "type": "Property",
    "value": 2
  },
  "assignee": [
    {
      "type": "Relationship",
      "object": "urn:ngsi-ld:Team:field-team-a",
      "datasetId": "urn:ngsi-ld:dataset:assignee:1"
    }
  ],
  "author": {
    "type": "Relationship",
    "object": "urn:ngsi-ld:Person:staff-0012"
  },
  "start": {
    "type": "Property",
    "value": {
      "@type": "DateTime",
      "@value": "2026-07-08T10:30:00+09:00"
    }
  },
  "due": {
    "type": "Property",
    "value": {
      "@type": "DateTime",
      "@value": "2026-07-08T12:00:00+09:00"
    }
  },
  "estimatedDuration": {
    "type": "Property",
    "value": "PT1H30M"
  },
  "percentComplete": {
    "type": "Property",
    "value": 40
  },
  "keywords": {
    "type": "Property",
    "value": [
      "冠水",
      "現地確認"
    ]
  },
  "location": {
    "type": "GeoProperty",
    "value": {
      "type": "Point",
      "coordinates": [
        139.7512,
        35.6953
      ]
    }
  },
  "spatialId": {
    "type": "Property",
    "value": [
      "/25/0/29802971/13211383"
    ]
  },
  "isPrivate": {
    "type": "Property",
    "value": false
  },
  "source": {
    "type": "Property",
    "value": "https://tracker.example.jp/issues/1234"
  },
  "externalId": {
    "type": "Property",
    "value": "1234"
  },
  "dateCreated": {
    "type": "Property",
    "value": {
      "@type": "DateTime",
      "@value": "2026-07-08T10:20: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 Issues (REST API) ​

GitHub Issues (REST API)

GitHub issues have no priority, due date or completion percentage (Projects custom fields are extensions). progress is derived from state and state_reason.

This modelMaps toNote
nametitle
descriptionbody
projectrepositoryProject.identifier = owner/repo
parentno counterpartsub-issues are an extension candidate
relatedTono counterpart
refersTono counterpart
progressstate + state_reasonopen → needs-action or in-process; closed+completed → completed; closed+not_planned or duplicate → cancelled
statusLabelstate (+ state_reason)
subtypetypeissue type (organisation feature) or one of the labels
priorityno counterpart
assigneeassignees
authoruser
startno counterpart
dueno counterpartmilestone.due_on is an extension
completedAtclosed_atonly when state is closed and state_reason is completed; closed_at of not_planned or duplicate issues is not mapped
estimatedDurationno counterpart
percentCompleteno counterpart
keywordslabels[].name
locationno counterpart
spatialIdno counterpart
isPrivateno counterpartfollows the repository visibility
sourcehtml_url
externalIdnumber
dateCreatedcreated_at
dateModifiedupdated_at

Corresponding standards: IssueReporting (Smart Data Models dataModel.IssueTracking ​

IssueReporting (Smart Data Models dataModel.IssueTracking

An Indian citizen grievance record (ward, department, landmark). A correspondence for interoperability, not an adoption.

This modelMaps toNote
nametitle
descriptionno counterpart
subtypecategory / subCategory
progressresolutionStatusvalues are deployment-specific; resolved → completed
statusLabelresolutionStatus
assigneedepartmentIda department identifier
startobservationDateTime
locationlocationlandmark and wardId are extensions
externalIdreportId
keywordsno counterpart

Corresponding standards: JSCalendar Task (RFC 8984) ​

JSCalendar Task (RFC 8984)

Value spaces follow this standard. JSCalendar locations are a set of named places with geo-URI coordinates while location here is a GeoJSON geometry; participants carry roles, assignee corresponds to attendee/owner.

This modelMaps toNote
nametitle
descriptiondescription
projectno counterpartJSCalendar has no project; calendars group objects
parentrelatedTo[parent]
relatedTorelatedTofirst
refersTono counterpart
progressprogressidentical value set (cancelled is a standard RFC 8984 value)
statusLabelno counterpart
subtypeno counterpart
prioritypriority
assigneeparticipantsparticipants with role attendee or owner
authorno counterpartJSCalendar expresses the owner as a participant role
startstart
duedue
completedAtprogressUpdatedonly when progress is completed
estimatedDurationestimatedDuration
percentCompletepercentComplete
keywordskeywords
locationlocationsa point maps to coordinates (geo URI); lines and polygons have no counterpart
spatialIdno counterpart
isPrivateprivacyprivacy private or secret
sourcelinksa link with rel alternate
externalIduid
dateCreatedcreated
dateModifiedupdated

Corresponding standards: Open311 GeoReport v2 service_requests (Smart Data Models dataModel.IssueTracking) ​

Open311 GeoReport v2 service_requests (Smart Data Models dataModel.IssueTracking)

A correspondence for interoperability, not an adoption. Open311 is the record of a North American 311 hotline report; it has no assignee, due date, completion or hierarchy.

This modelMaps toNote
nameservice_name
descriptiondescription
projectno counterpartjurisdiction_id is the closest
refersTono counterpart
progressstatusopen → needs-action
statusLabelstatus_notes
subtypeservice_code
assigneeagency_responsiblea string
startrequested_datetime
dueexpected_datetime
completedAtupdated_datetimeapproximation when closed
locationlat, longpoint only; address
sourceno counterpart
externalIdservice_request_id
dateCreatedrequested_datetime
dateModifiedupdated_datetime

Corresponding standards: Redmine issue (including redmine_gtt_fiware output) ​

Redmine issue (including redmine_gtt_fiware output)

Redmine priorities are an ordered list (low, normal, high, urgent, immediate) mapped onto 1 to 9. Status maps through is_closed to needs-action or completed; in-process is assigned by the operator's status configuration. Custom fields are extensions. GTT (redmine_gtt_fiware) can align its frozen Issue vocabulary to Task by alias (Issue → tm:Task) or by declaring Issue a subclass.

This modelMaps toNote
namesubject
descriptiondescription
projectproject_id
parentparent_issue_id
relatedTorelations[].issue_to_idrelation_type is not in the core
refersTono counterpartcorresponds to GTT refersTo (the subscribed entity)
progressstatus.is_closedclosed → completed
statusLabelstatus.name
subtypetracker.name
prioritypriority.positionposition mapped onto 1 to 9
assigneeassigned_to_id
authorauthor_id
startstart_date
duedue_date
completedAtclosed_on
estimatedDurationestimated_hourshours converted to an ISO 8601 duration (1.5 → PT1H30M)
percentCompletedone_ratio
keywordsno counterpartnot in Redmine core; tag plugins are extensions
locationgeomredmine_gtt geometry (point
spatialIdno counterpart
isPrivateis_private
source<base_url>/issues/<id>
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.
  • progress uses the RFC 8984 value set unchanged: needs-action, in-process, completed, failed, cancelled. statusLabel keeps the source system’s own status name; subtype its tracker, issue type or category.
  • relatedTo and assignee are multi-valued Relationships (one instance per target, distinguished by datasetId). In the key-values form they are always arrays, even with a single target. The kind of a relation (blocks, precedes, duplicates) is not in the core.
  • A source system keeps its own type and attribute names through a JSON-LD alias context (see the Tips guide); its vocabulary can also declare its types subclasses of these.
  • project is optional: RFC 8984 has no project, and a calendar to-do or a stand-alone work order should not have to invent one; trackers whose issues always belong to a project can require it in their own model. name and progress are required.

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