ArcGIS Pro 3.5 API Reference Guide
ArcGIS.Core.Data.Knowledge Namespace / KnowledgeGraphPropertyInfo Class
Members Example

In This Topic
    KnowledgeGraphPropertyInfo Class
    In This Topic
    Class representing information about the names of the unique identifier properties in a knowledge graph. See KnowledgeGraph.GetPropertyNameInfo.
    Object Model
    KnowledgeGraphPropertyInfo ClassDocumentPropertyInfo ClassProvenancePropertyInfo Class
    Syntax
    public sealed class KnowledgeGraphPropertyInfo 
    Public NotInheritable Class KnowledgeGraphPropertyInfo 
    Example
    Get Whether KG Supports Provenance using KnowledgeGraphPropertyInfo
    internal void KnowledgeGraphProvenance(KnowledgeGraph kg)
    {
      // use the KnowledgeGraphPropertyInfo
      var propInfo = kg.GetPropertyNameInfo();
      var supportsProvenance = propInfo.SupportsProvenance;
      var provenanceType = propInfo.ProvenanceTypeName;
      var provenanceInfo = propInfo.ProvenancePropertyInfo;
    }
    
    Get Whether KG Supports Documents using KnowledgeGraphPropertyInfo
    internal void KnowledgeGraphDocuments(KnowledgeGraph kg)
    {
      // use the KnowledgeGraphPropertyInfo
      var propInfo = kg.GetPropertyNameInfo();
      var supportsDocs = propInfo.SupportsDocuments;
      var documentType = propInfo.DocumentTypeName;
      var documentInfo = propInfo.DocumentPropertyInfo;
    }
    
    Create a new Relationship from Existing Entities 1
    var create_rel = await QueuedTask.Run(() =>
    {
      //Instantiate an operation for the Create
      var edit_op = new EditOperation()
      {
        Name = "Create a new relationship record",
        SelectNewFeatures = true
      };
    
      //Use datasets or feature layer(s) or standalone table(s)
      //Get a reference to the KnowledgeGraph
      //var kg = ... ; 
    
      //We will use a relate called 'HasEmployee' to relate an Organization w/ a Person
      //Use either tables or map members to get the rows to be related...
      var org_fc = kg.OpenDataset<FeatureClass>("Organization");
      var person_tbl = kg.OpenDataset<Table>("Person");
    
      //Get the relationship dataset
      //We can use either a table or standalone table
      var emp_tbl = kg.OpenDataset<Table>("HasEmployee");
    
      //we need the names of the origin and destination relationship properties
      var kg_prop_info = kg.GetPropertyNameInfo();
    
      //Arbitrarily use the first record from the two entity datasets "to be" related
      //Entities are always related by Global ID. Origin to Destination specifies the
      //direction (of the relate).
      //
      //Populate the attributes for the relationship
      var attribs = new Dictionary<string, object>();
    
      using (var rc = org_fc.Search())
      {
        if (rc.MoveNext())
          //Use the KnowledgeGraphPropertyInfo to avoid hardcoding...
          attribs[kg_prop_info.OriginIDPropertyName] = rc.Current.GetGlobalID();
      }
      using (var rc = person_tbl.Search())
      {
        if (rc.MoveNext())
          //Use the KnowledgeGraphPropertyInfo to avoid hardcoding...
          attribs[kg_prop_info.DestinationIDPropertyName] = rc.Current.GetGlobalID();
      }
    
      //Add any extra attribute information for the relation as needed
      attribs["StartDate"] = new DateTimeOffset(DateTime.Now);
    
      //Add a create for the relationship to the operation
      edit_op.Create(emp_tbl, attribs);
    
      //Do the create
      return edit_op.Execute();
    });
    
    Create a Provenance Record 2
    await QueuedTask.Run(() =>
    {
    
      // check if provenance supported
      var propInfo = kg.GetPropertyNameInfo();
      if (!propInfo.SupportsProvenance)
        return;
    
      //Instantiate an operation for the Create
      var edit_op = new EditOperation()
      {
        Name = "Create a new provenance record",
        SelectNewFeatures = true
      };
    
      var provName = propInfo.ProvenanceTypeName;
    
      //we will add a row to the provenance for person entity
      var person_tbl = kg.OpenDataset<Table>("Person");
    
      //Arbitrarily retrieve the first "person" row
      var instance_id = Guid.Empty;
      using (var rc = person_tbl.Search())
      {
        if (!rc.MoveNext())
          return;
        instance_id = rc.Current.GetGlobalID();//Get the global id
      }
    
      var originHandle = new RowHandle(person_tbl, instance_id);
      var pd = new KnowledgeGraphProvenanceDescription(originHandle, "name", KnowledgeGraphSourceType.Document, "Annual Review 2024", "HR records", "Rock star");
    
      //Create the provenance row
      edit_op.Create(pd);
      if (edit_op.Execute())
      {
        //TODO: Operation succeeded
      }
    
    });
    
    Inheritance Hierarchy

    System.Object
       ArcGIS.Core.Data.Knowledge.KnowledgeGraphPropertyInfo

    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3.4 or higher.
    See Also