Create Label Set

When creating a Span Labeling Project, we often want to create a label set as well. This example shows you how to create a simple label set consisting of 3 labels, along with their corresponding colors.

In this example, we will be using the GraphQL mutation createLabelSet to create a label set in Datasaur. Mutation: createLabelSet.

cURL

You can use the following cURL command to create a label set and attach it to a project. Simply copy and paste the command, then replace:

  • access_token with your own API access token.

  • The content of the label set items with your desired labels.

  • project_id with the ID of the project you want to link it to.

Make sure to adjust these values according to your specific needs before running the command.

curl --location --request POST 'https://datasaur.ai/graphql' \
--header 'Authorization: Bearer access_token' \
--header 'Content-Type: application/json' \
--data-raw '{"query":"mutation CreateLabelSetMutation($input: CreateLabelSetInput!, $projectId: ID!) { createLabelSet(input: $input, projectId: $projectId) { id }}","variables":{"input":{"name":"Give your new label set a name","index":0,"tagItems":[{"id":"per","parentId":null,"desc":null,"color":"red","tagName":"PER"},{"id":"geo","parentId":null,"desc":null,"color":"green","tagName":"GEO"},{"id":"gpe","parentId":null,"desc":null,"color":null,"tagName":"GPE"}]},"projectId":"<projectId>"}}'

Below is a more readable version of the above curl command's request body.

{
  "query": "mutation CreateLabelSetMutation($input: CreateLabelSetInput!, $projectId: ID!) { createLabelSet(input: $input, projectId: $projectId) { id }}",
  "variables": {
    "projectId": "<projectId>",
    "input": {
      "name": "Give your new label set a name",
      "index": 0,
      "tagItems": [
        {
          "id": "per",
          "parentId": null,
          "desc": null,
          "color": "red",
          "tagName": "PER"
        },
        {
          "id": "geo",
          "parentId": null,
          "desc": null,
          "color": "green",
          "tagName": "GEO"
        },
        {
          "id": "gpe",
          "parentId": null,
          "desc": null,
          "color": null,
          "tagName": "GPE"
        }
      ]
    }
  }
}
  • operationName: you can fill any alphanumeric string in as the operationName. Refer this page for best practices on choosing an operationName .

  • variables:

    • projectId: optional, but in practice this is required if you want to attach the label set to a particular project. If unspecified, the label set will be created, but you won't be able to see it in the project

    • input:

      • name: optional, You may give this label set a name so you could refer it in the future from Label Set Library.

      • index: optional, index or position of the label set. Zero-based index, to set the label set as the first one, set this value as 0

      • tagItems:

        • Each tag item includes 3 required fields

          • id: Fill with a random id. You can use any string as long as it is unique.

          • parentId: This is used for hierarchical labels. Use any existing ids that you have defined. If there is no parentId, use null.

          • tagName: Fill with the actual labels you'd like to use and the user will see e.g. person, geopolitical entity

        • A tag item also has 2 optional fields

          • desc: label description

          • color: You can set the color of the label. Refer to this page.

  • query: Copy this from the cURL example.

a tag has the same meaning as label. In the near future we will update the GraphQL Schema to refer to all instances as labels.

Response

Here is the response you can expect after issuing the cURL command. Use the id to create the project.

{
    "data": {
        "createLabelSet": {
            "id": "366"
        }
    },
    "extensions": {}
}

Last updated