sanskrit_data.schema.ullekhanam

Intro

  • Annotations are stored in a directed acyclic graph, for example - a book portion having a TextAnnotation having PadaAnnotations having SamaasaAnnotations.

    • Some Annotations (eg. SandhiAnnotation, TextAnnotation) can have multiple “targets” (ie. other objects being annotated).
    • Rather than a simple tree, we end up with a Directed Acyclic Graph (DAG) of Annotation objects.
  • JSON schema mindmap here (Updated as needed).

  • For general context and class diagram, refer to schema.

class sanskrit_data.schema.ullekhanam.Annotation[source]

Bases: sanskrit_data.schema.common.JsonObjectWithTarget

classmethod get_allowed_target_classes()[source]
schema = {'required': ['source', 'targets', 'jsonClass'], 'type': 'object', 'description': 'A JsonObject with a target field.', 'properties': {'source': {'properties': {'source_type': {'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this annotation come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'id': {'type': 'string', 'description': 'Something to identify the particular annotation source.'}, 'jsonClass': {'type': 'string'}}, 'required': ['source_type', 'jsonClass'], 'type': 'object', 'description': 'Source of the annotation which contains this node.', 'jsonClass': {'enum': ['AnnotationSource']}}, 'targets': {'minLength': 1, 'type': 'array', 'description': 'The entity being annotated.', 'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'container_id': {'type': 'string'}, 'jsonClass': {'enum': ['Target'], 'type': 'string'}}}}, 'jsonClass': {'enum': ['Annotation'], 'type': 'string'}}}
set_base_details(targets, source)[source]
validate(db_interface=None)[source]
class sanskrit_data.schema.ullekhanam.AnnotationSource[source]

Bases: sanskrit_data.schema.common.JsonObject

