//using ArcGIS.Core.Data.Knowledge.Extensions;
await QueuedTask.Run(() =>
{
//configure centrality with custom settings
var kg_config = new CIMKnowledgeGraphCentralityConfiguration()
{
RelationshipsInterpretation = CentralityRelationshipInterpretation.Directed,
MultiedgeFactor = 1.0,//cumulative importance
Normalization = CentralityScoresNormalization.None,
DefaultRelationshipCost = 1.0,
DefaultRelationshipImportance = 1.0,
RelationshipCostProperty = string.Empty,
RelationshipImportanceProperty = string.Empty
};
//include all entities from the kg in the subgraph
//(no filters)
var kg_subgraph = new CIMKnowledgeGraphSubGraph();
//include the relevant centrality measures
CentralityMeasure[] measures = [
CentralityMeasure.Degree,
CentralityMeasure.InDegree,
CentralityMeasure.OutDegree,
CentralityMeasure.Betweenness,
CentralityMeasure.Closeness,
CentralityMeasure.Harmonic,
CentralityMeasure.Eigenvector,
CentralityMeasure.PageRank
];
//Note: CentralityMeasure.Coreness cannot be calculated
//with directed relationships, so it is not included here.
//Specfying Coreness (with directed or reveresed relationships) will
//throw an exception
//compute centrality
var kg_centrality_results = kg.ComputeCentrality(
kg_config, kg_subgraph, measures);
//TODO process results
});