weaviate.data.references¶
Module for adding, deleting and updating references in-between objects.
- class weaviate.data.references.Reference(connection: weaviate.connect.connection.Connection)¶
Bases:
object
Reference class used to manipulate references within objects.
Initialize a Reference class instance.
- Parameters
connection (weaviate.connect.Connection) – Connection object to an active and running weaviate instance.
- add(from_uuid: str, from_property_name: str, to_uuid: str) None ¶
Allows to link an object to an object unidirectionally.
- Parameters
from_uuid (str) – The ID of the object that should have the reference as part of its properties. Should be a plane UUID or an URL. E.g. ‘http://localhost:8080/v1/objects/fc7eb129-f138-457f-b727-1b29db191a67’ or ‘fc7eb129-f138-457f-b727-1b29db191a67’
from_property_name (str) – The name of the property within the object.
to_uuid (str) – The UUID of the object that should be referenced. Should be a plane UUID or an URL. E.g. ‘http://localhost:8080/v1/objects/fc7eb129-f138-457f-b727-1b29db191a67’ or ‘fc7eb129-f138-457f-b727-1b29db191a67’
Examples
Assume we have two classes, Author and Book.
>>> # Create the objects first >>> client.data_object.create( ... data_object = {'name': 'Ray Bradbury'}, ... class_name = 'Author', ... uuid = 'e067f671-1202-42c6-848b-ff4d1eb804ab' ... ) >>> client.data_object.create( ... data_object = {'title': 'The Martian Chronicles'}, ... class_name = 'Book', ... uuid = 'a9c1b714-4f8a-4b01-a930-38b046d69d2d' ... ) >>> # Add the cross references >>> ## Author -> Book >>> client.data_object.reference.add( ... from_uuid = 'e067f671-1202-42c6-848b-ff4d1eb804ab', # Author UUID ... from_property_name = 'wroteBooks', ... to_uuid = 'a9c1b714-4f8a-4b01-a930-38b046d69d2d' # Book UUID ... ) >>> client.data_object.get('e067f671-1202-42c6-848b-ff4d1eb804ab') # Author UUID { "additional": {}, "class": "Author", "creationTimeUnix": 1617177700595, "id": "e067f671-1202-42c6-848b-ff4d1eb804ab", "lastUpdateTimeUnix": 1617177700595, "properties": { "name": "Ray Bradbury", "wroteBooks": [ { "beacon": "weaviate://localhost/a9c1b714-4f8a-4b01-a930-38b046d69d2d", "href": "/v1/objects/a9c1b714-4f8a-4b01-a930-38b046d69d2d" } ] }, "vectorWeights": null }
- Raises
requests.ConnectionError – If the network connection to weaviate fails.
weaviate.UnexpectedStatusCodeException – If weaviate reports a none OK status.
TypeError – If the parameters are of the wrong type.
ValueError – If the parameters are of the wrong value.
- delete(from_uuid: str, from_property_name: str, to_uuid: str) None ¶
Remove a reference to another object. Equal to removing one direction of an edge from the graph.
- Parameters
from_uuid (str) – The ID of the object that references another object.
from_property_name (str) – The property from which the reference should be deleted.
to_uuid (str) – The UUID of the referenced object.
Examples
Assume we have two classes, Author and Book.
>>> # Create the objects first >>> client.data_object.create( ... data_object = {'name': 'Ray Bradbury'}, ... class_name = 'Author', ... uuid = 'e067f671-1202-42c6-848b-ff4d1eb804ab' ... ) >>> client.data_object.create( ... data_object = {'title': 'The Martian Chronicles'}, ... class_name = 'Book', ... uuid = 'a9c1b714-4f8a-4b01-a930-38b046d69d2d' ... ) >>> # Add the cross references >>> ## Author -> Book >>> client.data_object.reference.add( ... from_uuid = 'e067f671-1202-42c6-848b-ff4d1eb804ab', # Author UUID ... from_property_name = 'wroteBooks', ... to_uuid = 'a9c1b714-4f8a-4b01-a930-38b046d69d2d' # Book UUID ... ) >>> client.data_object.get('e067f671-1202-42c6-848b-ff4d1eb804ab') # Author UUID { "additional": {}, "class": "Author", "creationTimeUnix": 1617177700595, "id": "e067f671-1202-42c6-848b-ff4d1eb804ab", "lastUpdateTimeUnix": 1617177700595, "properties": { "name": "Ray Bradbury", "wroteBooks": [ { "beacon": "weaviate://localhost/a9c1b714-4f8a-4b01-a930-38b046d69d2d", "href": "/v1/objects/a9c1b714-4f8a-4b01-a930-38b046d69d2d" } ] }, "vectorWeights": null } >>> # delete the reference >>> client.data_object.reference.delete( ... from_uuid = 'e067f671-1202-42c6-848b-ff4d1eb804ab', # Author UUID ... from_property_name = 'wroteBooks', ... to_uuid = 'a9c1b714-4f8a-4b01-a930-38b046d69d2d' # Book UUID ... ) >>> >>> client.data_object.get('e067f671-1202-42c6-848b-ff4d1eb804ab') # Author UUID { "additional": {}, "class": "Author", "creationTimeUnix": 1617177700595, "id": "e067f671-1202-42c6-848b-ff4d1eb804ab", "lastUpdateTimeUnix": 1617177864970, "properties": { "name": "Ray Bradbury", "wroteBooks": [] }, "vectorWeights": null }
- Raises
requests.ConnectionError – If the network connection to weaviate fails.
weaviate.UnexpectedStatusCodeException – If weaviate reports a none OK status.
TypeError – If parameter has the wrong type.
ValueError – If uuid is not properly formed.
- update(from_uuid: str, from_property_name: str, to_uuids: Union[list, str]) None ¶
Allows to update all references in that property with a new set of references. All old references will be deleted.
- Parameters
from_uuid (str) – The object that should have the reference as part of its properties. Should be in the form of an UUID or in form of an URL. E.g. ‘http://localhost:8080/v1/objects/fc7eb129-f138-457f-b727-1b29db191a67’ or ‘fc7eb129-f138-457f-b727-1b29db191a67’
from_property_name (str) – The name of the property within the object.
to_uuids (list or str) – The UUIDs of the objects that should be referenced. Should be a list of str in the form of an UUID or str in form of an URL. E.g. [’http://localhost:8080/v1/objects/fc7eb129-f138-457f-b727-1b29db191a67’, …] or [‘fc7eb129-f138-457f-b727-1b29db191a67’, …] If str it is converted internally into a list of str.
Examples
You have data object 1 with reference property wroteBooks and currently has one reference to data object 7. Now you say, I want to update the references of data object 1.wroteBooks to this list 3,4,9. After the update, the data object 1.wroteBooks is now 3,4,9, but no longer contains 7.
>>> client.data_object.get('e067f671-1202-42c6-848b-ff4d1eb804ab') # Author UUID { "additional": {}, "class": "Author", "creationTimeUnix": 1617177700595, "id": "e067f671-1202-42c6-848b-ff4d1eb804ab", "lastUpdateTimeUnix": 1617177700595, "properties": { "name": "Ray Bradbury", "wroteBooks": [ { "beacon": "weaviate://localhost/a9c1b714-4f8a-4b01-a930-38b046d69d2d", "href": "/v1/objects/a9c1b714-4f8a-4b01-a930-38b046d69d2d" } ] }, "vectorWeights": null } Currently there is only one `Book` reference. Update all the references of the Author for property name `wroteBooks`. >>> client.data_object.reference.update( ... from_uuid = 'e067f671-1202-42c6-848b-ff4d1eb804ab', # Author UUID ... from_property_name = 'wroteBooks', ... to_uuids = [ ... '8429f68f-860a-49ea-a50b-1f8789515882', ... '3e2e6795-298b-47e9-a2cb-3d8a77a24d8a' ... ] ... ) >>> client.data_object.get('e067f671-1202-42c6-848b-ff4d1eb804ab') # Author UUID { "additional": {}, "class": "Author", "creationTimeUnix": 1617181292677, "id": "e067f671-1202-42c6-848b-ff4d1eb804ab", "lastUpdateTimeUnix": 1617181409405, "properties": { "name": "Ray Bradbury", "wroteBooks": [ { "beacon": "weaviate://localhost/8429f68f-860a-49ea-a50b-1f8789515882", "href": "/v1/objects/8429f68f-860a-49ea-a50b-1f8789515882" }, { "beacon": "weaviate://localhost/3e2e6795-298b-47e9-a2cb-3d8a77a24d8a", "href": "/v1/objects/3e2e6795-298b-47e9-a2cb-3d8a77a24d8a" } ] }, "vectorWeights": null } All the previous references were removed and now we have only those specified in the `update` method.
- Raises
requests.ConnectionError – If the network connection to weaviate fails.
weaviate.UnexpectedStatusCodeException – If weaviate reports a none OK status.
TypeError – If the parameters are of the wrong type.
ValueError – If the parameters are of the wrong value.