> ## Documentation Index
> Fetch the complete documentation index at: https://docs.labelbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ontology examples

> Complex examples of creating a variety of ontologies.

## Image

<CodeGroup>
  ```python Python theme={null}
  ontology_builder = lb.OntologyBuilder(
      classifications=[  # list of classification objects
          lb.Classification(class_type=lb.Classification.Type.RADIO,
                            name="radio_question",
                            options=[
                                lb.Option(value="first_radio_answer"),
                                lb.Option(value="second_radio_answer")
                            ]),
          lb.Classification(class_type=lb.Classification.Type.CHECKLIST,
                            name="checklist_question",
                            options=[
                                lb.Option(value="first_checklist_answer"),
                                lb.Option(value="second_checklist_answer")
                            ]),
          lb.Classification(class_type=lb.Classification.Type.TEXT,
                            name="free_text"),
          lb.Classification(
              class_type=lb.Classification.Type.RADIO,
              name="nested_radio_question",
              options=[
                  lb.Option("first_radio_answer",
                            options=[
                                lb.Classification(
                                    class_type=lb.Classification.Type.RADIO,
                                    name="sub_radio_question",
                                    options=[lb.Option("first_sub_radio_answer")])
                            ])
              ]),
          lb.Classification(
              class_type=lb.Classification.Type.CHECKLIST,
              name="nested_checklist_question",
              options=[
                  lb.Option(
                      "first_checklist_answer",
                      options=[
                          lb.Classification(
                              class_type=lb.Classification.Type.CHECKLIST,
                              name="sub_checklist_question",
                              options=[lb.Option("first_sub_checklist_answer")])
                      ])
              ]),
      ],
      tools=[  # List of Tool objects
          lb.Tool(tool=lb.Tool.Type.BBOX, name="bounding_box"),
          lb.Tool(tool=lb.Tool.Type.BBOX,
                  name="bbox_with_radio_subclass",
                  classifications=[
                      lb.Classification(
                          class_type=lb.Classification.Type.RADIO,
                          name="sub_radio_question",
                          options=[lb.Option(value="first_sub_radio_answer")]),
                  ]),
          lb.Tool(tool=lb.Tool.Type.POLYGON, name="polygon"),
          lb.Tool(tool=lb.Tool.Type.RASTER_SEGMENTATION, name="mask"),
        	lb.Tool(tool=lb.Tool.Type.RASTER_SEGMENTATION,
                  name="mask_with_text_subclass",
                  classifications=[
                      lb.Classification(
                          class_type=lb.Classification.Type.TEXT,
                          name="sub_free_text")
                  ]),
          lb.Tool(tool=lb.Tool.Type.POINT, name="point"),
          lb.Tool(tool=lb.Tool.Type.LINE, name="polyline"),
          lb.Tool(tool=lb.Tool.Type.RELATIONSHIP, name="relationship")
      ])

  ontology = client.create_ontology("Image Annotation Import Demo Ontology",
                                    ontology_builder.asdict(),
                                    media_type=lb.MediaType.Image)
  ```
</CodeGroup>

## Video

<CodeGroup>
  ```python Python theme={null}
  ontology_builder = lb.OntologyBuilder(
      tools=[
          lb.Tool(tool=lb.Tool.Type.BBOX, name="bbox_video"),
          lb.Tool(tool=lb.Tool.Type.POINT, name="point_video"),
          lb.Tool(tool=lb.Tool.Type.LINE, name="line_video_frame"),
          lb.Tool(tool=lb.Tool.Type.RASTER_SEGMENTATION, name="video_mask"),
          lb.Tool(
            tool=lb.Tool.Type.BBOX, name="bbox_class",
            classifications=[
              lb.Classification(
                class_type=lb.Classification.Type.RADIO,
                name="checklist_class",
                scope = lb.Classification.Scope.INDEX,
                options=[
                  lb.Option(value="first_checklist_answer"),
                  lb.Option(value="second_checklist_answer")
                ]
              )
            ]
          ),
        	lb.Tool(tool=lb.Tool.Type.RASTER_SEGMENTATION,
                  name="mask_with_text_subclass",
                  classifications=[
                      lb.Classification(
                          class_type=lb.Classification.Type.TEXT,
                          name="sub_free_text")
                      ]
                  )
      ],
      classifications=[
          lb.Classification(
              class_type=lb.Classification.Type.CHECKLIST,
              name="checklist_class",
              scope = lb.Classification.Scope.INDEX, ## Need to defined scope for frame classifications
              options=[
                  lb.Option(value="first_checklist_answer"),
                  lb.Option(value="second_checklist_answer")
              ]
          ),
          lb.Classification(
              class_type=lb.Classification.Type.RADIO,
              name="radio_class",
              scope = lb.Classification.Scope.INDEX,
              options=[
                  lb.Option(value="first_radio_answer"),
                  lb.Option(value="second_radio_answer")
              ]
          ),
           lb.Classification(
                class_type=lb.Classification.Type.RADIO,
                name="nested_radio_question",
                options=[
                    lb.Option("first_radio_answer",
                          options=[
                              lb.Classification(
                                  class_type=lb.Classification.Type.RADIO,
                                  name="sub_radio_question",
                                  options=[lb.Option("first_sub_radio_answer")]
                              )
                          ]
                    )
                ]
          ),
          lb.Classification(
            class_type=lb.Classification.Type.CHECKLIST,
            name="nested_checklist_question",
            options=[
                lb.Option("first_checklist_answer",
                  options=[
                    lb.Classification(
                        class_type=lb.Classification.Type.CHECKLIST,
                        name="sub_checklist_question",
                        options=[lb.Option("first_sub_checklist_answer")]
                    )
                ]
              )
            ]
          ),
          lb.Classification(
            class_type=lb.Classification.Type.RADIO,
            name="radio_class_global",
            options=[
                  lb.Option(value="first_radio_answer"),
                  lb.Option(value="second_radio_answer")
              ]
          ),
          lb.Classification(
            class_type=lb.Classification.Type.CHECKLIST,
            name="checklist_class_global",
            options=[
                  lb.Option(value="first_checklist_answer"),
                  lb.Option(value="second_checklist_answer")
            ]
          ),
          lb.Classification(
            class_type=lb.Classification.Type.TEXT,
            name="free_text"
          )
      ]
  )

  ontology = client.create_ontology("Video Annotation Import Demo Ontology",
                                    ontology_builder.asdict(),
                                    media_type=lb.MediaType.Video)
  ```
