ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Core.Data.Knowledge.Analytics Namespace / KnowledgeGraphCentralityResults Class / Scores Property
Example

In This Topic
    Scores Property
    In This Topic
    Gets the centrality scores for the entities in the centrality analysis.
    Syntax
    Public ReadOnly Property Scores As KnowledgeGraphCentralityScores
    public KnowledgeGraphCentralityScores Scores {get;}
    Example
    Process Centrality Results
    {
      //using ArcGIS.Core.Data.Knowledge.Extensions;
    
      await QueuedTask.Run(() =>
      {
        //using(var kg = ....) {
        //use defaults...
        var kg_config = new CIMKnowledgeGraphCentralityConfiguration();
    
        //include all entities from the kg in the subgraph
        //(no filters)
        var kg_subgraph = new CIMKnowledgeGraphSubGraph();
    
        //include all centrality measures
        CentralityMeasure[] measures = [
          CentralityMeasure.Degree,
    CentralityMeasure.InDegree,
    CentralityMeasure.OutDegree,
    CentralityMeasure.Coreness,
    CentralityMeasure.Betweenness,
    CentralityMeasure.Closeness,
    CentralityMeasure.Harmonic,
    CentralityMeasure.Eigenvector,
    CentralityMeasure.PageRank
        ];
    
        //compute centrality
        var kg_centrality_results = kg.ComputeCentrality(
                                          kg_config, kg_subgraph, measures);
        //output results - results include measure scores for all entities
        //in all types in the subgraph
        System.Diagnostics.Debug.WriteLine("Centrality Results:");
        foreach (var named_type in kg_centrality_results.NamedTypes)
        {
          System.Diagnostics.Debug.WriteLine($"Named type: {named_type}");
          foreach (var uid in kg_centrality_results.GetUidsForNamedType(named_type))
          {
            //measure scores include one score per measure in the input measures array
            var scores = kg_centrality_results.Scores[uid];
            StringBuilder sb = new StringBuilder();
            var sep = "";
            //or use kg_centrality_results.Scores.Measures.Length
            //kg_centrality_results.Scores.Measures is there for convenience
            for (int m = 0; m < measures.Length; m++)
            {
              sb.Append($"{sep}{measures[m].ToString()}: {scores[m]}");
              sep = ", ";
            }
            System.Diagnostics.Debug.WriteLine($"  '{uid}' {sb.ToString()}");
          }
        }
      });
    }
    Output Centrality Results
    {
      //using ArcGIS.Core.Data.Knowledge.Extensions;
    
      await QueuedTask.Run(() =>
      {
        ///var kgConfig = ...;
        //var kgSubgraph = ...;
        //var measures = ...;
        //using(var kg = ...) {
        var results = kg.ComputeCentrality(kgConfig, kgSubgraph, measures);
        //loop through each (entity) named type (relates are never included in results)
        foreach (var named_type in results.NamedTypes)
        {
          //Get the entity uids for each named type
          foreach (var uid in results.GetUidsForNamedType(named_type))
          {
            //Get the scores for each uid via the [] indexer on "Scores"
            var scores = results.Scores[uid];
            //There is one score per measure in the input measures array
            //Note: results.Scores.Measures is also provided for convenience...
            //for (int m = 0; m < results.Scores.Measures.Length; m++)
            for (int m = 0; m < measures.Length; m++)
            {
              var score = scores[m];//score for the given measure
                                    //TODO - use measure score
    
            }
          }
        }
      });
    }
    Requirements

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

    ArcGIS Pro version: 3.6 or higher.
    See Also