classmethod from_details(source_type, id)[source]
schema = {'jsonClass': {'enum': ['AnnotationSource']}, 'required': ['source_type', 'jsonClass'], 'type': 'object', 'description': 'Source of the annotation which contains this node.', 'properties': {'source_type': {'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this annotation come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'id': {'type': 'string', 'description': 'Something to identify the particular annotation source.'}, 'jsonClass': {'type': 'string'}}}
class sanskrit_data.schema.ullekhanam.CommentAnnotation[source]

Bases: sanskrit_data.schema.ullekhanam.TextAnnotation

classmethod get_allowed_target_classes()[source]
schema = {'required': ['content', 'source', 'targets', 'jsonClass'], 'type': 'object', 'description': 'A comment that can be associated with nearly any Annotation or BookPortion.', 'properties': {'content': {'required': ['jsonClass'], 'type': 'object', 'properties': {'jsonClass': {'enum': ['Text'], 'type': 'string'}, 'script_renderings': {'items': {'type': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string'}}}}, 'type': 'array'}, 'language_code': {'type': 'string'}}}, 'source': {'description': 'Source of the annotation which contains this node.', 'required': ['source_type', 'jsonClass'], 'type': 'object', 'properties': {'source_type': {'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this annotation come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'id': {'type': 'string', 'description': 'Something to identify the particular annotation source.'}, 'jsonClass': {'type': 'string'}}, 'jsonClass': {'enum': ['AnnotationSource']}}, 'targets': {'minLength': 1, 'type': 'array', 'description': 'The entity being annotated.', 'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'container_id': {'type': 'string'}, 'jsonClass': {'enum': ['Target'], 'type': 'string'}}}}, 'jsonClass': {'enum': ['TextAnnotation', 'Annotation'], 'type': 'string'}}}
class sanskrit_data.schema.ullekhanam.ImageAnnotation[source]

Bases: sanskrit_data.schema.ullekhanam.Annotation

Mark a certain fragment of an image.

An introductory video

classmethod from_details(targets, source)[source]
classmethod get_allowed_target_classes()[source]
schema = {'required': ['source', 'targets', 'jsonClass'], 'type': 'object', 'description': 'A rectangle within an image, picked by a particular annotation source.', 'properties': {'source': {'jsonClass': {'enum': ['AnnotationSource']}, 'required': ['source_type', 'jsonClass'], 'type': 'object', 'properties': {'source_type': {'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this annotation come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'id': {'type': 'string', 'description': 'Something to identify the particular annotation source.'}, 'jsonClass': {'type': 'string'}}, 'description': 'Source of the annotation which contains this node.'}, 'targets': {'items': {'required': ['container_id', 'rectangle', 'jsonClass'], 'type': 'object', 'description': 'The rectangle within the image being targetted.', 'properties': {'container_id': {'type': 'string'}, 'rectangle': {'required': ['y1', 'h', 'x1', 'w', 'jsonClass'], 'type': 'object', 'description': 'A rectangle within an image.', 'properties': {'y1': {'type': 'integer'}, 'h': {'type': 'integer'}, 'x1': {'type': 'integer'}, 'w': {'type': 'integer'}, 'jsonClass': {'enum': ['Rectangle'], 'type': 'string'}}}, 'jsonClass': {'enum': ['ImageTarget', 'Target'], 'type': 'string'}}}, 'type': 'array', 'description': 'The entity being annotated.', 'minLength': 1}, 'jsonClass': {'enum': ['Annotation', 'ImageAnnotation'], 'type': 'string'}}}
target_class

alias of ImageTarget

class sanskrit_data.schema.ullekhanam.ImageTarget[source]

Bases: sanskrit_data.schema.common.Target

classmethod from_details(container_id, rectangle)[source]
schema = {'required': ['container_id', 'rectangle', 'jsonClass'], 'type': 'object', 'description': 'The rectangle within the image being targetted.', 'properties': {'container_id': {'type': 'string'}, 'rectangle': {'required': ['y1', 'h', 'x1', 'w', 'jsonClass'], 'type': 'object', 'description': 'A rectangle within an image.', 'properties': {'y1': {'type': 'integer'}, 'h': {'type': 'integer'}, 'x1': {'type': 'integer'}, 'w': {'type': 'integer'}, 'jsonClass': {'enum': ['Rectangle'], 'type': 'string'}}}, 'jsonClass': {'enum': ['ImageTarget', 'Target'], 'type': 'string'}}}
class sanskrit_data.schema.ullekhanam.PadaAnnotation[source]

Bases: sanskrit_data.schema.ullekhanam.Annotation

classmethod from_details(targets, source, word, root)[source]
classmethod get_allowed_target_classes()[source]
schema = {'required': ['source', 'targets', 'jsonClass'], 'type': 'object', 'description': 'A grammatical pada - subanta or tiNanta.', 'properties': {'source': {'jsonClass': {'enum': ['AnnotationSource']}, 'required': ['source_type', 'jsonClass'], 'type': 'object', 'properties': {'source_type': {'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this annotation come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'id': {'type': 'string', 'description': 'Something to identify the particular annotation source.'}, 'jsonClass': {'type': 'string'}}, 'description': 'Source of the annotation which contains this node.'}, 'word': {'type': {'required': ['jsonClass'], 'type': 'object', 'properties': {'language_code': {'type': 'string'}, 'script_renderings': {'items': {'type': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string'}}}}, 'type': 'array'}, 'jsonClass': {'enum': ['Text'], 'type': 'string'}}}}, 'targets': {'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'description': 'A way to specify a particular substring within a string.', 'properties': {'shabda_id': {'type': 'string', 'description': "Format: pada_index.shabda_index or just pada_index.Suppose that some shabda in 'r\xc4\x81g\xc4\x81dirog\xc4\x81n satat\xc4\x81nu\xe1\xb9\xa3akt\xc4\x81n' is being targetted. This has the following pada-vigraha: r\xc4\x81ga [comp.]-\xc4\x81di [comp.]-roga [ac.p.m.] satata [comp.]-anu\xe1\xb9\xa3a\xc3\xb1j [ac.p.m.].Then, r\xc4\x81ga has the id 1.1. roga has id 1.3. satata has the id 2.1."}, 'container_id': {'type': 'string'}, 'offset_address': {'required': ['jsonClass'], 'type': 'object', 'description': 'A way to specify a substring.', 'properties': {'start': {'type': 'integer'}, 'end': {'type': 'integer'}, 'jsonClass': {'enum': ['TextOffsetAddress'], 'type': 'string'}}}, 'jsonClass': {'enum': ['TextTarget', 'Target'], 'type': 'string'}}}, 'type': 'array', 'description': 'The entity being annotated.', 'minLength': 1}, 'root': {'type': {'required': ['jsonClass'], 'type': 'object', 'properties': {'language_code': {'type': 'string'}, 'script_renderings': {'items': {'type': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string'}}}}, 'type': 'array'}, 'jsonClass': {'enum': ['Text'], 'type': 'string'}}}}, 'jsonClass': {'enum': ['Annotation', 'PadaAnnotation'], 'type': 'string'}}}
set_base_details(targets, source, word, root)[source]
target_class

alias of TextTarget

class sanskrit_data.schema.ullekhanam.Rectangle[source]

Bases: sanskrit_data.schema.common.JsonObject

classmethod from_details(x=-1, y=-1, w=-1, h=-1, score=0.0)[source]
schema = {'required': ['y1', 'h', 'x1', 'w', 'jsonClass'], 'type': 'object', 'description': 'A rectangle within an image.', 'properties': {'y1': {'type': 'integer'}, 'h': {'type': 'integer'}, 'x1': {'type': 'integer'}, 'w': {'type': 'integer'}, 'jsonClass': {'enum': ['Rectangle'], 'type': 'string'}}}
class sanskrit_data.schema.ullekhanam.SamaasaAnnotation[source]

Bases: sanskrit_data.schema.ullekhanam.Annotation

classmethod from_details(targets, source, combined_string, samaasa_type='UNK')[source]
classmethod get_allowed_target_classes()[source]
schema = {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'component_padas': {'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'container_id': {'type': 'string'}, 'jsonClass': {'enum': ['Target'], 'type': 'string'}}}, 'type': 'array', 'description': 'Pointers to PadaAnnotation objects corresponding to components of the samasta-pada'}, 'container_id': {'type': 'string'}, 'type': {'type': 'string'}, 'jsonClass': {'enum': ['SamaasaAnnotation', 'Target'], 'type': 'string'}}}
validate(db_interface=None)[source]
class sanskrit_data.schema.ullekhanam.SandhiAnnotation[source]

Bases: sanskrit_data.schema.ullekhanam.Annotation

classmethod from_details(targets, source, combined_string, sandhi_type='UNK')[source]
classmethod get_allowed_target_classes()[source]
schema = {'required': ['source', 'combined_string', 'targets', 'jsonClass'], 'type': 'object', 'description': 'A JsonObject with a target field.', 'properties': {'source': {'jsonClass': {'enum': ['AnnotationSource']}, 'required': ['source_type', 'jsonClass'], 'type': 'object', 'properties': {'source_type': {'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this annotation come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'id': {'type': 'string', 'description': 'Something to identify the particular annotation source.'}, 'jsonClass': {'type': 'string'}}, 'description': 'Source of the annotation which contains this node.'}, 'jsonClass': {'enum': ['SandhiAnnotation', 'Annotation'], 'type': 'string'}, 'combined_string': {'type': {'required': ['jsonClass'], 'type': 'object', 'properties': {'language_code': {'type': 'string'}, 'script_renderings': {'items': {'type': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string'}}}}, 'type': 'array'}, 'jsonClass': {'enum': ['Text'], 'type': 'string'}}}}, 'targets': {'minLength': 1, 'type': 'array', 'description': 'The entity being annotated.', 'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'container_id': {'type': 'string'}, 'jsonClass': {'enum': ['Target'], 'type': 'string'}}}}, 'sandhi_type': {'type': 'string'}}}
class sanskrit_data.schema.ullekhanam.SubantaAnnotation[source]

Bases: sanskrit_data.schema.ullekhanam.PadaAnnotation

classmethod from_details(targets, source, word, root, linga, vibhakti, vachana)[source]
schema = {'required': ['source', 'targets', 'jsonClass'], 'type': 'object', 'description': 'Anything ending with a sup affix. Includes avyaya-s.', 'properties': {'word': {'type': {'required': ['jsonClass'], 'type': 'object', 'properties': {'jsonClass': {'enum': ['Text'], 'type': 'string'}, 'script_renderings': {'items': {'type': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string'}}}}, 'type': 'array'}, 'language_code': {'type': 'string'}}}}, 'linga': {'enum': ['strii', 'pum', 'napum', 'avyaya'], 'type': 'string'}, 'source': {'description': 'Source of the annotation which contains this node.', 'required': ['source_type', 'jsonClass'], 'type': 'object', 'properties': {'source_type': {'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this annotation come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'id': {'type': 'string', 'description': 'Something to identify the particular annotation source.'}, 'jsonClass': {'type': 'string'}}, 'jsonClass': {'enum': ['AnnotationSource']}}, 'vachana': {'enum': [1, 2, 3], 'type': 'integer'}, 'vibhakti': {'enum': ['1', '2', '3', '4', '5', '6', '7', '1.sambodhana'], 'type': 'string'}, 'root': {'type': {'required': ['jsonClass'], 'type': 'object', 'properties': {'jsonClass': {'enum': ['Text'], 'type': 'string'}, 'script_renderings': {'items': {'type': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string'}}}}, 'type': 'array'}, 'language_code': {'type': 'string'}}}}, 'targets': {'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'description': 'A way to specify a particular substring within a string.', 'properties': {'shabda_id': {'type': 'string', 'description': "Format: pada_index.shabda_index or just pada_index.Suppose that some shabda in 'r\xc4\x81g\xc4\x81dirog\xc4\x81n satat\xc4\x81nu\xe1\xb9\xa3akt\xc4\x81n' is being targetted. This has the following pada-vigraha: r\xc4\x81ga [comp.]-\xc4\x81di [comp.]-roga [ac.p.m.] satata [comp.]-anu\xe1\xb9\xa3a\xc3\xb1j [ac.p.m.].Then, r\xc4\x81ga has the id 1.1. roga has id 1.3. satata has the id 2.1."}, 'container_id': {'type': 'string'}, 'offset_address': {'required': ['jsonClass'], 'type': 'object', 'description': 'A way to specify a substring.', 'properties': {'start': {'type': 'integer'}, 'end': {'type': 'integer'}, 'jsonClass': {'enum': ['TextOffsetAddress'], 'type': 'string'}}}, 'jsonClass': {'enum': ['TextTarget', 'Target'], 'type': 'string'}}}, 'type': 'array', 'description': 'The entity being annotated.', 'minLength': 1}, 'jsonClass': {'enum': ['SubantaAnnotation', 'Annotation', 'PadaAnnotation'], 'type': 'string'}}}
class sanskrit_data.schema.ullekhanam.TextAnnotation[source]

Bases: sanskrit_data.schema.ullekhanam.Annotation

classmethod from_details(targets, source, content)[source]
classmethod get_allowed_target_classes()[source]
schema = {'required': ['content', 'source', 'targets', 'jsonClass'], 'type': 'object', 'description': 'Annotation of some (sub)text from within the object (image or another text) being annotated.', 'properties': {'content': {'required': ['jsonClass'], 'type': 'object', 'properties': {'language_code': {'type': 'string'}, 'script_renderings': {'items': {'type': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string'}}}}, 'type': 'array'}, 'jsonClass': {'enum': ['Text'], 'type': 'string'}}}, 'source': {'jsonClass': {'enum': ['AnnotationSource']}, 'required': ['source_type', 'jsonClass'], 'type': 'object', 'properties': {'source_type': {'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this annotation come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'id': {'type': 'string', 'description': 'Something to identify the particular annotation source.'}, 'jsonClass': {'type': 'string'}}, 'description': 'Source of the annotation which contains this node.'}, 'targets': {'minLength': 1, 'type': 'array', 'description': 'The entity being annotated.', 'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'container_id': {'type': 'string'}, 'jsonClass': {'enum': ['Target'], 'type': 'string'}}}}, 'jsonClass': {'enum': ['TextAnnotation', 'Annotation'], 'type': 'string'}}}
class sanskrit_data.schema.ullekhanam.TextOffsetAddress[source]

Bases: sanskrit_data.schema.common.JsonObject

classmethod from_details(start, end)[source]
schema = {'required': ['jsonClass'], 'type': 'object', 'description': 'A way to specify a substring.', 'properties': {'start': {'type': 'integer'}, 'end': {'type': 'integer'}, 'jsonClass': {'enum': ['TextOffsetAddress'], 'type': 'string'}}}
class sanskrit_data.schema.ullekhanam.TextSambandhaAnnotation[source]

Bases: sanskrit_data.schema.ullekhanam.Annotation

classmethod get_allowed_target_classes()[source]
schema = {'required': ['source', 'combined_string', 'targets', 'jsonClass'], 'type': 'object', 'description': 'Describes connection between two text portions. Such connection is directional (ie it connects words in a source sentence to words in a target sentence.)', 'properties': {'category': {'type': 'string'}, 'source_text_padas': {'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'container_id': {'type': 'string'}, 'jsonClass': {'enum': ['Target'], 'type': 'string'}}}, 'type': 'array', 'description': 'The entity being annotated.'}, 'source': {'jsonClass': {'enum': ['AnnotationSource']}, 'required': ['source_type', 'jsonClass'], 'type': 'object', 'properties': {'source_type': {'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this annotation come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'id': {'type': 'string', 'description': 'Something to identify the particular annotation source.'}, 'jsonClass': {'type': 'string'}}, 'description': 'Source of the annotation which contains this node.'}, 'target_text_padas': {'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'container_id': {'type': 'string'}, 'jsonClass': {'enum': ['Target'], 'type': 'string'}}}, 'type': 'array', 'description': 'The entity being annotated.'}, 'targets': {'minLength': 1, 'type': 'array', 'description': "A pair of texts being connected. First text is the 'source text', second is the 'target text'", 'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'container_id': {'type': 'string'}, 'jsonClass': {'enum': ['Target'], 'type': 'string'}}}}, 'jsonClass': {'enum': ['Annotation', 'TextSambandhaAnnotation'], 'type': 'string'}}}
validate(db_interface=None)[source]
class sanskrit_data.schema.ullekhanam.TextTarget[source]

Bases: sanskrit_data.schema.common.Target

classmethod from_details(container_id, shabda_id=None, offset_address=None)[source]
schema = {'required': ['container_id', 'jsonClass'], 'type': 'object', 'description': 'A way to specify a particular substring within a string.', 'properties': {'shabda_id': {'type': 'string', 'description': "Format: pada_index.shabda_index or just pada_index.Suppose that some shabda in 'r\xc4\x81g\xc4\x81dirog\xc4\x81n satat\xc4\x81nu\xe1\xb9\xa3akt\xc4\x81n' is being targetted. This has the following pada-vigraha: r\xc4\x81ga [comp.]-\xc4\x81di [comp.]-roga [ac.p.m.] satata [comp.]-anu\xe1\xb9\xa3a\xc3\xb1j [ac.p.m.].Then, r\xc4\x81ga has the id 1.1. roga has id 1.3. satata has the id 2.1."}, 'container_id': {'type': 'string'}, 'offset_address': {'required': ['jsonClass'], 'type': 'object', 'description': 'A way to specify a substring.', 'properties': {'start': {'type': 'integer'}, 'end': {'type': 'integer'}, 'jsonClass': {'enum': ['TextOffsetAddress'], 'type': 'string'}}}, 'jsonClass': {'enum': ['TextTarget', 'Target'], 'type': 'string'}}}
class sanskrit_data.schema.ullekhanam.TinantaAnnotation[source]

Bases: sanskrit_data.schema.ullekhanam.PadaAnnotation

classmethod from_details(targets, source, word, root, lakAra, puruSha, vachana)[source]
schema = {'required': ['source', 'targets', 'jsonClass'], 'type': 'object', 'description': 'Anything ending with a tiN affix.', 'properties': {'puruSha': {'enum': ['prathama', 'madhyama', 'uttama'], 'type': 'string'}, 'word': {'type': {'required': ['jsonClass'], 'type': 'object', 'properties': {'jsonClass': {'enum': ['Text'], 'type': 'string'}, 'script_renderings': {'items': {'type': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string'}}}}, 'type': 'array'}, 'language_code': {'type': 'string'}}}}, 'source': {'description': 'Source of the annotation which contains this node.', 'required': ['source_type', 'jsonClass'], 'type': 'object', 'properties': {'source_type': {'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this annotation come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'id': {'type': 'string', 'description': 'Something to identify the particular annotation source.'}, 'jsonClass': {'type': 'string'}}, 'jsonClass': {'enum': ['AnnotationSource']}}, 'vachana': {'enum': [1, 2, 3], 'type': 'integer'}, 'lakAra': {'enum': ['laT', 'laN', 'vidhi-liN', 'AshIr-liN', 'loT', 'liT', 'luT', 'LT', 'luN', 'LN', 'leT'], 'type': 'string'}, 'root': {'type': {'required': ['jsonClass'], 'type': 'object', 'properties': {'jsonClass': {'enum': ['Text'], 'type': 'string'}, 'script_renderings': {'items': {'type': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string'}}}}, 'type': 'array'}, 'language_code': {'type': 'string'}}}}, 'targets': {'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'description': 'A way to specify a particular substring within a string.', 'properties': {'shabda_id': {'type': 'string', 'description': "Format: pada_index.shabda_index or just pada_index.Suppose that some shabda in 'r\xc4\x81g\xc4\x81dirog\xc4\x81n satat\xc4\x81nu\xe1\xb9\xa3akt\xc4\x81n' is being targetted. This has the following pada-vigraha: r\xc4\x81ga [comp.]-\xc4\x81di [comp.]-roga [ac.p.m.] satata [comp.]-anu\xe1\xb9\xa3a\xc3\xb1j [ac.p.m.].Then, r\xc4\x81ga has the id 1.1. roga has id 1.3. satata has the id 2.1."}, 'container_id': {'type': 'string'}, 'offset_address': {'required': ['jsonClass'], 'type': 'object', 'description': 'A way to specify a substring.', 'properties': {'start': {'type': 'integer'}, 'end': {'type': 'integer'}, 'jsonClass': {'enum': ['TextOffsetAddress'], 'type': 'string'}}}, 'jsonClass': {'enum': ['TextTarget', 'Target'], 'type': 'string'}}}, 'type': 'array', 'description': 'The entity being annotated.', 'minLength': 1}, 'jsonClass': {'enum': ['TinantaAnnotation', 'Annotation', 'PadaAnnotation'], 'type': 'string'}}}