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.

Type

weaviate.schema.properties.Property

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
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

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.