import type Collection from "../core/Collection.js"; import type Layer from "./Layer.js"; import type KnowledgeGraphSublayer from "./knowledgeGraph/KnowledgeGraphSublayer.js"; import type EntityType from "../rest/knowledgeGraph/EntityType.js"; import type KnowledgeGraph from "../rest/knowledgeGraph/KnowledgeGraph.js"; import type RelationshipType from "../rest/knowledgeGraph/RelationshipType.js"; import type { MultiOriginJSONSupportMixin } from "../core/MultiOriginJSONSupport.js"; import type { IdTypePair, InclusionModeDefinition } from "./knowledgeGraph/types.js"; import type { BlendLayer, BlendLayerProperties } from "./mixins/BlendLayer.js"; import type { CustomParametersMixin, CustomParametersMixinProperties } from "./mixins/CustomParametersMixin.js"; import type { OperationalLayer, OperationalLayerProperties } from "./mixins/OperationalLayer.js"; import type { PortalLayer, PortalLayerProperties } from "./mixins/PortalLayer.js"; import type { RefreshableLayer, RefreshableLayerProperties } from "./mixins/RefreshableLayer.js"; import type { ScaleRangeLayer, ScaleRangeLayerProperties } from "./mixins/ScaleRangeLayer.js"; import type { LayerProperties } from "./Layer.js"; export interface KnowledgeGraphLayerProperties extends LayerProperties, CustomParametersMixinProperties, PortalLayerProperties, OperationalLayerProperties, RefreshableLayerProperties, ScaleRangeLayerProperties, BlendLayerProperties, Partial> { /** An optional title for the KnowledgeGraphLayer. */ title?: string | null; } /** * A KnowledgeGraphLayer is a composite layer that can be created from a * [knowledge graph service](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/). * The layer contains [feature sublayers](https://developers.arcgis.com/javascript/latest/references/core/layers/KnowledgeGraphLayer/#layers) for each spatial [entity type](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/EntityType/). * The layer contains [table sublayers](https://developers.arcgis.com/javascript/latest/references/core/layers/KnowledgeGraphLayer/#tables) for each non-spatial [entity type](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/EntityType/) * and [relationship type](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/RelationshipType/) contained in the KnowledgeGraphLayer. * * Spatial entity and relationship types have [geometries](https://developers.arcgis.com/javascript/latest/references/core/geometry/Geometry/) * that allows them to be rendered in a [MapView](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/) as a * [Graphic](https://developers.arcgis.com/javascript/latest/references/core/Graphic/) with spatial context. Spatial types also contain data * [Graphic.attributes](https://developers.arcgis.com/javascript/latest/references/core/Graphic/#attributes) that provide additional information about * the real-world feature it represents; attributes may be viewed in [popup](https://developers.arcgis.com/javascript/latest/references/core/layers/knowledgeGraph/KnowledgeGraphSublayer/#popupTemplate) windows * and used for [rendering](https://developers.arcgis.com/javascript/latest/references/core/renderers/Renderer/) the layer. * Spatial type sublayers may be [queried](https://developers.arcgis.com/javascript/latest/references/core/layers/knowledgeGraph/KnowledgeGraphSublayer/#queryFeatures), [analyzed](https://developers.arcgis.com/javascript/latest/spatial-analysis/intro-geometry-operators/), * and [rendered](https://developers.arcgis.com/javascript/latest/references/core/layers/knowledgeGraph/KnowledgeGraphSublayer/#renderer) to visualize data in a spatial context. * * Non-spatial sublayers are tables which do not have a spatial column representing geographic features. These sublayers also contain attributes and can be queried. * * * > [!WARNING] * > * > **Known Limitations** * > * > A knowledgeGraphLayer can be added to an instance of a [Map](https://developers.arcgis.com/javascript/latest/references/core/Map/) and saved to an [WebMap](https://developers.arcgis.com/javascript/latest/references/core/WebMap/), but it may not be supported in ArcGIS MapViewer. * > * > KnowledgeGraphLayer can only be used with KnowledgeGraphServices on ArcGIS Enterprise 11.1 or later. * * ### Create Knowledge Graph Layer * * To create a KnowledgeGraphLayer from [knowledgeGraphService](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/), you must set the [url](https://developers.arcgis.com/javascript/latest/references/core/layers/KnowledgeGraphLayer/#url) property * to the REST endpoint of the service. For a layer to be visible in a view, it must be added to the [Map](https://developers.arcgis.com/javascript/latest/references/core/Map/) * referenced by the view. See [Map.add()](https://developers.arcgis.com/javascript/latest/references/core/Map/#add) for information about adding layers to a map. * * ```js * const KnowledgeGraphLayer = await $arcgis.import("@arcgis/core/layers/KnowledgeGraphLayer.js"); * const kgl = new KnowledgeGraphLayer({ * url: "https://sampleserver7.arcgisonline.com/arcgis/rest/services/Hosted/SupplyChain/KnowledgeGraphServer" * }); * kgl.load().then(()=>{ * map.add(kgl); // adds the layer to the map * }) * ``` * * ### Querying * * Both spatial and non-spatial sublayers can be queried using the [sublayer.queryFeatures()](https://developers.arcgis.com/javascript/latest/references/core/layers/knowledgeGraph/KnowledgeGraphSublayer/#queryFeatures) method. * A query cannot be applied to the entire KnowledgeGraphLayer. Instead, it must be applied to the individual sublayers. * * ```js * //iterate through spatial sublayers and query each * kgLayer.layers.items.forEach((sublayer)=>{ * sublayer.queryFeatures("WHERE name = 'Supplier 5'").then((results)=>{ * console.log(results) * }) * }) * ``` * * ### Data Visualization * * Features in the spatial sublayers of a KnowledgeGraphLayer are visualized by setting a [Renderer](https://developers.arcgis.com/javascript/latest/references/core/renderers/Renderer/) to the * [KnowledgeGraphSublayer.renderer](https://developers.arcgis.com/javascript/latest/references/core/layers/knowledgeGraph/KnowledgeGraphSublayer/#renderer) property of the sublayer. Features may be visualized with the same symbol using * [SimpleRenderer](https://developers.arcgis.com/javascript/latest/references/core/renderers/SimpleRenderer/), by type with [UniqueValueRenderer](https://developers.arcgis.com/javascript/latest/references/core/renderers/UniqueValueRenderer/), * with class breaks using [ClassBreaksRenderer](https://developers.arcgis.com/javascript/latest/references/core/renderers/ClassBreaksRenderer/), or with continuous color, size, or * opacity schemes using [visual variables](https://developers.arcgis.com/javascript/latest/references/core/renderers/SimpleRenderer/#visualVariables) in * any of the renderers. Symbols can only be set through a renderer and not individually on each graphic in the layer. * See the documentation for [Renderer](https://developers.arcgis.com/javascript/latest/references/core/renderers/Renderer/) and the * [Creating visualizations manually](https://developers.arcgis.com/javascript/latest/creating-visualizations-manually/) guide for more information * about the various visualization options. * *
* Read More * * ```js * //create new KnowledgeGraphLayer * const kgLayer = new KnowledgeGraphLayer({ * url: "https://sampleserver7.arcgisonline.com/arcgis/rest/services/Hosted/SupplyChain/KnowledgeGraphServer" * }); * * //define renderer for all observations * const observationRenderer = { * type: "simple", // autocasts as new SimpleRenderer() * symbol: { * type: "simple-marker", * size: 6, * color: "yellow", * outline: { // autocasts as new SimpleLineSymbol() * width: 0.5, * color: "white" * } * } * }; * * //define renderer for all users * const userRenderer = { * type: "simple", // autocasts as new SimpleRenderer() * symbol: { * type: "simple-marker", * size: 6, * color: "purple", * outline: { // autocasts as new SimpleLineSymbol() * width: 0.5, * color: "white" * } * } * }; * * //define unique value renderer for 'species' type based on the 'common_name' field * const speciesRenderer = { * type: "unique-value", // autocasts as new UniqueValueRenderer() * field: "common_name", * defaultSymbol: { type: "simple-fill" }, // autocasts as new SimpleFillSymbol() * uniqueValueInfos: [{ * // All features with value of "Yellow-banded Bumble Bee" will be blue * value: "Yellow-banded Bumble Bee", * symbol: { * type: "simple-fill", // autocasts as new SimpleFillSymbol() * color: "blue", * size: 8 * } * }, { * // All features with value of "Two-spotted Bumble Bee" will be green * value: "Two-spotted Bumble Bee", * symbol: { * type: "simple-fill", // autocasts as new SimpleFillSymbol() * color: "green", * size: 6 * } * }, { * // All features with value of "Buff-tailed Bumble Bee" will be red * value: "Buff-tailed Bumble Bee", * symbol: { * type: "simple-fill", // autocasts as new SimpleFillSymbol() * color: "orange", * size: 4 * } * }] * }; * * //when layer loads, apply renderers to sublayers * kgLayer.load().then(()=>{ * kgLayer.layers.items.forEach((sublayer)=> { * switch(sublayer.title) { * case 'Observation': * sublayer.renderer = observationRenderer; * break; * case 'User': * sublayer.renderer = userRenderer; * break; * case 'Species': * sublayer.renderer = speciesRenderer; * break; * default: * sublayer.renderer = { * type: "simple", // autocasts as new SimpleRenderer() * symbol: { * type: "simple-marker", * size: 6, * color: "white", * } * } * break; * } * }) * map.add(kgLayer); * }); * ``` * *
* * [Labels](https://developers.arcgis.com/javascript/latest/references/core/layers/support/LabelClass/) can also be set for each sublayer. * *
* Read More * * ```js * kgLayer.load().then(()=>{ * kgLayer.layers.items.forEach((sublayer)=> { * //label all points by their type. * sublayer.labelingInfo = [ * new LabelClass({ * labelExpression: `${sublayer.objectType.name}`, * symbol: { * type: "text", // autocasts as new TextSymbol() * color: [255, 255, 255, 0.7], * haloColor: [0, 0, 0, 0.85], * haloSize: 1, * font: { * size: 11 * } * } * }) * ]; * sublayer.labelsVisible = true; * }) * }) * ``` * *
* * [Popups](https://developers.arcgis.com/javascript/latest/references/core/layers/knowledgeGraph/KnowledgeGraphSublayer/#popupTemplate) can be set on each sublayer. * *
* Read More * * ```js * //create popup template for observations * const observationPopup = new PopupTemplate({ * title: "{species_guess}", * content: [{ * type: "text", * text: "Quality: {quality_grade}" * }, * { * type: "text", * text: "Place guess: {place_guess}" * }] * }); * * //create popup template for users * const userPopup = new PopupTemplate({ * title: "{name}", * content: [{ * type: "text", * text: "Observation count: {observation_count}" * }] * }); * * //create popup template for species * const speciesPopup = new PopupTemplate({ * title: "{common_name}", * content: [{ * type: "text", * text: "Scientific Name: {name}" * }] * }); * //when layer loads, apply popups to sublayers * kgLayer.load().then(()=>{ * kgLayer.layers.items.forEach((sublayer)=> { * switch(sublayer.title) { * case 'Observation': * sublayer.popupTemplate = observationPopup; * break; * case 'User': * sublayer.popupTemplate = userPopup; * break; * case 'Species': * sublayer.popupTemplate = speciesPopup; * break; * default: * sublayer.popupTemplate = new PopupTemplate({ * title: "{globalid}" * }) * break; * } * }) * map.add(kgLayer); * }); * ``` * *
* * @since 4.26 * @see [Sample - Working with KnowledgeGraphLayer](https://developers.arcgis.com/javascript/latest/sample-code/knowledgegraph-knowledgegraphlayer/) * @see [KnowledgeGraphSublayer](https://developers.arcgis.com/javascript/latest/references/core/layers/knowledgeGraph/KnowledgeGraphSublayer/) * @see [knowledgeGraphService](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/) * @see [KnowledgeGraphSublayer](https://developers.arcgis.com/javascript/latest/references/core/layers/knowledgeGraph/KnowledgeGraphSublayer/) * @see [knowledgeGraphService](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/) */ export default class KnowledgeGraphLayer extends KnowledgeGraphLayerSuperclass { constructor(properties?: KnowledgeGraphLayerProperties); /** * Defines a set of [named types](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/GraphNamedObject/) and/or * [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/) to be included in the layer. * If only a named type is specified, all instances of that type will be included * in the layer. [Sublayers](https://developers.arcgis.com/javascript/latest/references/core/layers/knowledgeGraph/KnowledgeGraphSublayer/) can be created for all named types * in the graph even if they have no instances specified in the member definition. The inclusion definition is not permanently dynamic. * It captures the data at the time of creation. For example, if `generateAllSublayers` is `true` and a new entity type is added to the knowledge graph, * that new entity type will not be added to the inclusion list. Similarly, if `useAllData` is `true` for a type, and a new record is added to * that type, the newly added record will not be automatically added to the inclusionList. * * @example * // constructing an inclusion list: * // The exact record ids of each of the records of a specific named type (entity type or relationship type) * // to include in the layer. In this case the layer will contain one record * const layerInclusionMemberDefinition = new Map(); * layerInclusionMemberDefinition.set("{1A4W8G4-W52G-W89G-1W5G-J1R4S8H52H4S}",{id:"{1A4W8G4-W52G-W89G-1W5G-J1R4S8H52H4S}"}) * * // The layerInclusionDefinition specifies whether to use all of the data in a named type or only the records * // specified in the 'members' list. In this case we only want the records specified. * const layerInclusionDefinition = { * useAllData: false, //only include instances in the member list * members: layerInclusionMemberDefinition * }; * * // The namedTypeDefinition is a map of the typeName of each type to be included. * // In this case we are only including the "Observation" entity type. * // The layerInclusionDefinition specifies exactly which "Observation" entities to include in the layer. * const namedTypeDefinition = new Map(); * namedTypeDefinition.set("Observation", layerInclusionDefinition); * * // Specify if a sublayer should be generated for all named types. * // If true, a sublayer will be created for all named types regardless of * // whether they have a list of instances to include or not. * // If there are no instances the sublayer will be empty. In this case we have set 'generateAllSubLayers' to false so the * // layer will only contain sublayers for the named types (entity types or relationship types) that are specified * // in the namedTypeDefinitions. * // Also defines the collection of named types to include in the layer. * const inclusionListDefinition = { * generateAllSublayers: false, //only create sublayers for the named types in the namedTypeDefinition * namedTypeDefinitions: namedTypeDefinition * } * @example * //examples of the inclusionModeDefinition structure inside the KnowledgeGraphLayer * * //the layer will only contain one sublayer (for 'supplier') and that sublayer will consist of one entity. * { * generateAllSublayers: false, * namedTypeDefinition:[{ * key: "supplier", * value:{ * useAllData: false, * members: [{ * key: "{1A4W8G4-W52G-W89G-1W5G-J1R4S8H52H4S}", * value: { * id: "{1A4W8G4-W52G-W89G-1W5G-J1R4S8H52H4S}", * } * }] * } * }] * } * * // this layer will contain a sublayer for all named types in the graph * // ('Observation', 'User', 'Species', "Observed", "Reviewed", "ObservedIn") * // but only the 'Observation' sublayer will contain data. * // The Observation sublayer will contain exactly one entity. * { * generateAllSublayers: true, * namedTypeDefinition:[{ * key: "Observation", * value:{ * useAllData: false, * members: [{ * key: "{32CBD5CB-EE31-4714-B14F-57BFE36AE094}", * value: { * id: "{32CBD5CB-EE31-4714-B14F-57BFE36AE094}", * } * }] * } * }] * } * * // this layer will contain a sublayer for all named types in the graph * // ('Observation', 'User', 'Species', "Observed", "Reviewed", "ObservedIn") * // but only the 'Observation' sublayer will contain data. * // the 'Observation' sublayer will contain all instance of the Observation entity type * { * generateAllSublayers: true, * namedTypeDefinition:[{ * key: "Observation", * value:{ * useAllData: true * } * }] * } * * // A more complex example: * { * //sublayers will only be created for the types listed * generateAllSublayers: false, * namedTypeDefinitions: { * //include all `Species` entities that exist at the time the layer is created * Species: { * useAllData: true * }, * //include all `User` entities that exist at the time the layer is created * User: { * useAllData: true * }, * //include all only the specified `Observation` entities * Observation: { * useAllData:false, * members: { * "{941A7425-C45D-4940-A2E8-F3611973EC8A}": { * id: "{941A7425-C45D-4940-A2E8-F3611973EC8A}" * }, * "{94DC1D53-4043-4D0B-8CF7-18B690414118}": { * id: "{94DC1D53-4043-4D0B-8CF7-18B690414118}" * }, * //This entity has a fixed location so will remain in the same place regardless of the layout applied. * //the other entities will move around it * "{4E1D1ACE-6252-4BA4-B76E-CDEDFE9B0AB1}": { * id: "{4E1D1ACE-6252-4BA4-B76E-CDEDFE9B0AB1}", * }, * "{559312DF-893C-44E2-AD86-BAA73CD49719}": { * id: "{559312DF-893C-44E2-AD86-BAA73CD49719}" * }, * "{158A2D46-3EFF-4479-BC57-E6981FCB80B6}": { * id: "{158A2D46-3EFF-4479-BC57-E6981FCB80B6}" * }, * "{40AD70FC-CD7D-4928-B555-38EA49675944}": { * id: "{40AD70FC-CD7D-4928-B555-38EA49675944}" * }, * "{3A5B8F11-5971-4A46-99AC-F509CA59B517}": { * id: "{3A5B8F11-5971-4A46-99AC-F509CA59B517}" * } * } * }, * //include all `Observed` relationships that exist at the time the layer is created * Observed: { * useAllData: true * }, * //include all `ObservedIn` relationships that exist at the time the layer is created * ObservedIn: { * useAllData: true * } * } * } */ accessor inclusionModeDefinition: InclusionModeDefinition | null | undefined; /** * The [data model](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/DataModel/), [service definition](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/ServiceDefinition/) and [url](https://developers.arcgis.com/javascript/latest/references/core/layers/KnowledgeGraphLayer/#url) of the * [knowledge graph service](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/) that contains the data for the KnowledgeGraphLayer. */ get knowledgeGraph(): KnowledgeGraph; /** * A collection of operational [KnowledgeGraphSublayer](https://developers.arcgis.com/javascript/latest/references/core/layers/knowledgeGraph/KnowledgeGraphSublayer/). Each layer represents 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/) sublayer. Each feature contained in each sublayer has a [Geometry](https://developers.arcgis.com/javascript/latest/references/core/geometry/Geometry/) * that allows it to be rendered as a [Graphic](https://developers.arcgis.com/javascript/latest/references/core/Graphic/) with spatial context on the [View](https://developers.arcgis.com/javascript/latest/references/core/views/View/). * Features within the layer may also contain data [Graphic.attributes](https://developers.arcgis.com/javascript/latest/references/core/Graphic/#attributes) that provide additional information that may be viewed in [Popup](https://developers.arcgis.com/javascript/latest/references/core/widgets/Popup/). * These layers can also be [queried](https://developers.arcgis.com/javascript/latest/references/core/layers/knowledgeGraph/KnowledgeGraphSublayer/#queryFeatures) and [analyzed](https://developers.arcgis.com/javascript/latest/spatial-analysis/intro-geometry-operators/). * * @example * //to access individual sublayers to add or modify properties such as the renderer, popups and labels * KnowledgeGraphLayer.layers.items.forEach((sublayer)=>{ * sublayer.popupTemplate = new PopupTemplate({ * title: "{common_name}", * content: [{ * type: "text", * text: "Scientific Name: {name}" * }] * }); * }) */ get layers(): Collection; /** The [entity types](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/EntityType/) included in the KnowledgeGraphLayer. */ get memberEntityTypes(): EntityType[]; /** The [relationship types](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/RelationshipType/) included in the KnowledgeGraphLayer. */ get memberRelationshipTypes(): RelationshipType[]; /** Contains the sublayer ids that have been cached. */ get sublayerIdsCache(): Map>; /** * All non-spatial [entity type](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/EntityType/) and [relationship type](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/RelationshipType/) * sublayers. They have the same structure as the spatial [sublayers](https://developers.arcgis.com/javascript/latest/references/core/layers/KnowledgeGraphLayer/#layers) but the `geometryType` is null. * These layers can also be [queried](https://developers.arcgis.com/javascript/latest/references/core/layers/knowledgeGraph/KnowledgeGraphSublayer/#queryFeatures) and [analyzed](https://developers.arcgis.com/javascript/latest/spatial-analysis/intro-geometry-operators/). */ get tables(): Collection; /** An optional title for the KnowledgeGraphLayer. */ accessor title: string | null | undefined; /** The layer type. */ get type(): "knowledge-graph"; /** The url of the [knowledge graph service](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraphService/). */ accessor url: string | null | undefined; /** * Adds new entities or relationships to the knowledge graph layer. This method modifies the [inclusionModeDefinition](https://developers.arcgis.com/javascript/latest/references/core/layers/KnowledgeGraphLayer/#inclusionModeDefinition). * If the entity type or relationship type of the record already exists in the graph, the record will be added * to the appropriate sublayer. If the named type is not already in the knowledge graph layer a new sublayer * will be added to the knowledge graph layer. * * > [!WARNING] * > * > **Known Limitations** * > * > `addRecords` can only be used on a knowledge graph layer that is defined with an [inclusionModeDefinition](https://developers.arcgis.com/javascript/latest/references/core/layers/KnowledgeGraphLayer/#inclusionModeDefinition). * * @param records - An array of the records to add to the knowledge graph layer. * @returns Resolves when the records are retrieved from the knowledge graph service and added to the knowledge graph layer. * @example * const initializeLayer = async() => { * //fetch the knowledge graph * knowledgeGraph = await KnowledgeGraphService.fetchKnowledgeGraph(url) * //query the knowledge graph to get only the research grade observations * observationList = await KnowledgeGraphService.executeQuery(knowledgeGraph, { * openCypherQuery: `MATCH (o:Observation{quality_grade: "research"}) RETURN o LIMIT 10` * }) * //Define an inclusion list * let members = new Map(); * for (observation of observationList.resultRows){ * members.set(observation[0].id,{id:observation[0].id}) * } * let namedTypes = new Map(); * namedTypes.set("Observation", { useAllData: false, members: members }); * const inclusionDef = { * generateAllSublayers: false, * namedTypeDefinitions: namedTypes * } * //create the layer * const compositeLayer = new KnowledgeGraphLayer({ * url: url, * inclusionModeDefinition: inclusionDef * }); * map.add(compositeLayer); * //add records to the layer * await compositeLayer.addRecords([{id:"{001899F8-6A59-462A-8507-DD65D690AD48}", typeName:"Observation"}]) * } * initializeLayer() */ addRecords(records: IdTypePair[]): Promise; /** * Converts a given sublayer to use dynamic membership, meaning all records of the sublayer's named type will be included in the layer. * * @param typeName - The name of the named type to convert */ convertSublayerToDynamicData(typeName: string): void; /** * Converts a given sublayer to use explicit membership, with an empty member list. * * @param typeName - The name of the named type to convert */ convertSublayerToExplicitMembership(typeName: string): void; /** Converts the layer to use explicit membership with an empty inclusion definition for all existing sublayers. Specific entities and relationships can then be added to the layer using the addRecords method. */ convertToExplicitMembership(): void; /** Converts the layer to use all data for its existing sublayers. */ convertToFullyDynamicData(): void; /** * @param typeName - The name of the named type to create a sublayer for * @returns Resolves when the sublayer is created and added to the layer. */ createSublayerForNamedType(typeName: string): Promise; /** Assumes that data for all of the members defined in the inclusionModeDefinition is already loaded into local storage. This will optimize layer load times. */ loadLayerAssumingLocalCache(): void; /** * Removes entities or relationships from the knowledge graph layer. This method only removes records from the knowledge graph layer, * all records will remain in the [knowledge graph](https://developers.arcgis.com/javascript/latest/references/core/layers/KnowledgeGraphLayer/#knowledgeGraph). * * > [!WARNING] * > * > **Known Limitations** * > * > `removeRecords` can only be used on records explicitly included as members in the [inclusionModeDefinition](https://developers.arcgis.com/javascript/latest/references/core/layers/KnowledgeGraphLayer/#inclusionModeDefinition). * > You cannot remove records from named type [KnowledgeGraphSublayers](https://developers.arcgis.com/javascript/latest/references/core/layers/knowledgeGraph/KnowledgeGraphSublayer/) * > that have `useAllData:True` or knowledge graph layers with * > no inclusionModeDefinition. * * @param records - The id and entity type or relationship type of the record to be added to the knowledge graph layer. * @returns The [IdTypePairs](https://developers.arcgis.com/javascript/latest/references/core/layers/knowledgeGraph/types/#IdTypePair) for the records removed from the knowledge graph layer. * @example * const initializeLayer = async() => { * //fetch the knowledge graph * knowledgeGraph = await KnowledgeGraphService.fetchKnowledgeGraph(url) * //query the knowledge graph to get only the research grade observations * observationList = await KnowledgeGraphService.executeQuery(knowledgeGraph, { * openCypherQuery: `MATCH (o:Observation{quality_grade: "research"}) RETURN o LIMIT 10` * }) * //Define an inclusion list. Records can only be removed from the knowledge graph layer * // if they are explicitly included as members of a named type in the inclusionModeDefinition * let members = new Map(); * for (observation of observationList.resultRows){ * members.set(observation[0].id,{id:observation[0].id}) * } * let namedTypes = new Map(); * namedTypes.set("Observation", { useAllData: false, members: members }); * const inclusionDef = { * generateAllSublayers: false, * namedTypeDefinitions: namedTypes * } * //create the layer * const compositeLayer = new KnowledgeGraphLayer({ * url: url, * inclusionModeDefinition: inclusionDef * }); * map.add(compositeLayer); * //remove records from the inclusionModeDefinition * await compositeLayer.removeRecords([{id:"{001899F8-6A59-462A-8507-DD65D690AD48}", typeName:"Observation"}]) * } * initializeLayer() */ removeRecords(records: IdTypePair[]): Promise; } declare const KnowledgeGraphLayerSuperclass: typeof Layer & typeof CustomParametersMixin & typeof MultiOriginJSONSupportMixin & typeof PortalLayer & typeof OperationalLayer & typeof RefreshableLayer & typeof ScaleRangeLayer & typeof BlendLayer