Label Sets / Question Sets
Span-based Labeling
For span-based labeling, a label set is a single-column .csv
following the structure below:
Label 1
Label 2
Label 3
etc...
We provide twelve colors you can configure manually from the Labels extension. You can also create a label set with your desired label colors in it. A sample file is provided below. Note: we do support any HTML color codes (as seen below).
Note:
label,color
is the header. This will always be the first row in the .csv.
label,color
Annabeth Chase,#df3920
Harry Potter,#ff8000
Hermione Granger,#4db34d
John Watson,#3399cc
Percy Jackson,#cc3399
Sherlock Holmes,#9933cc
Note: colored label sets only work for the .csv
format.
Color-coded Labels
Datasaur supports HTML color codes. For your reference, below are the default colors provided by Datasaur for better viewing clarity in your project.
#df3920
#ff8000
#ffc826
#91b34d
#4db34d
#33cc99
#3399cc
#3370cc
#3333cc
#7033cc
#9933cc
#cc3399

Limit Selection to Bottom-level Labels Only
In projects with hierarchical label structures, some labels serve as broad categories while others act as bottom-level classifications. This setting ensures precise data annotation by restricting selection to only bottom-level labels—those without child labels. It prevents the use of broad categories, reducing ambiguity and improving consistency in labeled data.
When to Use?
This setting is particularly useful for projects that require detailed and specific classification, ensuring that only the most precise labels are applied.
Here are the example use cases for the food categorization:
Fruit
Apple
Banana
Vegetable
Carrot
Spinach
With this setting enabled, labelers can only select Apple, Banana, Carrot, and Spinach, but not the broader categories Fruit or Vegetable.
How to Configure the Setting
This setting can be enabled when creating a new project, modifying an existing one, or managing label set templates.
Project Creation Wizard
Create new project.
Go to Step 3 and select Span labeling.
In the Label Set section, click the triple-dot menu on the label set you want to modify and enable the setting.

Within the Project
Open Labels extension and select the label set.
Click the triple-dot menu and choose one of the following:
Add new label set.
Replace existing label set.
Edit label set.
Expand the Label set settings accordion and enable the setting.

Label Management
Navigate to Label management page.
Select Add label set or update the existing label set.
Expand Label set settings accordion and enable the setting.

