Public ReadOnly Property Scores As KnowledgeGraphCentralityScores
public KnowledgeGraphCentralityScores Scores {get;}
Public ReadOnly Property Scores As KnowledgeGraphCentralityScores
public KnowledgeGraphCentralityScores Scores {get;}
{
//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()}");
}
}
});
}
{
//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
}
}
}
});
}
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)