ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.Data.DDL Namespace / SchemaBuilder Class / Create Method / Create(KnowledgeGraphTypeDescription) Method
Example Version

Create(KnowledgeGraphTypeDescription) Method
Enqueue the create operation on the object referred to by the ArcGIS.Core.Data.DDL.Knowledge.KnowledgeGraphTypeDescription. This method must be called on the MCT. Use QueuedTask.Run.
Syntax
Exceptions
ExceptionDescription
namedObjectTypeDescription is null
A KnowledgeGraph must be set as the datasource for this operation
This method or property must be called within the lambda passed to QueuedTask.Run.
Remarks
An object id and global id property are always added to new named object types whether explicitly specified in the namedObjectTypeDescription or not. In addition, the required origin id and destination id fields are also automatically added to all new relationship named object types (also whether explicitly specified or not). A shape description is optional. However, if the namedObjectTypeDescription includes a shape description then its spatial reference must match the spatial reference of the knowledge graph datasource (in which it is being created).
Example
Create Entity and Relationship Types with SchemaBuilder
await QueuedTask.Run(() =>
{
  using (var kg = GetKnowledgeGraph())
  {
    if (kg == null)
      return;

    var entity_name = "PhoneCall";
    var relate_name = "WhoCalledWho";

    //Entity Fields
    var descs1 =
        new List<KnowledgeGraphPropertyDescription>();
    descs1.Add(
      new KnowledgeGraphPropertyDescription("PhoneOwner", FieldType.String));
    descs1.Add(
      new KnowledgeGraphPropertyDescription("PhoneNumber", FieldType.String));
    descs1.Add(
      new KnowledgeGraphPropertyDescription("LocationID", FieldType.BigInteger));
    descs1.Add(
      new KnowledgeGraphPropertyDescription("DateAndTime", FieldType.Date));

    //Relate Fields
    var descs2 =
        new List<KnowledgeGraphPropertyDescription>();
    descs2.Add(
      new KnowledgeGraphPropertyDescription("Foo", FieldType.String));
    descs2.Add(
      new KnowledgeGraphPropertyDescription("Bar", FieldType.String));


    var includeShape = true;//change to false to omit the shape column
    var hasZ = false;
    var hasM = false;

    KnowledgeGraphEntityTypeDescription entityDesc = null;
    KnowledgeGraphRelationshipTypeDescription relateDesc = null;
    if (includeShape)
    {
      var sr = kg.GetSpatialReference();
      var shp_desc = new ShapeDescription(GeometryType.Point, sr)
      {
        HasM = hasM,
        HasZ = hasZ
      };
      entityDesc = new KnowledgeGraphEntityTypeDescription(
        entity_name, descs1, shp_desc);
      relateDesc = new KnowledgeGraphRelationshipTypeDescription(
        relate_name, descs2, shp_desc);
    }
    else
    {
      entityDesc = new KnowledgeGraphEntityTypeDescription(
        entity_name, descs1);
      relateDesc = new KnowledgeGraphRelationshipTypeDescription(
        relate_name, descs2);
    }
    //Run the schema builder
    try
    {
      SchemaBuilder sb = new(kg);
      sb.Create(entityDesc);
      sb.Create(relateDesc);
      //Use the KnowledgeGraph extension method 'ApplySchemaEdits(...)'
      //to refresh the Pro UI
      if (!kg.ApplySchemaEdits(sb))
      {
        var err_msg = string.Join(",", sb.ErrorMessages.ToArray());
        System.Diagnostics.Debug.WriteLine($"Entity/Relate Create error: {err_msg}");
      }
    }
    catch (Exception ex)
    {
      System.Diagnostics.Debug.WriteLine(ex.ToString());
    }
  }
});
Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3.4 or higher.
See Also