ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.Data.DDL.Knowledge Namespace / KnowledgeGraphRelationshipTypeDescription Class / KnowledgeGraphRelationshipTypeDescription Constructor / KnowledgeGraphRelationshipTypeDescription Constructor(String,IEnumerable<KnowledgeGraphPropertyDescription>)
The name to use for the description object
The collection of properties for the description object
Example

In This Topic
    KnowledgeGraphRelationshipTypeDescription Constructor(String,IEnumerable<KnowledgeGraphPropertyDescription>)
    In This Topic
    Construct a KnowledgeGraphRelationshipTypeDescription with the given name and collection of property descriptions. This method must be called on the MCT. Use QueuedTask.Run.
    Syntax

    Parameters

    name
    The name to use for the description object
    propertyDescriptions
    The collection of properties for the description object
    Exceptions
    ExceptionDescription
    name is invalid
    This method or property must be called within the lambda passed to QueuedTask.Run.
    Remarks
    The name will be used for a new relationship type if the description object is used for purposes of creation. Otherwise, it will be used to identify an existing relationship type if the description object is used for the purposes of modify or delete.
    Note: An ObjectID and GlobalID property description will automatically be added to the description object within the ArcGIS.Core.Data.DDL.SchemaBuilder (if these property descriptions were not included in the input propertyDescriptions collection). The underlying origin and destination entity id fields present on all relationship types will also be automatically be added (if they are missing also).
    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