Labeling Behavior
Once this setting is enabled, label selection will be limited to bottom-level labels. This means:
Only bottom-level labels can be selected.
Parent labels with child labels will no longer be selectable.
Keyboard shortcuts (numbers, arrow keys, Enter) will apply only to bottom-level labels.
Bounding Box Labeling
Label Sets
You can utilize .csv
, .tsv
, or .json
formats for the bounding box label set.
For
.csv/.tsv
, we support color names (e.g., red), hex values (e.g., #00FF00), and RGB (e.g., rgb(0,0,255)). You can also utilize the label set with just names, as shown in the Datasaur sample - Bbox only name.csv below. Other values such as captionAllowed and captionRequired will use default settings.For
.json
, we support hex and RGB only.
Text Transcription
The Text Transcription setting allows the labeler to add corresponding text to a bounding box. Disabling this setting means the labeler could not add the text.

Require caption
By turning on the Text Transcription setting, the labeler can add text to a bounding box. You can choose whether a specific label must have a text by disabling or enabling the Require caption checkbox.

Row-based/Document-based Labeling
For row-based or document-based projects, a label set is a .csv
with questions in the first column and answers in subsequent columns:
Question 1
Answer 1
Answer 2
Answer 3
Question 2
Answer 1
Answer 2
Question 3
Answer 1
Answer 2
Answer 3
Answer 4
Answer 5
You can also create a .json
for a label set that has multiple question types.
Question Hint

You can optionally set hints for each question. You can include additional instructions or explanations in the questions’ hint, which can help labelers in submitting answers most relevant to the task. You can set a text of up to around 65,000 characters for a single question’s hint.
Question hints can be set during project creation or when configuring a question set on Label management page.


Supported Format
The Document and Row Labeling extensions are able to parse markdown syntaxes in question hints. This gives you flexibility in formatting the text; enabling you to present lists, attach links to external sites, or emphasize certain parts of the hint, all using a familiar set of syntaxes. The following are examples of the supported formatting.
Bold
your text
Italic
your text
Underline
<u>your text</u>
• Bullet
dashes (-) or asterisks (*)
1. Numbering
1., 2., 3., etc.
[your text] (https://example.com)
Best Practices
We recommend keeping hints brief and focused on the relevant information for the labelers’ task. Longer hints may appear as large text blocks, which can clutter the UI. For more complex information or media, consider including links that labelers can easily click on.


Question Types
As mentioned before, label sets for row-based and document-based projects are sets of questions. Let's take a look at the question types available below.
1. Text Field
Text Field allows the labeler to answer questions by typing in free-form text, up to a single line at a time.

Users also can add some validation by expanding the Advanced Settings.

2. Text Area
Text Area allows the labeler to answer questions by typing in free-form text. In contrast to Text Fields, this allows for multiple-line answers.

3. Dropdown
Dropdown requires labelers to answer questions by picking one of several multiple-choice answers.

If you have a .csv with a pre-set list of answers, you can upload the
.csv
as an answer set.

You can also allow the labelers to select multiple answers by checking the box for Allow multiple choices.

4. Hierarchical Dropdown
Hierarchical dropdown allows the labeler to answer questions with hierarchically organized options.

Just like with the Dropdown type, you can also upload an answer set once you have created the hierarchical question. The format for hierarchical label sets can be found below.
5. True/False
True/False allows the labelers to answer the question by checking it. You can also put a description.

6. Single Choice
Single Choice allows the labeler to answer questions by selecting one answer.
You can configure up to 25 answer options for this question type.

You can also insert a hint to give a description of the Single Choice. Here is an example of using the Single Choice in the labeling process:

7. Multiple Choice
Multiple Choice allows the labeler to submit multiple answers by selecting more than one option from a list, or they can choose just one option if necessary.

The options are displayed as a staggered grid of checkboxes, making it more suitable for a smaller and simpler set of options. You can configure up to 25 answer options for this question type.
8. Date
Date allows the labeler to answer the question in two ways. The key benefit of selecting Date is that this format validates that a correct date has been filled in.
Typing the date in manually.
Clicking on the calendar symbol, then selecting the date.

If you want to fill date questions with the current timestamp at the time the labeler opens the project, you can check the Use current date as default value box on Step 3.

9. Time
Time allows the labeler to answer the question in two ways. The key benefit of selecting Time is that this format validates that a correct time has been filled in.
Typing it manually.
Clicking on the clock symbol, then selecting the time.

If you want to fill time questions with the current timestamp at the time the labeler opens the project, you can check the Use current time as default value box on Step 3.

10. Slider
Slider allows the labeler to answer the question by moving the sliding bar (ex: from 1 to 10).

To avoid subjective measurement, you can also hide the value from labelers in Step 3. Please note that the value will be visible in the reviewer mode.

You have the flexibility to personalize the slider color according to your preferences. While the default color for “Start at” and “End to” is blue, we provide 11 alternative default color options for you to select from.

When it comes to colors, you have the choice of using hex codes, color names, or RGB values. If you opt for any of these choices, the dropdown will be labeled as “Custom”.
To get a glimpse of how the color will appear, simply drag the slider thumb on the Preview.

11. URL
URL allows you to put the URL links and apply validation on it.

12. Grouped Attributes
Grouped Attributes allows the labeler to combine multiple questions that pertain to a single group.

13. Script-Generated Questions
Script-Generated Questions is an advanced question type that dynamically generates different questions for each row based on its data. Unlike predefined question sets, this approach allows for flexible, on-the-fly question generation, making it ideal for scenarios where static question lists are insufficient. For more details, see this page here.

Advanced Settings
In Row labeling projects, you can use the advanced setting “Refer answer to table column.”
Refer answer to table column
This feature is beneficial if you want to link answers to specific columns. A typical scenario for this is when you have a pre-labeled file and need to review the responses. Enabling this eliminates the need to apply the answers from scratch!
To enable this feature, navigate to Step 3 of the Project Creation Wizard and locate the Advanced Settings section. Here, you can choose the column headers for the questions you wish to bind.


After completing the project creation process, open the created project. You can now observe the binding result in the Document Labeling extension. The bound question is now filled with the answer from the bound column of the selected row.

Answer Validation Script
The Answer Validation Script is a highly flexible feature powered by TypeScript designed to help validate the logic of answering a row in Row labeling tasks. With this feature, you can write validation scripts to handle complex scenarios, such as verifying labeled data using other answers, comparing data across questions, or using external APIs for dynamic validation. Once the script is configured, if labelers or reviewers attempt to submit a row that fails validation, an error message will be displayed.
This functionality enables better control, accuracy, and consistency in the labeling process.

Key Capabilities
Row-Specific Validation: Validates data based on the content of the current row.
Cross-Question Validation: Checks answers by comparing them with answers from other questions.
API-based Validation: Incorporates validations that rely on external APIs or external business logic.
How to Configure the Validation Script
Go to the Row Labeling Extension inside the project.
Click on the three-dot menu.
Select "Configure answer validation script…".
Configuring the Script
When opening the Answer Validation Script dialog for the first time, you will be prompted with this template:
To decide whether to pass or fail the submission, you can return an object with or without errorMessage
as the property:
async ({ columns, row, questions, answers }: ValidationArgs): Promise<ValidationResult> => {
// this script will always prevent the labeler to submit the answer.
return { errorMessage: 'Please double-check your answers.' };
}
When validating, you will likely need to access certain information to determine whether the answer is valid or requires adjustment before submission. You can access all information provided from the function argument as demonstrated in the function to write the desired validation behavior.
columns: TableColumn[]
holds information about the column structure of the data being labeled.
row: Cell[]
is an array of cells containing data that is being labeled.
questions: Question[]
is an array of questions of the project.
answers
is an object containing answers with question’s id as the key. Depending on the question, it can be in 4 different types based on the question type:multiple: falsemultiple: truenormal question
string
string[]
grouped attributes
Answer
Answer[]
We also provided some helper functions in the template to help some most basic data access, such as:
function getCellValueByColumnLabel(label: string): string;
This function helps you obtain data based on the column’s label.
function getAnswerByQuestionLabel(label: string, searchQuestions: Question[] = questions): Answers;
This function helps you obtain the answer value based on the question’s label.
Validating Answer Through an API Call
You can include API requests in your validation, enabling dynamic or third-party validations by using the Fetch API.
Disclaimer
We do not accept any responsibility for any API calls that are misrouted, improperly configured, or sent to unintended parties, which may lead to the exposure, leakage, or compromise of data confidentiality.
Users are fully responsible for ensuring the accuracy, security, and integrity of API configurations and transmissions. By using our services, you acknowledge and accept these responsibilities.
Examples
FAQs
Can I validate across multiple rows?
No, the validation script is row-specific. It operates on individual rows being labeled.
What happens if there's an error in the script?
Unhandled exceptions or errors in the script will result in validation errors being shown and prevent the labeler from submitting their answers. You may choose to catch the error inside the script and let the submission continue if needed.
Hierarchical Label Sets or Dropdown Options
Users can upload multi-level hierarchical label set for Span Labeling projects, and Hierarchical dropdown options for Row or Document Labeling projects.
Here’s a sample that can be used for both hierarchical label set and dropdown options in CSV format:
id,label
1,Novel
1.1,Author
1.1.1,Name
1.1.2,Works
1.2,Title
1.2.1,Main Title
1.2.2,Subtitle
2,Characters
2.1,Antagonist
2.2,Protagonist
Components of this file
1. Header
The header id,label
will always be the first row in the CSV file. The first label/option should have 1 as the ID, just like in the example above.
2. ID format
The ID format follows a structure similar to Microsoft Word's numbering format. In the example above:
Novel is the root level.
1 is the ID for the root level.
Author is a second-level category under Novel.
1.1 is the ID for the second level.
3. Hierarchical Label Set in Span Labeling Projects
The hierarchy will be visible in the Labels extension and the label dropdown.
You can also use the same label name under different parent labels.
id,label
1,Software
1.1,Java
2,Geography
2.1,Java
Even though "Java" appears two times, each belongs to a different parent, making it contextually unique.

However, using the same label name more than once under the same parent is not allowed:
id,label
1,Fruit
1.1,Apple
1.2,Apple
In this case, the system will flag an error because both "Apple" entries are under "Fruit".
4. Hierarchical Dropdown Options in Row or Document Labeling Projects
You have to choose Hierarchical Dropdown as the question type when creating project.
The hierarchy will be displayed in the Row Labeling extension and the answer column in the table.

Last updated