ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Core.Data.DDL.Knowledge Namespace / KnowledgeGraphPropertyDescription Class / KnowledgeGraphPropertyDescription Constructor / KnowledgeGraphPropertyDescription Constructor(KnowledgeGraphProperty)
The property to use as the basis for the property description
Example

In This Topic
    KnowledgeGraphPropertyDescription Constructor(KnowledgeGraphProperty)
    In This Topic
    Syntax
    Public Function New( _
       ByVal property As KnowledgeGraphProperty _
    )
    public KnowledgeGraphPropertyDescription( 
       KnowledgeGraphProperty property
    )

    Parameters

    property
    The property to use as the basis for the property description
    Exceptions
    ExceptionDescription
    The field type of a FieldDescription cannot be Geometry
    property is null
    Remarks
    Use a ArcGIS.Core.Data.DDL.ShapeDescription if the underlying field type of the property is ArcGIS.Core.Data.FieldType.Geometry or a System.ArgumentException will be thrown.
    Example
    Modify Entity and Relationship Type Schemas with SchemaBuilder
    {
      await QueuedTask.Run(() =>
      {
        using (var kg = GetKnowledgeGraph(url))
        {
          var entity_name = "PhoneCall";
          var relate_name = "WhoCalledWho";
    
          var kvp_entity = kg.GetDataModel().GetEntityTypes()
               .First(r => r.Key == entity_name);
          var kvp_relate = kg.GetDataModel().GetRelationshipTypes()
                         .First(r => r.Key == relate_name);
    
          //Let's delete one field and add a new one from each
          //A field gets deleted implicitly if it is not included in the list of
          //fields - or "properties" in this case....so we will remove the last
          //property from the list
          var entity_props = kvp_entity.Value.GetProperties().Reverse().Skip(1).Reverse();
          var prop_descs = new List<KnowledgeGraphPropertyDescription>();
    
          foreach (var prop in entity_props)
          {
            if (prop.FieldType == FieldType.Geometry)
            {
              continue;//skip shape
            }
            var prop_desc = new KnowledgeGraphPropertyDescription(prop);
            prop_descs.Add(prop_desc);
          }
          //deal with shape - we need to keep it
          //SchemaBuilder deletes any field not included in the "modify" list
          ShapeDescription shape_desc = null;
          if (kvp_entity.Value.GetIsSpatial())
          {
            var geom_def = kvp_entity.Value.GetShapeDefinition();
            var shape_name = kvp_entity.Value.GetShapeField();
            shape_desc = new ShapeDescription(
              shape_name, geom_def.geometryType, geom_def.sr);
          }
          //add the new entity property
          prop_descs.Add(
            KnowledgeGraphPropertyDescription.CreateStringProperty("foo", 10));
          //make a description for the entity type - ok if shape_desc is null
          var entityDesc = new KnowledgeGraphEntityTypeDescription(
            entity_name, prop_descs, shape_desc);
    
          //Add the entity type description to the schema builder using 'Modify'
          SchemaBuilder sb = new(kg);
          sb.Modify(entityDesc);
    
          //Repeat for the relationship - assuming we have at least one custom attribute field
          //that can be deleted on our relationship schema...
          var rel_props = kvp_relate.Value.GetProperties().Reverse().Skip(1).Reverse();
          var rel_prop_descs = new List<KnowledgeGraphPropertyDescription>();
    
          foreach (var prop in rel_props)
          {
            if (prop.FieldType == FieldType.Geometry)
            {
              continue;//skip shape
            }
            var prop_desc = new KnowledgeGraphPropertyDescription(prop);
            rel_prop_descs.Add(prop_desc);
          }
          //deal with shape - we need to keep it
          //SchemaBuilder deletes any field not included in the "modify" list
          ShapeDescription shape_desc_rel = null;
          if (kvp_relate.Value.GetIsSpatial())
          {
            var geom_def = kvp_relate.Value.GetShapeDefinition();
            var shape_name = kvp_relate.Value.GetShapeField();
            shape_desc_rel = new ShapeDescription(
              shape_name, geom_def.geometryType, geom_def.sr);
          }
          //add a new relationship property
          rel_prop_descs.Add(
            KnowledgeGraphPropertyDescription.CreateStringProperty("bar", 10));
          //make a description for the relationship type - ok if shape_desc is null
          var relDesc = new KnowledgeGraphRelationshipTypeDescription(
            relate_name, rel_prop_descs, shape_desc_rel);
    
          //Add the relationship type description to the schema builder using 'Modify'
          sb.Modify(relDesc);
    
          //Run the schema builder
          try
          {
            //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 Modify error: {err_msg}");
            }
          }
          catch (Exception ex)
          {
            System.Diagnostics.Debug.WriteLine(ex.ToString());
          }
        }
      });
    }
    Requirements

    Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.4 or higher.
    See Also