sanskrit_data.schema.ullekhanam.sanskrit

class sanskrit_data.schema.ullekhanam.sanskrit.PadaAnnotation[source]

Bases: sanskrit_data.schema.ullekhanam.Annotation

classmethod from_details(targets, source, word, root)[source]
classmethod get_allowed_target_classes()[source]
schema = {'description': 'A grammatical pada - subanta or tiNanta.', 'properties': {'editable_by_others': {'default': True, 'type': 'boolean', 'description': 'Can this annotation be taken over by others for wiki-style editing or deleting?'}, 'source': {'description': 'Source of the json-data which contains this node. Eg. Uploader details in case of books, annotator in case of annotations. Consider naming the field that contains this object `source` to make querying uniform.', 'required': ['source_type', 'jsonClass'], 'type': 'object', 'properties': {'source_type': {'default': 'system_inferred', 'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this data come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'by_admin': {'type': 'boolean', 'description': 'Was the creator of this data an admin at the time it was created or updated?'}, 'id': {'type': 'string', 'description': 'Something to identify the particular data source.'}, 'jsonClass': {'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}, 'jsonClass': {'enum': ['DataSource']}}, 'word': {'required': ['jsonClass'], 'type': 'object', 'properties': {'search_strings': {'items': {'type': 'string'}, 'type': 'array', 'description': 'Search strings which should match this text. It could be derived from script_renderings - by a simple copy (intended for use with a text index) or some intelligent tokenization thereof.'}, 'language_code': {'type': 'string'}, 'script_renderings': {'minItems': 1, 'items': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array'}, 'jsonClass': {'enum': ['Text'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'root': {'required': ['jsonClass'], 'type': 'object', 'properties': {'search_strings': {'items': {'type': 'string'}, 'type': 'array', 'description': 'Search strings which should match this text. It could be derived from script_renderings - by a simple copy (intended for use with a text index) or some intelligent tokenization thereof.'}, 'language_code': {'type': 'string'}, 'script_renderings': {'minItems': 1, 'items': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array'}, 'jsonClass': {'enum': ['Text'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'targets': {'minItems': 1, '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', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'jsonClass': {'enum': ['TextTarget'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array', 'description': 'This field lets us define a directed graph involving JsonObjects stored in a database.'}, 'jsonClass': {'enum': ['PadaAnnotation'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}, 'required': ['source', 'targets', 'jsonClass'], 'type': 'object'}
set_base_details(targets, source, word, root)[source]
target_class

alias of sanskrit_data.schema.ullekhanam.TextTarget

class sanskrit_data.schema.ullekhanam.sanskrit.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 = {'description': 'Some JsonObject which can be saved as a document in the ullekhanam database.', 'properties': {'component_padas': {'minItems': 1, 'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'container_id': {'type': 'string'}, 'jsonClass': {'enum': ['Target'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array', 'description': 'Pointers to PadaAnnotation objects corresponding to components of the samasta-pada'}, 'editable_by_others': {'default': True, 'type': 'boolean', 'description': 'Can this annotation be taken over by others for wiki-style editing or deleting?'}, 'source': {'description': 'Source of the json-data which contains this node. Eg. Uploader details in case of books, annotator in case of annotations. Consider naming the field that contains this object `source` to make querying uniform.', 'required': ['source_type', 'jsonClass'], 'type': 'object', 'properties': {'source_type': {'default': 'system_inferred', 'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this data come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'by_admin': {'type': 'boolean', 'description': 'Was the creator of this data an admin at the time it was created or updated?'}, 'id': {'type': 'string', 'description': 'Something to identify the particular data source.'}, 'jsonClass': {'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}, 'jsonClass': {'enum': ['DataSource']}}, 'samaasa_type': {'type': 'string'}, 'targets': {'minItems': 1, 'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'container_id': {'type': 'string'}, 'jsonClass': {'enum': ['Target'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array', 'description': 'This field lets us define a directed graph involving JsonObjects stored in a database.'}, 'jsonClass': {'enum': ['SamaasaAnnotation'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}, 'required': ['source', 'targets', 'jsonClass'], 'type': 'object'}
validate(db_interface=None, user=None)[source]

Validate the JSON serialization of this object using the schema member. Called before database writes.

Parameters:
  • user
  • db_interface – Potentially useful in subclasses to perform validations (eg. is the target_id valid). This value may not be available: for example when called from the from_details methods.
Returns:

a boolean.

class sanskrit_data.schema.ullekhanam.sanskrit.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 = {'description': 'Some JsonObject which can be saved as a document in the ullekhanam database.', 'properties': {'combined_string': {'required': ['jsonClass'], 'type': 'object', 'properties': {'search_strings': {'items': {'type': 'string'}, 'type': 'array', 'description': 'Search strings which should match this text. It could be derived from script_renderings - by a simple copy (intended for use with a text index) or some intelligent tokenization thereof.'}, 'language_code': {'type': 'string'}, 'script_renderings': {'minItems': 1, 'items': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array'}, 'jsonClass': {'enum': ['Text'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'sandhi_type': {'type': 'string'}, 'source': {'description': 'Source of the json-data which contains this node. Eg. Uploader details in case of books, annotator in case of annotations. Consider naming the field that contains this object `source` to make querying uniform.', 'required': ['source_type', 'jsonClass'], 'type': 'object', 'properties': {'source_type': {'default': 'system_inferred', 'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this data come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'by_admin': {'type': 'boolean', 'description': 'Was the creator of this data an admin at the time it was created or updated?'}, 'id': {'type': 'string', 'description': 'Something to identify the particular data source.'}, 'jsonClass': {'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}, 'jsonClass': {'enum': ['DataSource']}}, 'editable_by_others': {'default': True, 'type': 'boolean', 'description': 'Can this annotation be taken over by others for wiki-style editing or deleting?'}, 'targets': {'minItems': 1, 'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'container_id': {'type': 'string'}, 'jsonClass': {'enum': ['Target'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array', 'description': 'This field lets us define a directed graph involving JsonObjects stored in a database.'}, 'jsonClass': {'enum': ['SandhiAnnotation'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}, 'required': ['source', 'combined_string', 'targets', 'jsonClass'], 'type': 'object'}
class sanskrit_data.schema.ullekhanam.sanskrit.SubantaAnnotation[source]

Bases: sanskrit_data.schema.ullekhanam.sanskrit.PadaAnnotation

classmethod from_details(targets, source, word, root, linga, vibhakti, vachana)[source]
schema = {'description': 'Anything ending with a sup affix. Includes avyaya-s.', 'properties': {'editable_by_others': {'default': True, 'type': 'boolean', 'description': 'Can this annotation be taken over by others for wiki-style editing or deleting?'}, 'linga': {'enum': ['strii', 'pum', 'napum', 'avyaya'], 'type': 'string'}, 'source': {'jsonClass': {'enum': ['DataSource']}, 'required': ['source_type', 'jsonClass'], 'type': 'object', 'description': 'Source of the json-data which contains this node. Eg. Uploader details in case of books, annotator in case of annotations. Consider naming the field that contains this object `source` to make querying uniform.', 'properties': {'source_type': {'default': 'system_inferred', 'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this data come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'jsonClass': {'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}, 'id': {'type': 'string', 'description': 'Something to identify the particular data source.'}, 'by_admin': {'type': 'boolean', 'description': 'Was the creator of this data an admin at the time it was created or updated?'}}}, 'vachana': {'enum': [1, 2, 3], 'type': 'integer'}, 'vibhakti': {'enum': ['1', '2', '3', '4', '5', '6', '7', '1.sambodhana'], 'type': 'string'}, 'word': {'required': ['jsonClass'], 'type': 'object', 'properties': {'search_strings': {'items': {'type': 'string'}, 'type': 'array', 'description': 'Search strings which should match this text. It could be derived from script_renderings - by a simple copy (intended for use with a text index) or some intelligent tokenization thereof.'}, 'jsonClass': {'enum': ['Text'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}, 'script_renderings': {'minItems': 1, 'items': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array'}, 'language_code': {'type': 'string'}}}, 'root': {'required': ['jsonClass'], 'type': 'object', 'properties': {'search_strings': {'items': {'type': 'string'}, 'type': 'array', 'description': 'Search strings which should match this text. It could be derived from script_renderings - by a simple copy (intended for use with a text index) or some intelligent tokenization thereof.'}, 'jsonClass': {'enum': ['Text'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}, 'script_renderings': {'minItems': 1, 'items': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array'}, 'language_code': {'type': 'string'}}}, 'targets': {'minItems': 1, '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', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'jsonClass': {'enum': ['TextTarget'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array', 'description': 'This field lets us define a directed graph involving JsonObjects stored in a database.'}, 'jsonClass': {'enum': ['SubantaAnnotation'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}, 'required': ['source', 'targets', 'jsonClass'], 'type': 'object'}
class sanskrit_data.schema.ullekhanam.sanskrit.TextSambandhaAnnotation[source]

Bases: sanskrit_data.schema.ullekhanam.Annotation

classmethod get_allowed_target_classes()[source]
schema = {'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'}, 'editable_by_others': {'default': True, 'type': 'boolean', 'description': 'Can this annotation be taken over by others for wiki-style editing or deleting?'}, 'source_text_padas': {'minItems': 1, 'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'container_id': {'type': 'string'}, 'jsonClass': {'enum': ['Target'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array', 'description': 'The entity being annotated.'}, 'source': {'description': 'Source of the json-data which contains this node. Eg. Uploader details in case of books, annotator in case of annotations. Consider naming the field that contains this object `source` to make querying uniform.', 'required': ['source_type', 'jsonClass'], 'type': 'object', 'properties': {'source_type': {'default': 'system_inferred', 'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this data come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'by_admin': {'type': 'boolean', 'description': 'Was the creator of this data an admin at the time it was created or updated?'}, 'id': {'type': 'string', 'description': 'Something to identify the particular data source.'}, 'jsonClass': {'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}, 'jsonClass': {'enum': ['DataSource']}}, 'target_text_padas': {'minItems': 1, 'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'container_id': {'type': 'string'}, 'jsonClass': {'enum': ['Target'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array', 'description': 'The entity being annotated.'}, 'targets': {'minItems': 1, 'items': {'required': ['container_id', 'jsonClass'], 'type': 'object', 'properties': {'container_id': {'type': 'string'}, 'jsonClass': {'enum': ['Target'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array', 'description': "A pair of texts being connected. First text is the 'source text', second is the 'target text'"}, 'jsonClass': {'enum': ['TextSambandhaAnnotation'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}, 'required': ['source', 'combined_string', 'targets', 'jsonClass'], 'type': 'object'}
validate(db_interface=None, user=None)[source]

Validate the JSON serialization of this object using the schema member. Called before database writes.

Parameters:
  • user
  • db_interface – Potentially useful in subclasses to perform validations (eg. is the target_id valid). This value may not be available: for example when called from the from_details methods.
Returns:

a boolean.

class sanskrit_data.schema.ullekhanam.sanskrit.TinantaAnnotation[source]

Bases: sanskrit_data.schema.ullekhanam.sanskrit.PadaAnnotation

classmethod from_details(targets, source, word, root, lakAra, puruSha, vachana)[source]
schema = {'description': 'Anything ending with a tiN affix.', 'properties': {'puruSha': {'enum': ['prathama', 'madhyama', 'uttama'], 'type': 'string'}, 'editable_by_others': {'default': True, 'type': 'boolean', 'description': 'Can this annotation be taken over by others for wiki-style editing or deleting?'}, 'source': {'jsonClass': {'enum': ['DataSource']}, 'required': ['source_type', 'jsonClass'], 'type': 'object', 'description': 'Source of the json-data which contains this node. Eg. Uploader details in case of books, annotator in case of annotations. Consider naming the field that contains this object `source` to make querying uniform.', 'properties': {'source_type': {'default': 'system_inferred', 'enum': ['system_inferred', 'user_supplied'], 'type': 'string', 'description': 'Does this data come from a machine, or a human? source_ prefix avoids keyword conflicts in some languages.'}, 'jsonClass': {'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}, 'id': {'type': 'string', 'description': 'Something to identify the particular data source.'}, 'by_admin': {'type': 'boolean', 'description': 'Was the creator of this data an admin at the time it was created or updated?'}}}, 'vachana': {'enum': [1, 2, 3], 'type': 'integer'}, 'lakAra': {'enum': ['laT', 'laN', 'vidhi-liN', 'AshIr-liN', 'loT', 'liT', 'luT', 'LT', 'luN', 'LN', 'leT'], 'type': 'string'}, 'word': {'required': ['jsonClass'], 'type': 'object', 'properties': {'search_strings': {'items': {'type': 'string'}, 'type': 'array', 'description': 'Search strings which should match this text. It could be derived from script_renderings - by a simple copy (intended for use with a text index) or some intelligent tokenization thereof.'}, 'jsonClass': {'enum': ['Text'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}, 'script_renderings': {'minItems': 1, 'items': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array'}, 'language_code': {'type': 'string'}}}, 'root': {'required': ['jsonClass'], 'type': 'object', 'properties': {'search_strings': {'items': {'type': 'string'}, 'type': 'array', 'description': 'Search strings which should match this text. It could be derived from script_renderings - by a simple copy (intended for use with a text index) or some intelligent tokenization thereof.'}, 'jsonClass': {'enum': ['Text'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}, 'script_renderings': {'minItems': 1, 'items': {'required': ['text', 'jsonClass'], 'type': 'object', 'properties': {'encoding_scheme': {'type': 'string'}, 'text': {'type': 'string'}, 'jsonClass': {'enum': ['ScriptRendering'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array'}, 'language_code': {'type': 'string'}}}, 'targets': {'minItems': 1, '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', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'jsonClass': {'enum': ['TextTarget'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}}, 'type': 'array', 'description': 'This field lets us define a directed graph involving JsonObjects stored in a database.'}, 'jsonClass': {'enum': ['TinantaAnnotation'], 'type': 'string', 'description': 'A hint used by json libraries to deserialize json data to an object of the appropriate type. This is necessary for sub-objects to have as well (to ensure that the deserialization functions as expected).'}}, 'required': ['source', 'targets', 'jsonClass'], 'type': 'object'}