PropagationResult.java
package com.taxonomy.catalog.service;
import com.taxonomy.dto.TaxonomyRelationDto;
import java.util.List;
import java.util.Map;
/**
* Result of relevance propagation across relations.
*/
public class PropagationResult {
/** nodeCode → propagated relevance (0.0–1.0) */
private final Map<String, Double> relevanceMap;
/** nodeCode → hop distance from the nearest anchor */
private final Map<String, Integer> hopDistanceMap;
/** nodeCode → explanation why this node was included */
private final Map<String, String> reasonMap;
/** Relations that were actually traversed and used in propagation */
private final List<TraversedRelation> traversedRelations;
public PropagationResult(Map<String, Double> relevanceMap,
Map<String, Integer> hopDistanceMap,
Map<String, String> reasonMap,
List<TraversedRelation> traversedRelations) {
this.relevanceMap = relevanceMap;
this.hopDistanceMap = hopDistanceMap;
this.reasonMap = reasonMap;
this.traversedRelations = traversedRelations;
}
public Map<String, Double> getRelevanceMap() { return relevanceMap; }
public Map<String, Integer> getHopDistanceMap() { return hopDistanceMap; }
public Map<String, String> getReasonMap() { return reasonMap; }
public List<TraversedRelation> getTraversedRelations() { return traversedRelations; }
/**
* Represents a relation that was traversed during propagation.
*/
public static class TraversedRelation {
private final TaxonomyRelationDto relation;
private final double propagatedRelevance;
private final int hopDistance;
private final String reason;
public TraversedRelation(TaxonomyRelationDto relation, double propagatedRelevance,
int hopDistance, String reason) {
this.relation = relation;
this.propagatedRelevance = propagatedRelevance;
this.hopDistance = hopDistance;
this.reason = reason;
}
public TaxonomyRelationDto getRelation() { return relation; }
public double getPropagatedRelevance() { return propagatedRelevance; }
public int getHopDistance() { return hopDistance; }
public String getReason() { return reason; }
}
}