</CodeGroup>

## Text

<CodeGroup>
  ```python Python theme={null}

  ontology_builder = lb.OntologyBuilder(
    classifications=[ # List of Classification objects
      lb.Classification(
        class_type=lb.Classification.Type.RADIO,
        name="radio_question",
        options=[lb.Option(value="first_radio_answer")]
      ),
      lb.Classification(
        class_type=lb.Classification.Type.RADIO,
        name="nested_radio_question",
        options=[
          lb.Option(value="first_radio_answer",
            options=[
                lb.Classification(
                  class_type=lb.Classification.Type.RADIO,
                  name="sub_radio_question",
                  options=[
                    lb.Option(value="first_sub_radio_answer")
                  ]
              ),
            ]
          ),
        ],
      ),
       lb.Classification(
        class_type=lb.Classification.Type.CHECKLIST,
        name="nested_checklist_question",
        options=[
            lb.Option("first_checklist_answer",
              options=[
                lb.Classification(
                    class_type=lb.Classification.Type.CHECKLIST,
                    name="sub_checklist_question",
                    options=[lb.Option("first_sub_checklist_answer")]
                )
            ]
          )
        ]
      ),
      lb.Classification(
        class_type=lb.Classification.Type.CHECKLIST,
        name="checklist_question",
        options=[
          lb.Option(value="first_checklist_answer"),
          lb.Option(value="second_checklist_answer"),
          lb.Option(value="third_checklist_answer")
        ]
      ),
       lb.Classification(
        class_type=lb.Classification.Type.TEXT,
        name="free_text"
      )
    ],
    tools=[ # List of Tool objects
           lb.Tool(
              tool=lb.Tool.Type.NER,
              name="named_entity"
            ),
           lb.Tool(
              tool=lb.Tool.Type.RELATIONSHIP,
              name="relationship"
            )
      ]
  )
  ontology = client.create_ontology("Ontology Text Annotations", ontology_builder.asdict())
  ```
</CodeGroup>

## Geospatial

