import GraphApplyEdits from "@arcgis/core/rest/knowledgeGraph/GraphApplyEdits.js";const GraphApplyEdits = await $arcgis.import("@arcgis/core/rest/knowledgeGraph/GraphApplyEdits.js");- Inheritance:
- GraphApplyEdits→
Accessor
- Since
- ArcGIS Maps SDK for JavaScript 4.25
This class defines entities and relationships to add, delete, and update in a knowledge graph service's graph resource. Use entityUpdates or relationshipUpdates to change property values.
Note
The user must have sufficient privileges to edit content, and editing must be enabled for the knowledge graph service for this operation to be successful.
Examples
// add a new `Supplier` entityconst [knowledgeGraphModule, Entity, GraphApplyEdits] = await $arcgis.import([ "@arcgis/core/rest/knowledgeGraphService.js", "@arcgis/core/rest/knowledgeGraph/Entity.js", "@arcgis/core/rest/knowledgeGraph/GraphApplyEdits.js"]);const newEntity = new Entity({ typeName: "Supplier", properties: { Name: "Supplier 5", EmployeeCount: 681 }});
KnowledgeGraphModule.executeApplyEdits( graph, new GraphApplyEdits({ entityAdds: [newEntity] })).then((editResult) => { console.log("Graph Add Result", editResult);});// add multiple new itemsconst newEntity = new Entity({ typeName: "Supplier", properties: { Name: "Supplier 5", EmployeeCount: 681 },});
const newRelationship = new Relationship({ typeName: "buys_part", properties: { quantity: 5000 }, // origin and destination entities must already exist in the graph originId: "{AN4E4G85-41F1-49A4-8412-CACCC9906E88}", destinationId: "{9D2D6AFD-41F1-49A4-8412-1DGR8E5D6S1G4}"});
KnowledgeGraphModule.executeApplyEdits(graph, { entityAdds: [newEntity], relationshipAdds: [newRelationship]}).then((editResult) => { console.log("Graph Add Result", editResult);});// update existing recordsconst updateEntity = new Entity({ typeName: "Supplier", // update the EmployeeCount from 681 to 685 properties: { Name: "Supplier 5", EmployeeCount: 685 }, id:"{G1E5G3D4-41F1-49A4-8412-1S5GE8S4D5S1G}" //id of entity already in knowledge graph});
const updateRelationship = new Relationship({ typeName: "buys_part", // update the quantity from 5000 to 5500 properties: { quantity: 5500 }, id: "{MSIGESNG-A1F5-1A8F-3W5F-15A8W4F3S5F8W}" //id of relationship already in knowledge graph});
KnowledgeGraphModule.executeApplyEdits(graph, { entityUpdates: [updateEntity], relationshipUpdates: [updateRelationships]}).then((editResult) => { console.log("Graph Update Result", editResult);});// delete existing recordsKnowledgeGraphModule.executeApplyEdits(graph, { entityDeletes: [{ typeName: "Supplier", ids: ["{AMGIE541G-41F1-49A4-8412-CACCC9906E88}", "{HNWIGHE15-WH52-2GE6-1A5W-A1F8W4FS3A1S5}"] },{ typeName: "Part", ids: ["{FNIW4GF1-ANFW-49A4-ANW7-GNWIGHAF4S51FS}"] }], relationshipDeletes: [{ typeName: "Buys_part", ids: ["{MH4E54G8E-MF4W-1842-2S44-15AF5W8F4S2W8}"] }], // delete all relationships connected to the deleted entities. options:{ cascadeDelete: true }}).then((editResult) => { console.log("Graph Delete Result", editResult);});// Basic example results of adding one entity to the `Supplier` entity type{ editResults:[{ adds:[ { id: "{ANWIFLWF-ANFW-49A4-ANW7-GM51GN5G1878}", error: false }], deletes:[], typeName: "Supplier", updates:[] }], hasError: false, error: undefined}Constructors
Constructor
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| properties | | |
Properties
| Property | Type | Class |
|---|---|---|
declaredClass readonly inherited | ||
| | ||
| | ||
| | ||
| | ||
Relationship[] | null | undefined | | |
| | ||
Relationship[] | null | undefined | |
entityAdds
A list of entities to add to the knowledge graph.
Example
//add a new `Supplier` entityconst newEntity = new Entity({ typeName: "Supplier", properties: { Name: "Supplier 5", EmployeeCount: 681 }});
KnowledgeGraphModule.executeApplyEdits( graph, { entityAdds: [newEntity],}).then((editResult) => { console.log("Graph Add Result", editResult);}); entityDeletes
- Type
- GraphNamedObjectDeletes[] | null | undefined
A list of objects containing an entity type and
the ids of the entities of that type to delete.
Each object must have thetypeName and ids properties.
Example
entityDeletes: [{ typeName: "Supplier", ids: ["{AMGIE541G-41F1-49A4-8412-CACCC9906E88}", "{HNWIGHE15-WH52-2GE6-1A5W-A1F8W4FS3A1S5}"] },{ typeName: "Part", ids: ["{FNIW4GF1-ANFW-49A4-ANW7-GNWIGHAF4S51FS}"]}] entityUpdates
A list of entities with the modified properties to update in the knowledge graph.
options
- Type
- GraphApplyEditsOptions | null | undefined
Additional options to set an input quantization for any geometries being added to the graph and to automatically delete all relationships associated with a deleted entity.
- Default value
- false
relationshipAdds
- Type
- Relationship[] | null | undefined
A list of relationships to add to the knowledge graph.
Example
//add a new `Supplier` entityconst newRelationship = new Relationship({ typeName: "buys_part", properties: { quantity: 18880, }, originId: "{AN4E4G85-41F1-49A4-8412-CACCC9906E88}", destinationId: "{9D2D6AFD-41F1-49A4-8412-1DGR8E5D6S1G4}"});
KnowledgeGraphModule.executeApplyEdits( graph, { relationshipAdds: [newRelationship],}).then((editResult) => { console.log("Graph Add Result", editResult);}); relationshipDeletes
- Type
- GraphNamedObjectDeletes[] | null | undefined
A list of objects containing a relationship type, and
the ids of the relationships of that type to delete.
Each object in the array must have the typeName and ids properties.
Example
relationshipDeletes: [{ typeName: "Buys_part", ids: ["{MH4E54G8E-MF4W-1842-2S44-15AF5W8F4S2W8}"]}], relationshipUpdates
- Type
- Relationship[] | null | undefined
A list of relationships with modified properties to update in the knowledge graph.
Type definitions
GraphApplyEditsOptions
inputQuantizationParameters
Custom quantization parameters for input geometry that compresses geometry for transfer to the server. Overrides the default lossless WGS84 quantization.
cascadeDelete
If true, deleting an entity will automatically delete all relationships connected to that entity.
If false, then both the entity and all it's connected relationships must be provided or the
executeApplyEdits() operation will fail.
cascadeProvenanceDelete
If true, deleting an entity or relationship, or nullifying a property value will automatically delete any linked provenance records.
If false, then all linked provenance records must be deleted or the
executeApplyEdits() operation will fail.
GraphNamedObjectDeletes
GraphNamedObjectDeletes represents the list of GraphNamedObjects (entities or relationships) of a specific type that will be deleted from a knowledge graph.
Example
//typical use caseGraphApplyEdits.entityDeletes = [{ typeName: "Supplier", ids: ["{AMGIE541G-41F1-49A4-8412-CACCC9906E88}", "{HNWIGHE15-WH52-2GE6-1A5W-A1F8W4FS3A1S5}"] }]