public KnowledgeGraphCentralityScores Scores {get;}
Public ReadOnly Property Scores As KnowledgeGraphCentralityScores
public KnowledgeGraphCentralityScores Scores {get;}
Public ReadOnly Property Scores As KnowledgeGraphCentralityScores
//using ArcGIS.Core.Data.Knowledge.Extensions; await QueuedTask.Run(() => { //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()}"); } } });
//using ArcGIS.Core.Data.Knowledge.Extensions; await QueuedTask.Run(() => { ///var config = ...; //var subGraph = ...; //var measures = ...; var results = kg.ComputeCentrality(config, subGraph, 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 } } } });
Target Platforms: Windows 11, Windows 10