Editing objects (multiple)
Bulk editing applies the same attribute change to every object matched by a StarQL query against a type (including its descendant types, if any) — instead of editing each object individually.
Per-attribute operations
Each attribute you include in a bulk edit is set to do one of four things:
| Operation | Effect |
|---|---|
| Replace | Overwrites the attribute's existing value(s) with the new one(s). |
| Add | Adds the new value(s) to whatever the attribute already holds, de-duplicated. |
| Remove | Takes the new value(s) out of whatever the attribute already holds. |
| Empty | Clears the attribute. |
Validation and partial failure
Objects are processed in batches of 200. Each object is validated independently — one object failing validation doesn't block the rest of the batch. If any object fails, the whole operation is marked failed overall, but every object that did pass validation keeps its edit. A CSV listing each failure (object, attribute, domain, violation type, and the invalid value) is generated and attached to the operation for download.
BulkEditServiceImpl.applyUpdatesOnObject (BulkEditService.kt:176-216) for the four
BulkEditAttributeOperation variants (REPLACE/ADD/REMOVE/EMPTY) and the 200-object chunk size
(CHUNK_SIZE_FOR_EDIT); descendant-type inclusion via TypeInheritanceService.getTypeDescendants
(line 64); the same non-blocking per-object validation and CSV failure export pattern as
Moving objects.