Skip to content

Commit 31224cd

Browse files
add annotation doc
1 parent 6a55e53 commit 31224cd

File tree

3 files changed

+70
-0
lines changed

3 files changed

+70
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ See [docs/](/docs) for manuals and walkthroughs:
3030
- [Goals](/docs/goals.md)
3131
- [Statistics](/docs/statistics.md)
3232
- [Downloads](/docs/downloads.md)
33+
- [Annotation](/docs/annotation.md)
3334

3435
## ⚙️ Architecture
3536

docs/annotation.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# 🧾 Annotation
2+
When exporting your dataset—or just annotations, a structured JSON file is generated.
3+
4+
It contains metadata for all files matching the current filters and their annotations—without media.
5+
6+
## 🧬 Example Structure
7+
8+
```json
9+
[
10+
{
11+
"id": "6848a6709aeaf5eb62cf01a8",
12+
"related_duplicates": 0,
13+
"attributes": [
14+
{
15+
"uid": "f35846ca-0c7e-4120-8225-9204b054bb1a",
16+
"attributes": [
17+
[16, 0, "type_1", ""],
18+
[18, 0, "subtype_2", ""],
19+
[20, 1, "r", ""]
20+
]
21+
}
22+
],
23+
"author_name": "Curator",
24+
"validator_name": "Curator",
25+
"file_name": "6788191feac1f1a81ab2fadd.webp",
26+
"file_type": "image",
27+
"status": "a",
28+
"upload_date": "2025-06-10 21:41",
29+
"update_date": "2025-06-10 21:41",
30+
"rebound_project": null,
31+
"rebound": null
32+
}
33+
]
34+
```
35+
36+
Where:
37+
- **id** - is generated file id by which the file could be found in the system
38+
- **related_duplicates** - number of duplicates associated to this file
39+
- **attributes** - list of attribute (label) groups with annotated data
40+
- **author_name** - the username of user who uploaded this file
41+
- **validator_name** - the username of user who validated this file
42+
- **file_name** - original file name
43+
- **file_type** - media type (image/video)
44+
- **status** - validation status, `a - accepted`, `d - declined`, `v - waits for validation`
45+
- **upload_date** - file upload date
46+
- **update_date** - file update date
47+
- **rebound_project** - project / bucket where the file is located in case of file transfer
48+
- **rebound** - file project / bucket (in terms of storage system)
49+
50+
## Accessing a file
51+
52+
Since the project in **wip** state there are some temprorary solutions.
53+
We have a situation when we want to move some files to other project.
54+
Since proper object movement is not implemented yet we could use a trick to just associate
55+
file project to the new one but since file is stored in original bucket we have to specify it.
56+
57+
Using orm / db model you might encounter **rebound** field as well.
58+
This one is proper and intentional and used for rebounding file lookup in cases when uploaded file marked as duplicated one.
59+
Since we use best quality for all the duplicates this best one has related_duplicates count and all the duplicats have this rebound field set with id of "original" file.
60+
61+
So in order to access a file you must follow this: `project_<rebound_project_id | project_id>/<rebound_id | file_id>` object lookup.
62+
63+
When exporting datasets, rebound is resolved internally. Each exported entry is final, and you can access it directly via its id and extension (from file_name).

docs/downloads.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,9 @@ In that case, the row turns red and the **result message** column shows what wen
3636
## ➕ Only New Files
3737
When re-downloading later (e.g., the next day), you might want to include only new files.
3838
Enable the `not downloaded before` flag to skip any files already included in past archives (based on the filters).
39+
40+
---
41+
42+
### ✅ Next Step
43+
44+
[Annotation](/docs/annotation.md)

0 commit comments

Comments
 (0)