ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Mapping Namespace / KnowledgeGraphLayerCreationParams Class
Members Example Version

KnowledgeGraphLayerCreationParams Class
Represents an object to initialize and create a KnowledgeGraphLayer with pre-defined properties such as a filter set, visibility, etc..
Object Model
KnowledgeGraphLayerCreationParams ClassLayer ClassLayer ClassLayer ClassLayer ClassLayer ClassCIMDataConnection ClassKnowledgeGraphLayerIDSet ClassItem ClassKnowledgeGraph ClassCIMLayerDocument Class
Syntax
public class KnowledgeGraphLayerCreationParams : LayerCreationParams 
Example
Create a KG Layer containing all Entity and Relate types
QueuedTask.Run(() =>
{
  //With a connection to a KG established or source uri available...
  //Create a KnowledgeGraphLayerCreationParams
  var kg_params = new KnowledgeGraphLayerCreationParams(kg)
  {
    Name = "KG_With_All_Types",
    IsVisible = false
  };
  //Or
  var kg_params2 = new KnowledgeGraphLayerCreationParams(new Uri(url))
  {
    Name = "KG_With_All_Types",
    IsVisible = false
  };
  //Call layer factory with map or group layer container. 
  //A KG layer containing a feature layer and/or standalone table per
  //entity and relate type (except provenance) is created
  var kg_layer = LayerFactory.Instance.CreateLayer<KnowledgeGraphLayer>(
      kg_params, map);

});
Create a KG Layer containing a subset of Entity and Relate types
QueuedTask.Run(() =>
{
  //To create a KG layer (on a map or link chart) with a subset of
  //entities and relates, you must create an "id set". The workflow
  //is very similar to how you would create a SelectionSet.

  //First, create a dictionary containing the names of the types to be
  //added plus a corresponding list of ids (just like with a selection set).
  //Note: null or an empty list means add all records for "that" type..
  var kg_datamodel = kg.GetDataModel();
  //Arbitrarily get the name of the first entity and relate type
  var first_entity = kg_datamodel.GetEntityTypes().Keys.First();
  var first_relate = kg_datamodel.GetRelationshipTypes().Keys.First();

  //Make entries in the dictionary for each
  var dict = new Dictionary<string, List<long>>();
  dict.Add(first_entity, new List<long>());//Empty list means all records
  dict.Add(first_relate, null);//null list means all records
  //or specific records - however the ids are obtained
  //dict.Add(entity_or_relate_name, new List<long>() { 1, 5, 18, 36, 78});

  //Create the id set...
  var idSet = KnowledgeGraphLayerIDSet.FromDictionary(kg, dict);

  //Create the layer params and assign the id set
  var kg_params = new KnowledgeGraphLayerCreationParams(kg)
  {
    Name = "KG_With_ID_Set",
    IsVisible = false,
    IDSet = idSet
  };

  //Call layer factory with map or group layer container
  //A KG layer containing just the feature layer(s) and/or standalone table(s)
  //for the entity and/or relate types + associated records will be created
  var kg_layer = LayerFactory.Instance.CreateLayer<KnowledgeGraphLayer>(
      kg_params, map);

});
Using LayerFactory.Instance.CanCreateLayer with KG Create Layer Params
QueuedTask.Run(() =>
{
  //Feature class and/or standalone tables representing KG entity and
  //relate types can only be added to a map (or link chart) as a child
  //of a KnowledgeGraph layer....

  //For example:
  var fc = kg.OpenDataset<FeatureClass>("Some_Entity_Or_Relate_Name");
  try
  {
    //Attempting to create a feature layer containing the returned fc
    //NOT ALLOWED - can only be a child of a KG layer
    var fl_params_w_kg = new FeatureLayerCreationParams(fc);
    //CanCreateLayer will return false
    if (!(LayerFactory.Instance.CanCreateLayer<FeatureLayer>(
      fl_params_w_kg, map)))
    {
      System.Diagnostics.Debug.WriteLine(
        $"Cannot create a feature layer for {fc.GetName()}");
      return;
    }
    //This will throw an exception
    LayerFactory.Instance.CreateLayer<FeatureLayer>(fl_params_w_kg, map);
  }
  catch (Exception ex)
  {
    System.Diagnostics.Debug.WriteLine(ex.ToString());
  }

  //Can only be added as a child of a parent KG
  var dict = new Dictionary<string, List<long>>();
  dict.Add(fc.GetName(), new List<long>());
  var kg_params = new KnowledgeGraphLayerCreationParams(kg)
  {
    Name = $"KG_With_Just_{fc.GetName()}",
    IsVisible = false,
    IDSet = KnowledgeGraphLayerIDSet.FromDictionary(kg, dict)
  };
  var kg_layer = LayerFactory.Instance.CreateLayer<KnowledgeGraphLayer>(
    kg_params, map);

});
Inheritance Hierarchy

System.Object
   ArcGIS.Desktop.Mapping.BaseCreationParams
      ArcGIS.Desktop.Mapping.MapMemberCreationParams
         ArcGIS.Desktop.Mapping.LayerCreationParams
            ArcGIS.Desktop.Mapping.KnowledgeGraphLayerCreationParams

Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3.2 or higher.
See Also