<CodeGroup>
  ```python Python theme={null}
  ontology_builder = lb.OntologyBuilder(
      tools=[
          lb.Tool(tool=lb.Tool.Type.POINT, name="point_geo"),
          lb.Tool(tool=lb.Tool.Type.LINE, name="polyline_geo"),
          lb.Tool(tool=lb.Tool.Type.POLYGON, name="polygon_geo"),
          lb.Tool(tool=lb.Tool.Type.POLYGON, name="polygon_geo_2"),
          lb.Tool(tool=lb.Tool.Type.BBOX, name="bbox_geo"),
          lb.Tool(
            tool=lb.Tool.Type.BBOX,
            name="bbox_checklist_geo",
            classifications=[
                  lb.Classification(
                      class_type=lb.Classification.Type.CHECKLIST,
                      name="checklist_class_name",
                      options=[
                        lb.Option(value="first_checklist_answer")
                      ]
                  ),
              ]
            ),
          lb.Tool(
            tool=lb.Tool.Type.BBOX,
            name="bbox_text_geo",
            classifications=[
                  lb.Classification(
                      class_type=lb.Classification.Type.TEXT,
                      name="free_text_geo"
                  ),
              ]
            )
        ],
        classifications = [
            lb.Classification(
                class_type=lb.Classification.Type.CHECKLIST,
                name="checklist_question_geo",
                options=[
                    lb.Option(value="first_checklist_answer"),
                    lb.Option(value="second_checklist_answer"),
                    lb.Option(value="third_checklist_answer")
                ]
            ),
            lb.Classification(
                class_type=lb.Classification.Type.RADIO,
                name="radio_question_geo",
                options=[
                    lb.Option(value="first_radio_answer")
                ]
            ),

          lb.Classification(
            class_type=lb.Classification.Type.RADIO,
            name="nested_radio_question",
            options=[
              lb.Option(value="first_radio_answer",
                options=[
                    lb.Classification(
                      class_type=lb.Classification.Type.RADIO,
                      name="sub_radio_question",
                      options=[
                        lb.Option(value="first_sub_radio_answer")
                      ]
                  ),
                ]
              ),
            ],
          ),
          lb.Classification(class_type=lb.Classification.Type.TEXT,
                            name="free_text"),
          lb.Classification(
            class_type=lb.Classification.Type.CHECKLIST,
            name="nested_checklist_question",
            options=[
                lb.Option("first_checklist_answer",
                  options=[
                    lb.Classification(
                        class_type=lb.Classification.Type.CHECKLIST,
                        name="sub_checklist_question",
                        options=[lb.Option("first_sub_checklist_answer")]
                    )
                ]
              )
            ]
        )
      ]
  )

  ontology = client.create_ontology("Ontology Geospatial Annotations", ontology_builder.asdict(), media_type=lb.MediaType.Geospatial_Tile)
  ```
</CodeGroup>

## Document

<CodeGroup>
  ```python Python theme={null}
  ontology_builder = lb.OntologyBuilder(
    classifications=[ # List of Classification objects
      lb.Classification(
        class_type=lb.Classification.Type.RADIO,
        name="radio_question",
        scope = lb.Classification.Scope.GLOBAL,
        options=[
          lb.Option(value="first_radio_answer"),
          lb.Option(value="second_radio_answer")
        ]
      ),
      lb.Classification(
        class_type=lb.Classification.Type.CHECKLIST,
        name="checklist_question",
        scope = lb.Classification.Scope.GLOBAL,
        options=[
          lb.Option(value="first_checklist_answer"),
          lb.Option(value="second_checklist_answer")
        ]
      ),
      lb.Classification(
        class_type=lb.Classification.Type.TEXT,
        name="free_text",
        scope = lb.Classification.Scope.GLOBAL
      ),
      lb.Classification(
          class_type=lb.Classification.Type.RADIO,
          name="nested_radio_question",
          scope = lb.Classification.Scope.GLOBAL,
          options=[
              lb.Option("first_radio_answer",
                  options=[
                      lb.Classification(
                          class_type=lb.Classification.Type.RADIO,
                          name="sub_radio_question",
                          options=[lb.Option("first_sub_radio_answer")]
                      )
                  ])
            ]
      ),
      lb.Classification(
        class_type=lb.Classification.Type.CHECKLIST,
        name="nested_checklist_question",
        scope = lb.Classification.Scope.GLOBAL,
        options=[
            lb.Option("first_checklist_answer",
              options=[
                lb.Classification(
                    class_type=lb.Classification.Type.CHECKLIST,
                    name="sub_checklist_question",
                    options=[lb.Option("first_sub_checklist_answer")]
                )
            ])
        ]
      ),
    ],
    tools=[ # List of Tool objects
      lb.Tool( tool=lb.Tool.Type.BBOX,name="bounding_box"),
      lb.Tool(tool=lb.Tool.Type.NER, name="named_entity"),
      lb.Tool(tool=lb.Tool.Type.RELATIONSHIP,name="relationship"),
      lb.Tool(tool=lb.Tool.Type.NER,
              name="ner_with_checklist_subclass",
              classifications=[
                lb.Classification(
                  class_type=lb.Classification.Type.CHECKLIST,
                  name="sub_checklist_question",
                  options=[
                    lb.Option(value="first_sub_checklist_answer")
                  ]
                )
            ]),
      lb.Tool( tool=lb.Tool.Type.BBOX,
              name="bbox_with_radio_subclass",
              classifications=[
                lb.Classification(
                    class_type=lb.Classification.Type.RADIO,
                    name="sub_radio_question",
                    options=[
                      lb.Option(
                        value="first_sub_radio_answer" ,
                        options=[
                          lb.Classification(
                            class_type=lb.Classification.Type.RADIO,
                            name="second_sub_radio_question",
                            options=[lb.Option("second_sub_radio_answer")]
                          )]
                      )]
                  )]
        )]
  )

  ontology = client.create_ontology("Document Annotation Import Demo",
                                    ontology_builder.asdict(),
                                    media_type=lb.MediaType.Document)
  ```
