The Annotate SDK revolves around three major concepts: Projects, Datasets, and Ontologies. Each of these concepts is linked to a class that allows you to interact with them using the Annotate SDK. For example, the Project has an associated Project class and the Dataset has an associated Dataset class.

Install the Annotate SDK by following the Installation guide or go to the Authentication page to get started with the Encord Annotate SDK.

Entity Relationships

The following diagram shows how entities in Encord are organized.

SDK Data Structure

The following diagram shows how data in the Encord SDK is structured for each labeled Data Unit.


Users

Users are people authenticated to interact with the Encord platform. Users can access resources and capabilities that are also available on the platform. For a Web app specific description of capabilities, go to the Annotate page.

For collaborative teams using our SDK, we recommend creating shared service accounts and creating SSH keys for those shared accounts. For example, to have several people create ontologies, datasets, and projects programmatically, create an email account for use with Encord (for example, encord-admins@mycompany.com) and generate an SSH for that email account.

Projects

The space where labels, annotations, and reviews live. Projects can be linked to multiple datasets. For a Web-app specific introduction, go to the Projects page.


Datasets

Datasets are subsets of data you upload to Encord. Datasets are attached to, and can be reused across multiple Projects.

Learn more about Datasets in Encord here.

Each Dataset is identified using a unique "<dataset_hash>" - a unique ID that can be found within the dataset’s Settings, or the URL in the Encord platform when the dataset is being viewed, as shown below.

Data units

Datasets are composed of data units - packages of data that constitute a single annotation task. For example, a video, a single image, an image group, or a DICOM series. Data units are identified using their <data_hash>, which is found in the URL when the data unit is open in your browser, as shown below.

app.encord.com/label_editor/\<data_hash>&\<project_hash>/0/0 or app.us.encord.com/label_editor/\<data_hash>&\<project_hash>/0/0

The <data_unit_hash> and the <project_hash> are both shown in the URl when a data unit is open in the browser. They are separated by the ’&’ symbol.

Label Row

Label Rows are collections of labels belonging to a particular data unit in a Project.


Branches

All labels are created on a branch. In Consensus Projects, each annotator works on their own separate branch to create labels. In Non-Consensus Projects, all labels are created on the main branch.

Learn more about Consensus Projects here.


Ontology

Ontologies are hierarchical structures that define the top-level concepts and categories in your data, along with nested attributes for detailed annotations. They consist of Classes at the top level, which can be either Objects or Classifications.

Learn more about Ontologies here.