weaviate.schema¶
Module used to manipulate schemas.
- class weaviate.schema.Schema(connection: weaviate.connect.connection.Connection)¶
Bases:
object
Schema class used to interact and manipulate schemas or classes.
- property¶
A Property object to create new schema property/ies.
Initialize a Schema class instance.
- Parameters
connection (weaviate.connect.Connection) – Connection object to an active and running weaviate instance.
- contains(schema: Optional[Union[dict, str]] = None) bool ¶
Check if weaviate already contains a schema.
- Parameters
schema (dict or str, optional) – Schema as a python dict, or the path to a json file or a url of a json file. If a schema is given it is checked if this specific schema is already loaded. It will test only this schema. If the given schema is a subset of the loaded schema it will still return true, by default None.
Examples
>>> schema = client.schema.get() >>> client.schema.contains(schema) True >>> schema = client.schema.get() >>> schema['classes'].append( { "class": "Animal", "description": "An Animal", "properties": [ { "name": "type", "dataType": ["string"], "description": "The animal type", } ] } ) >>> client.schema.contains(schema) False
- Returns
True if a schema is present, False otherwise.
- Return type
bool
- create(schema: Union[dict, str]) None ¶
Create the schema at the weaviate instance.
- Parameters
schema (dict or str) – Schema as a python dict, or the path to a json file or a url of a json file.
Examples
>>> author_class_schema = { ... "class": "Author", ... "description": "An Author class to store the author information", ... "properties": [ ... { ... "name": "name", ... "dataType": ["string"], ... "description": "The name of the author", ... }, ... { ... "name": "wroteArticles", ... "dataType": ["Article"], ... "description": "The articles of the author", ... } ... ] ... } >>> client.schema.create(author_class_schema)
If you have your schema saved in the ‘./schema/my_schema.json’ you can create it directly from the file.
>>> client.schema.create('./schema/my_schema.json')
- Raises
TypeError – If the ‘schema’ is neither a string nor a dict.
ValueError – If ‘schema’ can not be converted into a weaviate schema.
requests.ConnectionError – If the network connection to weaviate fails.
weaviate.UnexpectedStatusCodeException – If weaviate reports a none OK status.
weaviate.SchemaValidationException – If the ‘schema’ could not be validated against the standard format.
- create_class(schema_class: Union[dict, str]) None ¶
Create a single class as part of the schema in weaviate.
- Parameters
schema_class (dict or str) – Class as a python dict, or the path to a json file or a url of a json file.
Examples
>>> author_class_schema = { ... "class": "Author", ... "description": "An Author class to store the author information", ... "properties": [ ... { ... "name": "name", ... "dataType": ["string"], ... "description": "The name of the author", ... }, ... { ... "name": "wroteArticles", ... "dataType": ["Article"], ... "description": "The articles of the author", ... } ... ] ... } >>> client.schema.create_class(author_class_schema)
If you have your class schema saved in the ‘./schema/my_schema.json’ you can create it directly from the file.
>>> client.schema.create_class('./schema/my_schema.json')
- Raises
TypeError – If the ‘schema_class’ is neither a string nor a dict.
ValueError – If ‘schema_class’ can not be converted into a weaviate schema.
requests.ConnectionError – If the network connection to weaviate fails.
weaviate.UnexpectedStatusCodeException – If weaviate reports a none OK status.
weaviate.SchemaValidationException – If the ‘schema_class’ could not be validated against the standard format.
- delete_all() None ¶
Remove the entire schema from the Weaviate instance and all data associated with it.
Examples
>>> client.schema.delete_all()
- delete_class(class_name: str) None ¶
Delete a schema class from weaviate. This deletes all associated data.
- Parameters
class_name (str) – The class that should be deleted from weaviate.
Examples
>>> client.schema.delete_class('Author')
- Raises
TypeError – If ‘class_name’ argument not of type str.
requests.ConnectionError – If the network connection to weaviate fails.
weaviate.UnexpectedStatusCodeException – If weaviate reports a none OK status.
- get(class_name: Optional[str] = None) dict ¶
Get the schema from weaviate.
- Parameters
class_name (str, optional) – The class for which to return the schema. If NOT provided the whole schema is returned, otherwise only the schema of this class is returned. By default None.
- Returns
A dict containing the schema. The schema may be empty. To see if a schema has already been loaded use contains method.
- Return type
dict
Examples
No schema present in client
>>> client.schema.get() {'classes': []}
Schema present in client
>>> client.schema.get() { "classes": [ { "class": "Animal", "description": "An Animal", "invertedIndexConfig": { "cleanupIntervalSeconds": 60 }, "properties": [ { "dataType": [ "string" ], "description": "The animal type", "name": "type" } ], "vectorIndexConfig": { "cleanupIntervalSeconds": 300, "maxConnections": 64, "efConstruction": 128, "vectorCacheMaxObjects": 500000 }, "vectorIndexType": "hnsw", "vectorizer": "text2vec-contextionary" } ] }
>>> client.schema.get('Animal') { "class": "Animal", "description": "An Animal", "invertedIndexConfig": { "cleanupIntervalSeconds": 60 }, "properties": [ { "dataType": [ "string" ], "description": "The animal type", "name": "type" } ], "vectorIndexConfig": { "cleanupIntervalSeconds": 300, "maxConnections": 64, "efConstruction": 128, "vectorCacheMaxObjects": 500000 }, "vectorIndexType": "hnsw", "vectorizer": "text2vec-contextionary" }
- Raises
requests.ConnectionError – If the network connection to weaviate fails.
weaviate.UnexpectedStatusCodeException – If weaviate reports a none OK status.
- update_config(class_name: str, config: dict) None ¶
Update a schema configuration for a specific class.
- Parameters
class_name (str) – The class for which to update the schema configuration.
config (dict) – The configurations to update (MUST follow schema format).
- Raises
requests.ConnectionError – If the network connection to weaviate fails.
weaviate.UnexpectedStatusCodeException – If weaviate reports a none OK status.
weaviate.schema.properties¶
weaviate.schema.validate_schema¶
Schema validation module.
- weaviate.schema.validate_schema.check_class(class_definition: dict) None ¶
Validate a class against the standard class format.
- Parameters
class_definition (dict) – The definition of the class to be validated.
- Raises
weaviate.SchemaValidationException – If the class could not be validated against the standard class format.
- weaviate.schema.validate_schema.check_property(class_property: dict) None ¶
Validate a class property against the standard class property.
- Parameters
class_property (dict) – The class property to be validated.
- Raises
weaviate.SchemaValidationException – If the class property could not be validated against the standard class property format.
- weaviate.schema.validate_schema.validate_schema(schema: dict) None ¶
Validate schema.
- Parameters
schema (dict) – Schema to be validated.
- Raises
weaviate.SchemaValidationException – If the schema could not be validated against the standard format.