</CodeGroup>

## Audio

<CodeGroup>
  ```python Python theme={null}
  ontology_builder = lb.OntologyBuilder(
    classifications=[
      lb.Classification(
        class_type=lb.Classification.Type.TEXT,
        name="text_audio"),
      lb.Classification(
        class_type=lb.Classification.Type.CHECKLIST,
        name="checklist_audio",
        options=[
          lb.Option(value="first_checklist_answer"),
          lb.Option(value="second_checklist_answer")
        ]
      ),
      lb.Classification(
        class_type=lb.Classification.Type.RADIO,
        name="radio_audio",
        options=[
          lb.Option(value="first_radio_answer"),
          lb.Option(value="second_radio_answer")
        ]
      )
    ]
  )

  ontology = client.create_ontology("Ontology Audio Annotations",
                                    ontology_builder.asdict(),
                                    media_type=lb.MediaType.Audio)
  ```
</CodeGroup>

## HTML

<CodeGroup>
  ```python Python theme={null}
  ontology_builder = lb.OntologyBuilder(
    classifications=[
      lb.Classification(
        class_type=lb.Classification.Type.TEXT,
        name="text_html"),
      lb.Classification(
        class_type=lb.Classification.Type.CHECKLIST,
        name="checklist_html",
        options=[
          lb.Option(value="first_checklist_answer"),
          lb.Option(value="second_checklist_answer")
        ]
      ),
      lb.Classification(
        class_type=lb.Classification.Type.RADIO,
        name="radio_html",
        options=[
          lb.Option(value="first_radio_answer"),
          lb.Option(value="second_radio_answer")
        ]
      )
    ]
  )

  ontology = client.create_ontology("Ontology HTML Annotations", ontology_builder.asdict(), media_type=lb.MediaType.Html)
  ```
</CodeGroup>

## Conversational

<CodeGroup>
  ```python Python theme={null}
  ontology_builder = lb.OntologyBuilder(
    tools=[
      lb.Tool(tool=lb.Tool.Type.NER,name="ner"),
      lb.Tool(tool=lb.Tool.Type.RELATIONSHIP,name="relationship")
      ],
    classifications=[
      lb.Classification(
        class_type=lb.Classification.Type.TEXT,
        scope=lb.Classification.Scope.INDEX,  # Remove this line or set scope to "GLOBAL" if importing global text annotations
        instructions="text_convo"),
      lb.Classification(
        class_type=lb.Classification.Type.CHECKLIST,
        scope=lb.Classification.Scope.INDEX,  # Remove this line or set scope to "GLOBAL" if importing global checklist annotations
        instructions="checklist_convo",
        options=[
          lb.Option(value="first_checklist_answer"),
          lb.Option(value="second_checklist_answer")
        ]
      ),
      lb.Classification(
        class_type=lb.Classification.Type.RADIO,
        instructions="radio_convo",
        scope=lb.Classification.Scope.INDEX, # Remove this line or set scope to "GLOBAL" if importing global radio  annotations
        options=[
          lb.Option(value="first_radio_answer"),
          lb.Option(value="second_radio_answer")
        ]
      )
    ]
  )

  ontology = client.create_ontology("Ontology Conversation Annotations", ontology_builder.asdict())
  ```
</CodeGroup>

## Model Chat Evaluation

<CodeGroup>
  ```python Python theme={null}
  ontology_builder = lb.OntologyBuilder(
      tools=[
          lb.Tool(
              tool=lb.Tool.Type.MESSAGE_SINGLE_SELECTION,
              name="single select feature",
          ),
          lb.Tool(
              tool=lb.Tool.Type.MESSAGE_MULTI_SELECTION,
              name="multi select feature",
          ),
          lb.Tool(tool=lb.Tool.Type.MESSAGE_RANKING, name="ranking feature"),
      ],
      classifications=[
          lb.Classification(
              class_type=lb.Classification.Type.CHECKLIST,
              name="checklist feature",
              options=[
                  lb.Option(value="option 1", label="option 1"),
                  lb.Option(value="option 2", label="option 2"),
              ],
          ),
          lb.Classification(
              class_type=lb.Classification.Type.RADIO,
              name="radio_question",
              options=[
                  lb.Option(value="first_radio_answer"),
                  lb.Option(value="second_radio_answer"),
              ],
          ),
      ],
  )

  # Create ontology
  ontology = client.create_ontology(
      "MCE ontology",
      ontology_builder.asdict(),
      media_type=lb.MediaType.Conversational,
      ontology_kind=lb.OntologyKind.ModelEvaluation,
  )
  ```
</CodeGroup>
