Skip to content

proposal: type for describing Tasks #1818

@chharvey

Description

@chharvey

I would like to see a type on Schema.org for describing a Task (, Issue, or WorkOrder). This could be used to mark up a GitHub issue, Asana task, or an item on a to-do list for example. Below, in JSON-LD format, are my ideas for property names and values.

{
  "@context": "http://schema.org/",
  "@id": "http://schema.org/Task",
  "@type": "Class",
  "subClassOf": "http://schema.org/Intangible",
  "name": "Task",
  "description": "A task that can be assigned and completed.",
  "property": [
    {
      "@type": "Property",
      "@id": "http://schema.org/assignee",
      "name": "assignee",
      "description": "A person or organization to whom this task is assigned.",
      "rangeIncludes": [
        { "@id": "http://schema.org/Person" },
        { "@id": "http://schema.org/Organization" }
      ]
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/attachment",
      "name": "attachment",
      "description": "A relevant work attached to this task.",
      "rangeIncludes": [ { "@id": "http://schema.org/CreativeWork" } ]
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/category"
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/comment"
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/commentCount"
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/completedBy",
      "name": "completedBy",
      "description": "The entity who completed this task.",
      "subPropertyOf": { "@id": "http://schema.org/contributor" },
      "rangeIncludes": [
        { "@id": "http://schema.org/Person" },
        { "@id": "http://schema.org/Organization" }
      ]
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/contributor"
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/creator"
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/dateCompleted",
      "name": "dateCompleted",
      "description": "The date/time on which this task was completed.",
      "rangeIncludes": [ { "@id": "http://schema.org/DateTime" } ]
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/dateCreated"
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/dateDue",
      "name": "dateDue",
      "description": "The date/time on which this task is due.",
      "rangeIncludes": [ { "@id": "http://schema.org/DateTime" } ]
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/dateModified"
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/dependency",
      "name": "dependency",
      "description": "A task that must be comleted before this task is completed.",
      "inverseOf": { "@id": "http://schema.org/dependent" },
      "rangeIncludes": [ { "@id": "http://schema.org/Task" } ]
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/dependent",
      "name": "dependent",
      "description": "A task that relies on the completion of this task.",
      "inverseOf": { "@id": "http://schema.org/dependency" },
      "rangeIncludes": [ { "@id": "http://schema.org/Task" } ]
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/downvoteCount"
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/event"
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/keywords"
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/subscriber",
      "name": "subscriber",
      "description": "Anyone who wishes to receive updates on this task.",
      "rangeIncludes": [
        { "@id": "http://schema.org/Person" },
        { "@id": "http://schema.org/Organization" }
      ]
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/subtask",
      "name": "subtask",
      "description": "A task that is a part of this task.",
      "inverseOf": { "@id": "http://schema.org/supertask" },
      "rangeIncludes": [ { "@id": "http://schema.org/Task" } ]
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/supertask",
      "name": "supertask",
      "description": "A task that this task is a part of.",
      "inverseOf": { "@id": "http://schema.org/subtask" },
      "rangeIncludes": [ { "@id": "http://schema.org/Task" } ]
    },
    {
      "@type": "Property",
      "@id": "http://schema.org/upvoteCount"
    }
  ]
}

Here’s example markup of issue #987 :

{
  "@context": "http://schema.org/",
  "@type": "Task",
  "@id": "https://github.com/schemaorg/schemaorg/issues/987",
  "identifier": "987",
  "name": "provide a status property for CreativeWork",
  "description": "... I propose adding a similar property to CreativeWork, perhaps named creativeWorkStatus...",
  "assignee": [],
  "comment": [
    {
      "@type": "Comment",
      "text": "danbri added the schema.org vocab label on Mar 7, 2016"
    }
  ],
  "commentCount": 0,
  "creator": { "@type": "Person", "@id": "https://github.com/chharvey" },
  "dateCreated": "2016-02-15",
  "dateModified": "2017-01-14",
  "keywords": [ "schema.org vocab" ],
  "subscriber": [
    { "@type": "Person", "@id": "https://github.com/chharvey" },
    { "@type": "Person", "@id": "https://github.com/danbri" }
  ]
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    no-issue-activityDiscuss has gone quiet. Auto-tagging to encourage people to re-engage with the issue (or close it!).

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions