@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
850 lines (830 loc) • 62.6 kB
TypeScript
/**
* A knowledge graph service is associated with several resources. One resource is a [knowledge graph](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/KnowledgeGraph/),
* which contains [entities](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/Entity/) and [relationships](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/Relationship/).
* Another resource is the [data model](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/DataModel/) that defines the [entity types](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/EntityType/)
* and [relationship types](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/RelationshipType/) in the graph.
* A third resource is the [service definition](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/ServiceDefinition/) which outlines the capabilities of the service.
* A knowledge graph service allows users to query both the [knowledge graph](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/KnowledgeGraph/)
* and the [data model](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/DataModel/). Entities and relationships can be added, updated or deleted from the knowledge graph
* using [executeApplyEdits()](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/#executeApplyEdits). To visualize knowledge graph data on map, see [knowledge graph layer](https://developers.arcgis.com/javascript/latest/references/core/layers/KnowledgeGraphLayer/).
*
* > [!WARNING]
* >
* > **Known Limitations**
* >
* > KnowledgeGraphService capabilities in version 4.26 of the SDK for Javascript are only supported against ArcGIS Enterprise version 11.1 and later.
* > KnowledgeGraphService capabilities in version 4.25 of the SDK for Javascript are supported on ArcGIS Enterprise version 11.0 and earlier.
*
* @since 4.25
* @see [Sample - Search a knowledge graph](https://developers.arcgis.com/javascript/latest/sample-code/knowledgegraph-search/)
* @see [Sample - Query a knowledge graph](https://developers.arcgis.com/javascript/latest/sample-code/knowledgegraph-query/)
* @see [Sample - Edit knowledge graph data](https://developers.arcgis.com/javascript/latest/sample-code/knowledgegraph-applyedits/)
* @see [Sample - Work with KnowledgeGraphLayer](https://developers.arcgis.com/javascript/latest/sample-code/knowledgegraph-knowledgegraphlayer/)
* @see [KnowledgeGraphLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/KnowledgeGraphLayer/) for details on visualizing knowledge graph data.
* @see [Get started with ArcGIS Knowledge Server](https://enterprise.arcgis.com/en/knowledge/latest/introduction/get-started-with-arcgis-knowledge.htm) for overview of ArcGIS Knowledge for ArcGIS Enterprise
* @see [Hosted Knowledge Graph Service](https://developers.arcgis.com/rest/services-reference/enterprise/kgs-hosted-server.htm) for information on managing knowledge graph services via ArcGIS Enterprise and the REST API
* @see [Get started with ArcGIS Knowledge (ArcGIS Pro)](https://pro.arcgis.com/en/pro-app/latest/help/data/knowledge/get-started-with-arcgis-knowledge.htm) for information on ArcGIS Knowledge in ArcGIS Pro
* @example
* const knowledgeGraphModule = await $arcgis.import("@arcgis/core/rest/knowledgeGraphService.js");
* let knowledgeGraph;
* // define url to knowledge graph service
* const url = "https://myHostName.domain.com/server/rest/services/Hosted/myServiceName/KnowledgeGraphServer";
* // fetch knowledge graph
* KnowledgeGraphModule.fetchKnowledgeGraph(url)
* .then((kg) => {
* // do something with result
* knowledgeGraph = kg;
* console.log(knowledgeGraph);
* });
*/
import type CodedValueDomain from "../layers/support/CodedValueDomain.js";
import type RangeDomain from "../layers/support/RangeDomain.js";
import type EntityType from "./knowledgeGraph/EntityType.js";
import type FieldIndex from "./knowledgeGraph/FieldIndex.js";
import type GraphAddFieldIndexResult from "./knowledgeGraph/GraphAddFieldIndexResult.js";
import type GraphAddNamedTypesResult from "./knowledgeGraph/GraphAddNamedTypesResult.js";
import type GraphAddPropertyResult from "./knowledgeGraph/GraphAddPropertyResult.js";
import type GraphApplyEdits from "./knowledgeGraph/GraphApplyEdits.js";
import type GraphApplyEditsResult from "./knowledgeGraph/GraphApplyEditsResult.js";
import type GraphDataModelSingletonOperationResult from "./knowledgeGraph/GraphDataModelSingletonOperationResult.js";
import type GraphDeleteFieldIndexResult from "./knowledgeGraph/GraphDeleteFieldIndexResult.js";
import type GraphDeleteNamedTypeResult from "./knowledgeGraph/GraphDeleteNamedTypeResult.js";
import type GraphDeletePropertyResult from "./knowledgeGraph/GraphDeletePropertyResult.js";
import type GraphObjectType from "./knowledgeGraph/GraphObjectType.js";
import type GraphProperty from "./knowledgeGraph/GraphProperty.js";
import type GraphQuery from "./knowledgeGraph/GraphQuery.js";
import type GraphQueryResult from "./knowledgeGraph/GraphQueryResult.js";
import type GraphQueryEncoded from "./knowledgeGraph/GraphQueryStreaming.js";
import type GraphQueryStreamingResult from "./knowledgeGraph/GraphQueryStreamingResult.js";
import type GraphSearch from "./knowledgeGraph/GraphSearch.js";
import type GraphSearchEncoded from "./knowledgeGraph/GraphSearchStreaming.js";
import type GraphUpdateNamedTypesResult from "./knowledgeGraph/GraphUpdateNamedTypesResult.js";
import type GraphUpdatePropertyResult from "./knowledgeGraph/GraphUpdatePropertyResult.js";
import type GraphUpdateSearchIndexResult from "./knowledgeGraph/GraphUpdateSearchIndexResult.js";
import type KnowledgeGraph from "./knowledgeGraph/KnowledgeGraph.js";
import type RelationshipType from "./knowledgeGraph/RelationshipType.js";
import type CIMFilteredFindPathsResultJSON from "./knowledgeGraph/toolService/findPaths/CIMFilteredFindPathsResultJSON.js";
import type FindPathsToolSettings from "./knowledgeGraph/toolService/findPaths/FindPathsToolSettings.js";
import type JobInfo from "./support/JobInfo.js";
import type { RequestOptions } from "../request/types.js";
import type { SearchProperties } from "./knowledgeGraph/SearchIndex.js";
import type { EsriFieldType, EsriMergePolicyTypes, EsriSplitPolicyTypes } from "./knowledgeGraph/types.js";
/**
* Add, delete, or update [entities](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/Entity/) and
* [relationships](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/Relationship/) in a [knowledge graph service's](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/)
* [graph](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/KnowledgeGraph/) resource. This operation does not allow adding or deleting properties for entity types or relationship types.
* However, users can update an entity or relationship to change its property values.
*
* > [!WARNING]
* >
* > **Note**
* >
* > The user must have [sufficient privileges](https://enterprise.arcgis.com/en/portal/latest/administer/windows/roles.htm#TABLE_1ECAC6C4F7F549AF98045224603F0AD2)
* > to edit content and editing must be enabled for the knowledge graph service for this operation to be successful.
*
* @param graph - The [knowledge graph](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/KnowledgeGraph/) associated
* with the service. See also [ArcGIS REST APIs - Hosted Knowledge Graph Service](https://developers.arcgis.com/rest/services-reference/enterprise/kgs-hosted-server.htm).
* @param edits - Specifies the [entities](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/Entity/)
* and [relationships](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/Relationship/) and their properties to add, update or delete.
* @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is a [GraphApplyEditsResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphApplyEditsResult/).
* @see [Sample - Edit knowledge graph data](https://developers.arcgis.com/javascript/latest/sample-code/knowledgegraph-applyedits/)
* @see [ArcGIS REST APIs - Apply Edits (Graph)](https://developers.arcgis.com/rest/services-reference/enterprise/kgs-graph-applyedits.htm).
* @see [GraphApplyEdits](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphApplyEdits/)
* @see [GraphApplyEditsResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphApplyEditsResult/)
* @example
* // sample executeApplyEdits() to add a new entity to the `Supplier` entity type
* const newEntity = new Entity({
* typeName: "Supplier",
* properties: {
* Name: "Supplier 5",
* EmployeeCount: 681
* }
* });
* KnowledgeGraphModule.executeApplyEdits(
* graph, {
* entityAdds: [newEntity]
* })
* .then((editResult) => {
* console.log("Graph Add Result", editResult);
* });
* });
* @example
* // Basic example results of adding one entity to the `Supplier` entity type
* {
* editResults:[{
* adds:[
* {
* id: "{A1W5F4A8S-41F1-49A4-8412-ANIWN9906E88}",
* error: false
* }],
* deletes:[],
* typeName: "Supplier",
* updates:[]
* }],
* hasError: false,
* error: undefined
* }
* @example
* //update existing records
* const updateEntity = new Entity({
* typeName: "Supplier",
* // update the EmployeeCount from 681 to 685
* properties: {
* Name: "Supplier 5",
* EmployeeCount: 685
* },
* id:"{A1W5F4A8S-41F1-49A4-8412-ANIWN9906E88}" //id of entity already in knowledge graph
* });
* const updateRelationship = 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, {
* entityUpdates: [updateEntity],
* relationshipUpdates: [updateRelationship]
* })
* .then((editResult) => {
* console.log("Graph Update Result", editResult);
* });
* });
* @example
* //delete existing records
* KnowledgeGraphModule.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);
* });
* });
*/
export function executeApplyEdits(graph: KnowledgeGraph, edits: GraphApplyEdits, requestOptions?: RequestOptions): Promise<GraphApplyEditsResult>;
/**
* Create new [entity types](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/EntityType/) or [relationship types](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/RelationshipType/) in your knowledge graph.
*
* > [!WARNING]
* >
* > **Note**
* >
* > The user must have [sufficient privileges](https://enterprise.arcgis.com/en/portal/latest/administer/windows/roles.htm#TABLE_1ECAC6C4F7F549AF98045224603F0AD2)
* > to edit the data model for the knowledge graph service for this operation to be successful.
*
* @param graph - The knowledge graph. Retrieved using [fetchKnowledgeGraph()](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/#fetchKnowledgeGraph).
* @param namedTypes - The new [entity types](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/EntityType/) or [relationship types](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/RelationshipType/) to add to the graph.
* @param options - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is a [GraphAddNamedTypesResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphAddNamedTypesResult/).
* @since 4.33
* @example
* const knowledgeGraphModule = await $arcgis.import("@arcgis/core/rest/knowledgeGraphService.js");
*
* // use fetchKnowledgeGraph() to retrieve the knowledge graph
* // define the new entity type
* const newEntityType = {
* type: "entity",
* name: "Person",
* properties: [
* {
* name: "nameProp",
* alias: "Name",
* fieldType: "esriFieldTypeString",
* role: "esriGraphPropertyRegular",
* },
* ],
* };
*
* // define a new relationship type
* const newRelationshipType = {
* type: "relationship",
* name: "knows",
* properties: [
* {
* name: "dateMet",
* fieldType: "esriFieldTypeTimestampOffset",
* role: "esriGraphPropertyRegular",
* },
* ],
* endPoints: [
* {
* originEntityType: "Person",
* destinationEntityType: "Person",
* },
* ],
* };
*
* // add the new types, update the data model and get the updated graph.
* knowledgeGraphModule.executeAddNamedTypes(graph,
* {
* newEntityTypes: [newEntityType],
* newRelationshipTypes: [newRelationshipType]
* }).then((response) => {
* graph = response.updatedKnowledgeGraph;
* })
*/
export function executeAddNamedTypes(graph: KnowledgeGraph, namedTypes: ExecuteAddNamedTypesNamedTypes, options?: RequestOptions): Promise<GraphAddNamedTypesResult>;
export interface ExecuteAddNamedTypesNamedTypes {
/** The new [entityTypes](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/EntityType/) to add to the graph. */
newEntityTypes?: EntityType[];
/** The new [relationship types](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/RelationshipType/) to add to the graph. */
newRelationshipTypes?: RelationshipType[];
}
/**
* Delete an [entity type](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/EntityType/) or [relationship type](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/RelationshipType/) from the graph. There must be no records of the type in the graph. To delete entities or relationships of the specified type, see [executeApplyEdits()](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/#executeApplyEdits).
*
* > [!WARNING]
* >
* > **Note**
* >
* > The user must have [sufficient privileges](https://enterprise.arcgis.com/en/portal/latest/administer/windows/roles.htm#TABLE_1ECAC6C4F7F549AF98045224603F0AD2)
* > to edit the data model for the knowledge graph service for this operation to be successful.
*
* @param graph - The knowledge graph. Retrieved using [fetchKnowledgeGraph()](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/#fetchKnowledgeGraph).
* @param namedType - The name of the [entity type](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/EntityType/) or [relationship type](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/RelationshipType/) to delete.
* @param options - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is a [GraphDeleteNamedTypeResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphDeleteNamedTypeResult/).
* @since 4.33
* @example
* const knowledgeGraphModule = await $arcgis.import("@arcgis/core/rest/knowledgeGraphService.js");
*
* // use fetchKnowledgeGraph() to retrieve the knowledge graph
* // Delete the type, update the data model and get the updated graph.
* knowledgeGraphModule
* .executeDeleteNamedType(graph,"knows")
* .then((response) => {
* graph = response.updatedKnowledgeGraph;
* })
*/
export function executeDeleteNamedType(graph: KnowledgeGraph, namedType: string, options?: RequestOptions): Promise<GraphDeleteNamedTypeResult>;
/** Properties of a named type that can be updated, such as the `alias`. */
export interface UpdateNamedType extends Partial<Pick<GraphObjectType, "alias">> {}
/**
* Update an [entity type](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/EntityType/) or [relationship type](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/RelationshipType/).
*
* > [!WARNING]
* >
* > **Note**
* >
* > The user must have [sufficient privileges](https://enterprise.arcgis.com/en/portal/latest/administer/windows/roles.htm#TABLE_1ECAC6C4F7F549AF98045224603F0AD2)
* > to edit the data model for the knowledge graph service for this operation to be successful.
*
* @param graph - The knowledge graph to update.
* @param namedType - -The name of the entity type or relationship type to update with the property to be updated.
* @param updatedNamedType - The updated entity type or relationship type.
* @param options - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is an [GraphUpdateNamedTypesResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphUpdateNamedTypesResult/).
* @since 4.33
*/
export function executeUpdateNamedType(graph: KnowledgeGraph, namedType: string, updatedNamedType: UpdateNamedType, options?: RequestOptions): Promise<GraphUpdateNamedTypesResult>;
/**
* Add a [GraphProperty](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphProperty/) for a particular entity type or relationship type.
*
* > [!WARNING]
* >
* > **Note**
* >
* > The user must have [sufficient privileges](https://enterprise.arcgis.com/en/portal/latest/administer/windows/roles.htm#TABLE_1ECAC6C4F7F549AF98045224603F0AD2)
* > to edit the data model for the knowledge graph service for this operation to be successful.
*
* @param graph - The knowledge graph to update.
* @param namedType - The name of the entity type or relationship type to update with the property to be updated.
* @param namedTypeProperties - A list of [graph properties](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphProperty/) to add to the entity type or relationship type.
* @param options - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is an [GraphAddPropertyResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphAddPropertyResult/).
* @since 4.33
*/
export function executeAddGraphProperties(graph: KnowledgeGraph, namedType: string, namedTypeProperties: GraphProperty[], options?: RequestOptions): Promise<GraphAddPropertyResult>;
/**
* Delete a [GraphProperty](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphProperty/) for a particular entity type or relationship type.
* A GraphProperty can only be deleted if the entity type or relationship type has no entity or relationship records in it.
*
*
* > [!WARNING]
* >
* > **Note**
* >
* > The user must have [sufficient privileges](https://enterprise.arcgis.com/en/portal/latest/administer/windows/roles.htm#TABLE_1ECAC6C4F7F549AF98045224603F0AD2)
* > to edit the data model for the knowledge graph service for this operation to be successful.
*
* @param graph - The knowledge graph to update.
* @param namedType - The name of the entity type or relationship type to update with the property to be updated.
* @param propertyName - The name of the [GraphProperty](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphProperty/) to delete.
* @param options - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is an [GraphDeletePropertyResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphDeletePropertyResult/).
* @since 4.33
*/
export function executeDeleteGraphProperty(graph: KnowledgeGraph, namedType: string, propertyName: string, options?: RequestOptions): Promise<GraphDeletePropertyResult>;
/** The properties of a [GraphProperty](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphProperty/) that can be updated with [executeUpdateGraphProperty()](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/#executeUpdateGraphProperty) */
export interface UpdateGraphProperties extends Partial<Pick<GraphProperty, "alias" | "editable" | "required" | "defaultVisibility" | "defaultValue" | "domain">> {}
/**
* Update a [GraphProperty](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphProperty/) for a particular entity type or relationship type in the graph.
*
* > [!WARNING]
* >
* > **Note**
* >
* > The user must have [sufficient privileges](https://enterprise.arcgis.com/en/portal/latest/administer/windows/roles.htm#TABLE_1ECAC6C4F7F549AF98045224603F0AD2)
* > to edit the data model for the knowledge graph service for this operation to be successful.
*
* @param graph - The knowledge graph to update.
* @param namedType - The name of the entity type or relationship type to update with the property to be updated.
* @param originalPropertyName - The original name of the property to update.
* @param updatedProperties - The updated properties for the entity type or relationship type property specified.
* @param options - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is an [GraphUpdatePropertyResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphUpdatePropertyResult/).
* @since 4.33
*/
export function executeUpdateGraphProperty(graph: KnowledgeGraph, namedType: string, originalPropertyName: string, updatedProperties: UpdateGraphProperties, options?: RequestOptions): Promise<GraphUpdatePropertyResult>;
/**
* Adds a [field index](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/FieldIndex/) for a particular property on an
* entity type or relationship type in a graph.
*
* > [!WARNING]
* >
* > **Note**
* >
* > The user must have [sufficient privileges](https://enterprise.arcgis.com/en/portal/latest/administer/windows/roles.htm#TABLE_1ECAC6C4F7F549AF98045224603F0AD2)
* > to edit the data model for the knowledge graph service for this operation to be successful.
*
* @param graph - The knowledge graph to update.
* @param namedType - The name of the entity type or relationship type with the property for which to add a field index.
* @param fieldIndexes - The [field indexes](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/FieldIndex/) to add.
* @param options - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is an [GraphAddFieldIndexResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphAddFieldIndexResult/).
* @since 4.33
*/
export function executeAddGraphFieldIndex(graph: KnowledgeGraph, namedType: string, fieldIndexes: FieldIndex[], options?: RequestOptions): Promise<GraphAddFieldIndexResult>;
/**
* Deletes the [field index](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/FieldIndex/) for a particular property on an
* entity type or relationship type in a graph.
*
* > [!WARNING]
* >
* > **Note**
* >
* > The user must have [sufficient privileges](https://enterprise.arcgis.com/en/portal/latest/administer/windows/roles.htm#TABLE_1ECAC6C4F7F549AF98045224603F0AD2)
* > to edit the data model for the knowledge graph service for this operation to be successful.
*
* @param graph - The knowledge graph to update.
* @param namedType - The name of the entity type or relationship type to update.
* @param fieldIndexNames - The names of the [field index](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/FieldIndex/) to delete.
* @param options - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is an [GraphDeleteFieldIndexResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphDeleteFieldIndexResult/).
* @since 4.33
*/
export function executeDeleteGraphFieldIndex(graph: KnowledgeGraph, namedType: string, fieldIndexNames: string[], options?: RequestOptions): Promise<GraphDeleteFieldIndexResult>;
/**
* Update the [search index](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/SearchIndex/) used by the knowledge graph.
* Properties added to the search index are used identify
* matches to the search term provided in [executeSearch()](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/#executeSearch) and [executeSearchStreaming()](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/#executeSearchStreaming).
*
* > [!WARNING]
* >
* > **Note**
* >
* > The user must have [sufficient privileges](https://enterprise.arcgis.com/en/portal/latest/administer/windows/roles.htm#TABLE_1ECAC6C4F7F549AF98045224603F0AD2)
* > to edit the data model for the knowledge graph service for this operation to be successful.
*
* @param graph - The knowledge graph to update.
* @param namedType - The name of the entity or relationship type to update.
* @param searchProperties - The properties of the named type with which to update the search index.
* @param options - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is an [GraphUpdateSearchIndexResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphUpdateSearchIndexResult/).
* @since 4.33
*/
export function executeUpdateSearchIndex(graph: KnowledgeGraph, namedType: string, searchProperties: ExecuteUpdateSearchIndexSearchProperties, options?: RequestOptions): Promise<GraphUpdateSearchIndexResult>;
export interface ExecuteUpdateSearchIndexSearchProperties {
/** The properties of the specified entity type or relationship type to add to the search index. */
addSearchProperties?: SearchProperties;
/** The properties of the specified entity type or relationship type to remove from the search index. */
removeSearchProperties?: SearchProperties;
}
/**
* Executes a query on [knowledge graph service's](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/)
* [graph](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/KnowledgeGraph/) resource using the Esri implementation of [openCypher](https://opencypher.org/) and returns the results.
*
* @param graph - The [knowledge graph](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/KnowledgeGraph/) associated with the service. See also [ArcGIS REST APIs - Hosted Knowledge Graph Service](https://developers.arcgis.com/rest/services-reference/enterprise/kgs-hosted-server.htm).
* @param queryArguments - Defines the [query](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphQuery/) to perform on the provided knowledge graph service.
* @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is an [GraphQueryResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphQueryResult/).
* @since 4.25
* @see [Sample - Query a knowledge graph](https://developers.arcgis.com/javascript/latest/sample-code/knowledgegraph-query/)
* @see [GraphQuery](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphQuery/)
* @see [GraphQueryResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphQueryResult/)
* @see [ArcGIS REST API - Query (Graph)](https://developers.arcgis.com/rest/services-reference/enterprise/kgs-graph-query.htm)
* @example
* // typical use case
* KnowledgeGraphModule.executeQuery(
* knowledgeGraph, //graph
* { // queryArguments
* openCypherQuery: "MATCH (n) RETURN n LIMIT 100", //query
* }).then((queryResult) => {
* // do something with the result
* });
*/
export function executeQuery(graph: KnowledgeGraph, queryArguments: GraphQuery, requestOptions?: RequestOptions): Promise<GraphQueryResult>;
/**
* Execute a streaming query on a [knowledge graph service's](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/)
* [graph](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/KnowledgeGraph/) resource.
* Streaming query returns a readable stream that must be read to access the returned graph data.
* Unlike [executeQuery()](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/#executeQuery),
* executeQueryStreaming() returns results in small chunks that can be
* processed immediately, without waiting for all results to be returned.
* Streaming query is faster and more efficient than executeQuery().
* Streaming query also retrieves all matching records even if the total exceeds the `maxRecordCount` defined
* in the service without additional queries or pagination.
* Another benefit of streaming query is that the query is encoded which means that it is far smaller than a traditional
* HTTP GET or JSON POST body. This is especially important when trying to do a query on a very large argument,
* such as a large set of Ids or intersecting a complex geometry.
*
* The [entities](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/Entity/) and [relationships](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/Relationship/)
* in the graph are queried by sending an Esri implementation of [openCypher](https://opencypher.org/) query.
*
* @param graph - The [knowledge graph](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/KnowledgeGraph/) associated with the service.
* See also [ArcGIS REST APIs - Hosted Knowledge Graph Service](https://developers.arcgis.com/rest/services-reference/enterprise/kgs-hosted-server.htm).
* @param queryArguments - Defines the [query](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphQueryStreaming/) to perform on the provided knowledge graph service.
* Optionally specify additional query parameters
* @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is an [GraphQueryStreamingResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphQueryStreamingResult/).
* @see [Sample - Query a knowledge graph](https://developers.arcgis.com/javascript/latest/sample-code/knowledgegraph-query/)
* @see [GraphQueryStreaming](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphQueryStreaming/)
* @see [GraphQueryStreamingResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphQueryStreamingResult/)
* @see [ArcGIS REST API - Query (Graph)](https://developers.arcgis.com/rest/services-reference/enterprise/kgs-graph-query.htm)
* @example
* // sample streaming query using bind parameters
* // to search for entities with a the `name` property that matches a specific string
* // or have their geometry within a bounding box.
* // get all parts bought by each supplier.
* // query returns both the supplier and the part it buys.
* const query = `MATCH (s:Supplier)-[:buys_part]-(p:Part)
* WHERE s.name=$name OR esri.graph.ST_Intersects($geom, s.geometry)
* RETURN s,p`;
*
* KnowledgeGraphModule.executeQueryStreaming(
* knowledgeGraph,
* {
* openCypherQuery: query,
* bindParameters: {
* name: "Supplier 5",
* //bounding box around the area of Washington DC, USA
* geom: new Polygon({
* rings: [
* [
* [38,-78],
* [39, -78],
* [39, -76],
* [-38, -76],
* [-38, -78],
* ],
* ],
* }),
* }
* }).then((streamingQueryResult)=>{
* // streaming query returns a readableStream which must be read to access the returned graph data
* readStream(streamingQueryResult)
* });
* @example
* // a function to read the readable stream returned from the above query
* const readStream = async (streamingQueryResult) => {
* let time = Date.now();
* let reader = streamingQueryResult.resultRowsStream.getReader();
* try {
* while (true) {
* const { done, value } = await reader.read();
* if (done) {
* console.log(`Completed database requests: ${(Date.now() - time) / 1000} seconds`);
* break;
* }
* console.log(`Chunk returned in: ${(Date.now() - time) / 1000} seconds`);
* // use the results
* // list the parts bought by each supplier
* let supplierParts = {};
* // each element of the result array will contain one supplier and one part it buys
* for (var v in value){
* let supplier = value[v][0].properties.Name
* let part = value [v][1].properties.Name
* if(!(supplier in supplierParts)){
* supplierParts[supplier] = [];
* }
* // collect parts by supplier that buys them
* supplierParts[supplier].push(part);
* console.log(supplierParts);
* // result printed to the console: {Supplier 1:[Part1], Supplier 3:[Part2, Part3]}
* }
* } catch (err) {
* if (err.name === "AbortError") {
* console.log("Request aborted as expected");
* } else {
* throw err;
* }
* }
* };
* @example
* // result stream from above query after it has been read
* "Streaming chunk returned in: 0.082 seconds"
* [
* [{
* "declaredClass": "esri.rest.knowledgeGraph.Entity",
* "properties": {
* "Name": "Supplier 1",
* "City": "Washington DC",
* "EmployeeCount": 31
* },
* "typeName": "Supplier",
* "id": "{57FDF2F3-34C8-48EF-9A3B-76ED9314C4D2}"
* },{
* "declaredClass": "esri.rest.knowledgeGraph.Entity",
* "properties": {
* "Part_ID": 695401,
* "Name": "Part1",
* "Minimum_quantity": 360
* },
* "typeName": "Part",
* "id": "{IWN51W4-1AW8-A2W6-1AW5F-1AW8F9F4W51AS}",
* }],
* [{
* "declaredClass": "esri.rest.knowledgeGraph.Entity",
* "properties": {
* "Name": "Supplier 2",
* "City": "Baltimore",
* "EmployeeCount": 53
* },
* "typeName": "Supplier",
* "id": "{1A4W8F5W-1WA8-5W6A-A1W8-A1W5F8W3S482A}"
* },{
* "declaredClass": "esri.rest.knowledgeGraph.Entity",
* "properties": {
* "Part_ID": 695401,
* "Name": "Part2",
* "Minimum_quantity": 2500
* },
* "typeName": "Part",
* "id": "{A1W5F8W4F-A1W8-1894-16A5-A86WF4A8SFWD}",
* }],
* [{
* "declaredClass": "esri.rest.knowledgeGraph.Entity",
* "properties": {
* "Name": "Supplier 2",
* "City": "Baltimore",
* "EmployeeCount": 53
* },
* "typeName": "Supplier",
* "id": "{1A4W8F5W-1WA8-5W6A-A1W8-L5H4G8RT1PK3}"
* },{
* "declaredClass": "esri.rest.knowledgeGraph.Entity",
* "properties": {
* "Part_ID": 695401,
* "Name": "Part3",
* "Minimum_quantity": 5000
* },
* "typeName": "Part",
* "id": "{PTJ51FT-KY4H-1GY5-G1Y8-G1Y5K49G8Y4GHJ}",
* }]
* ]
* @example
* // aborting the query
* // create instance of native browser abort controller
* const controller = new AbortController();
*
* // create query
* KnowledgeGraphModule.executeQueryStreaming(
* knowledgeGraph,
* {
* openCypherQuery: "MATCH (n) RETURN n LIMIT 100",
* },
* {
* signal: controller.signal,
* }
* )
* .then((streamingQueryResult) => {
* readStream(streamingQueryResult);
* })
* // indicate that the stream was aborted
* .catch((err) => {
* if (err.name === "AbortError") {
* console.log("Request aborted as expected");
* }
*
* // abort the query after half a second
* setTimeout(() => {
* console.log("Sending abort signal");
* controller.abort();
* }, 500);
*/
export function executeQueryStreaming(graph: KnowledgeGraph, queryArguments: GraphQueryEncoded, requestOptions?: RequestOptions): Promise<GraphQueryStreamingResult>;
/**
* Search the knowledge graph using a full-text index that is automatically built on the property values in the graph and returns the result. Search accepts [Lucene search syntax](https://lucene.apache.org/core/2_9_4/queryparsersyntax.html).
* Use the [DataModel](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/DataModel/) to see the indexed fields for each [RelationshipType](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/RelationshipType/) and [EntityType](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/EntityType/).
*
* @param graph - The [knowledge graph](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/KnowledgeGraph/) associated with the service. See also [ArcGIS REST APIs - Hosted Knowledge Graph Service](https://developers.arcgis.com/rest/services-reference/enterprise/kgs-hosted-server.htm).
* @param searchArguments - Defines the free text [search](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphSearch/) to run against a knowledge graph.
* @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is a
* [GraphQueryResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphQueryResult/) that contains all records matching the search. If there are no matches the result will be empty.
* @since 4.25
* @see [Sample - Search a knowledge graph](https://developers.arcgis.com/javascript/latest/sample-code/knowledgegraph-search/)
* @see [GraphSearch](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphSearch/)
* @see [GraphQueryResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphQueryResult/)
* @see [ArcGIS REST API - Search (Graph)](https://developers.arcgis.com/rest/services-reference/enterprise/kgs-graph-search.htm)
* @example
* // typical use case
* KnowledgeGraphModule.executeSearch(
* knowledgeGraph, //graph
* { // searchArguments
* searchQuery: "Sun", //search term
* typeCategoryFilter: "both" //search entities, relationships or both.
* }).then((searchResult) => {
* // do something with the result
* console.log(searchResult)
* });
* @example
* // sample search result
* {
* "declaredClass": "esri.rest.knowledgeGraph.GraphQueryResult",
* "resultRows": [
* [
* {
* "declaredClass": "esri.rest.knowledgeGraph.Entity",
* "properties": {
* "shape": {
* "declaredClass": "esri.geometry.Point",
* "cache": {},
* "hasM": false,
* "hasZ": false,
* "latitude": 53.589000000000006,
* "longitude": -0.9633,
* "type": "point",
* "extent": null,
* "spatialReference": {
* "wkid": 4326
* },
* "x": -0.9633,
* "y": 53.589000000000006
* },
* "Name": "Suncommon",
* "Employee_Count": 400
* },
* "typeName": "Company",
* "id": "{WIPJ483T-U8UI-LLK9-YUI8-Y5YK8YGD88E9}",
* }
* ],
* [
* {
* "declaredClass": "esri.rest.Relationship.Relationship",
* "originID": "{44027400-4B48-4FF2-B526-E27FC17EC246}",
* "destinationID": "{CB0CF580-3899-491E-8F10-0AD1DA4EE49B}",
* "properties": {
* "orderDay": "Sunday",
* "quantity": 15000
* },
* "typeName": "buys_part",
* "id": "{ABCDEFG-0000-1111-2222-0AD1DA4EE49B}"
* }
* ]
* }
*/
export function executeSearch(graph: KnowledgeGraph, searchArguments: GraphSearch, requestOptions?: RequestOptions): Promise<GraphQueryResult>;
/**
* Execute a streaming search on a [knowledge graph service's](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/)
* [graph](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/KnowledgeGraph/) resource.
* Streaming search returns a readable stream that must be read to access the returned data.
* Unlike [executeSearch()](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/#executeSearch), executeSearchStreaming()
* returns results in small chunks that can be processed immediately, without having to wait for all results to be returned.
* Streaming search is faster and more efficient than executeSearch(). Streaming search also retrieves all matching
* records even if the total exceeds the `searchMaxRecordCount` defined in the service without additional queries or pagination.
* Another benefit of streaming search is that the request is encoded which means that it is far smaller than a traditional
* HTTP GET or JSON POST body. This is especially important when trying to do a search on a very large argument,
* such as a large set of Ids.
*
* Streaming search accepts [Lucene search syntax](https://lucene.apache.org/core/2_9_4/queryparsersyntax.html).
* Streaming search uses a full-text index that is automatically built on the property values in the graph.
* Use the [DataModel](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/DataModel/) to see the indexed fields for each [RelationshipType](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/RelationshipType/)
* and [EntityType](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/EntityType/).
*
* @param graph - The [knowledge graph](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/KnowledgeGraph/) associated with the service. See also [ArcGIS REST APIs - Hosted Knowledge Graph Service](https://developers.arcgis.com/rest/services-reference/enterprise/kgs-hosted-server.htm).
* @param searchArguments - Define the free text [search](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphSearchStreaming/) to execute against the knowledge graph.
* Optionally specify additional search parameters.
* @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is a
* [GraphQueryStreamingResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphQueryStreamingResult/) that contains all records matching the search. If there are no matches the result will be empty.
* @see [Sample - Search a knowledge graph](https://developers.arcgis.com/javascript/latest/sample-code/knowledgegraph-search/)
* @see [GraphSearchStreaming](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphSearchStreaming/)
* @see [GraphQueryStreamingResult](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphQueryStreamingResult/)
* @example
* // example search for "solar"with additional parameters
* KnowledgeGraphModule.executeSearchStreaming(
* knowledgeGraph,
* {
* searchQuery: "solar",
* typeCategoryFilter: "both",
* returnSearchContext: false,
* start: 1,
* num: 200, //return 200 records.
* namedTypesFilter: ["Company", "Supplier", "Part"],
* idsFilter: ["{G4E8G2S8D-2GS5-98S4-3S5D-S1DE7G45DS48}",
* "{FNWI1G5W-1A5W-3A5W-8412-A1W5F4W8F7AS}",
* "{9D2D6AFD-41F1-49A4-8412-CACCC9906E88}"]
* }
* ).then((streamingSearchResult)=>{
* // the result of a streaming search is a readableStream which requires decoding.
* readStream(streamingSearchResult)
* })
* @example
* // a function to read the readable stream returned from the above query
* const readStream = async (streamingQueryResult) => {
* let time = Date.now();
* let reader = streamingQueryResult.resultRowsStream.getReader();
* try {
* while (true) {
* const { done, value } = await reader.read();
* if (done) {
* console.log(`Completed database requests: ${(Date.now() - time) / 1000} seconds`, value);
* break;
* }
* console.log(`Chunk returned in: ${(Date.now() - time) / 1000} seconds`, value)
* }
* } catch (err) {
* if (err.name === "AbortError") {
* console.log("Request aborted as expected");
* } else {
* throw err;
* }
* }
* };
* @example
* // sample result of streaming search result chunk read and printed to the console
*
* "Streaming chunk returned in: 0.082 seconds"
* [
* [{
* "declaredClass": "esri.rest.knowledgeGraph.Entity",
* "properties": {
* "Name": "Suncommon",
* "Employee_Count": 400,
* "energyType": "solar"
* },
* "typeName": "Company",
* "id": "{G4E8G2S8D-2GS5-98S4-3S5D-S1DE7G45DS48}"
* }],
* [{
* "declaredClass": "esri.rest.knowledgeGraph.Entity",
* "properties": {
* "Name": "Quality Solar Supply",
* "Supplier_code": "158B",
* "City": "New Orleans",
* },
* "typeName": "Supplier",
* "id": "{FNWI1G5W-1A5W-3A5W-8412-A1W5F4W8F7AS}"
* }],
* [{
* "declaredClass": "esri.rest.knowledgeGraph.Entity",
* "properties": {
* "Name": "Solar panel",
* "panel_type": "Polycrystalline",
* "price_per_unit": 400
* },
* "typeName": "Part",
* "id": "{9D2D6AFD-41F1-49A4-8412-CACCC9906E88}"
* }]
* ]
*/
export function executeSearchStreaming(graph: KnowledgeGraph, searchArguments: GraphSearchEncoded, requestOptions?: RequestOptions): Promise<GraphQueryStreamingResult>;
/**
* Returns all client data keys existing on the knowledge graph service associated with the given knowledge graph.
*
* @param graph - The [knowledge graph](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/KnowledgeGraph/) associated with the service. See also [ArcGIS REST APIs - Hosted Knowledge Graph Service](https://developers.arcgis.com/rest/services-reference/enterprise/kgs-hosted-server.htm).
* @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/types/#RequestOptions) to be used for the data request.
* @returns When resolved, the result is an array of the client data keys existing on the service at the time of the request.
* @example
* // typical use case
* const url = "https://myHostName.domain.com/server/rest/services/Hosted/myServiceName/KnowledgeGraphServer";
*
* const knowledgeGraph = await knowledgeGraphService.fetchKnowledgeGraph(url)
*
* KnowledgeGraphModule.fetchAllClientDataKeys(knowledgeGraph)
* .then((clientDataKeys) => {
* // do something with result
* });
*/
export function fetchAllClientDataKeys(graph: KnowledgeGraph, requestOptions?: RequestOptions): Promise<string[]>;
/**
*