English
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 IRI | https://datamodels.jp/ns/task/Task |
| @context | https://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 |
| Examples | key-values · normalized |
| Source | github.com/geolonia/datamodels |
Attributes
name
requiredName 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"
}
}
}Link header
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 have no priority, due date or completion percentage (Projects custom fields are extensions). progress is derived from state and state_reason.
| This model | Maps to | Note |
|---|---|---|
name | title | |
description | body | |
project | repository | Project.identifier = owner/repo |
parent | no counterpart | sub-issues are an extension candidate |
relatedTo | no counterpart | |
refersTo | no counterpart | |
progress | state + state_reason | open → needs-action or in-process; closed+completed → completed; closed+not_planned or duplicate → cancelled |
statusLabel | state (+ state_reason) | |
subtype | type | issue type (organisation feature) or one of the labels |
priority | no counterpart | |
assignee | assignees | |
author | user | |
start | no counterpart | |
due | no counterpart | milestone.due_on is an extension |
completedAt | closed_at | only when state is closed and state_reason is completed; closed_at of not_planned or duplicate issues is not mapped |
estimatedDuration | no counterpart | |
percentComplete | no counterpart | |
keywords | labels[].name | |
location | no counterpart | |
spatialId | no counterpart | |
isPrivate | no counterpart | follows the repository visibility |
source | html_url | |
externalId | number | |
dateCreated | created_at | |
dateModified | updated_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 model | Maps to | Note |
|---|---|---|
name | title | |
description | no counterpart | |
subtype | category / subCategory | |
progress | resolutionStatus | values are deployment-specific; resolved → completed |
statusLabel | resolutionStatus | |
assignee | departmentId | a department identifier |
start | observationDateTime | |
location | location | landmark and wardId are extensions |
externalId | reportId | |
keywords | no counterpart |
Corresponding standards: 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 model | Maps to | Note |
|---|---|---|
name | title | |
description | description | |
project | no counterpart | JSCalendar has no project; calendars group objects |
parent | relatedTo[parent] | |
relatedTo | relatedTo | first |
refersTo | no counterpart | |
progress | progress | identical value set (cancelled is a standard RFC 8984 value) |
statusLabel | no counterpart | |
subtype | no counterpart | |
priority | priority | |
assignee | participants | participants with role attendee or owner |
author | no counterpart | JSCalendar expresses the owner as a participant role |
start | start | |
due | due | |
completedAt | progressUpdated | only when progress is completed |
estimatedDuration | estimatedDuration | |
percentComplete | percentComplete | |
keywords | keywords | |
location | locations | a point maps to coordinates (geo URI); lines and polygons have no counterpart |
spatialId | no counterpart | |
isPrivate | privacy | privacy private or secret |
source | links | a link with rel alternate |
externalId | uid | |
dateCreated | created | |
dateModified | updated |
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 model | Maps to | Note |
|---|---|---|
name | service_name | |
description | description | |
project | no counterpart | jurisdiction_id is the closest |
refersTo | no counterpart | |
progress | status | open → needs-action |
statusLabel | status_notes | |
subtype | service_code | |
assignee | agency_responsible | a string |
start | requested_datetime | |
due | expected_datetime | |
completedAt | updated_datetime | approximation when closed |
location | lat, long | point only; address |
source | no counterpart | |
externalId | service_request_id | |
dateCreated | requested_datetime | |
dateModified | updated_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 model | Maps to | Note |
|---|---|---|
name | subject | |
description | description | |
project | project_id | |
parent | parent_issue_id | |
relatedTo | relations[].issue_to_id | relation_type is not in the core |
refersTo | no counterpart | corresponds to GTT refersTo (the subscribed entity) |
progress | status.is_closed | closed → completed |
statusLabel | status.name | |
subtype | tracker.name | |
priority | priority.position | position mapped onto 1 to 9 |
assignee | assigned_to_id | |
author | author_id | |
start | start_date | |
due | due_date | |
completedAt | closed_on | |
estimatedDuration | estimated_hours | hours converted to an ISO 8601 duration (1.5 → PT1H30M) |
percentComplete | done_ratio | |
keywords | no counterpart | not in Redmine core; tag plugins are extensions |
location | geom | redmine_gtt geometry (point |
spatialId | no counterpart | |
isPrivate | is_private | |
source | <base_url>/issues/<id> | |
externalId | id | |
dateCreated | created_on | |
dateModified | updated_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