Skip to content

Commit 14f8b5c

Browse files
committed
Refines clinical context generation and corrects charting progress tracking
Standardizes pattern filtering to exclude metadata-heavy patterns like axioms and navigation from generated embeddings and clinical context. Additionally, ensures charting progress correctly increments the cumulative processed count and reports actual batch sizes during processing.
1 parent 1cf5332 commit 14f8b5c

3 files changed

Lines changed: 19 additions & 9 deletions

File tree

src/main/java/dev/ikm/server/cosmos/constellation/ConstellationEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public ConstellationEntity with(Instant completed) {
2828
}
2929

3030
public ConstellationEntity with(long processed) {
31-
return new ConstellationEntity(id, observatoryId, phase, name, scopes, portalPrompt, processed, created, completed);
31+
return new ConstellationEntity(id, observatoryId, phase, name, scopes, portalPrompt, processed() + processed, created, completed);
3232
}
3333

3434
public boolean isCompleted() {

src/main/java/dev/ikm/server/cosmos/constellation/charting/EmbeddingChartProcessor.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -155,13 +155,11 @@ private Set<String> generateSemanticFeatures(int nid, ChartingContext chartingCo
155155
SemanticEntityVersion semanticEntityVersion = latestSemanticEntityVersion.get();
156156
Latest<PatternEntityVersion> latestPatternEntityVersion = chartingContext.chart().stampCalculator()
157157
.latest(semanticEntityVersion.patternNid());
158-
if (latestPatternEntityVersion.isPresent()) {
158+
if (latestPatternEntityVersion.isPresent() && !patternsToSkip().contains(latestPatternEntityVersion.get().nid())) {
159159
PatternEntityVersion patternEntityVersion = latestPatternEntityVersion.get();
160-
String semanticName = chartingContext.chart().languageCalculator()
161-
.getDescriptionTextOrNid(patternEntityVersion.nid());
162160
String purpose = chartingContext.chart().languageCalculator()
163161
.getDescriptionTextOrNid(patternEntityVersion.semanticPurposeNid());
164-
semanticFeaturesContext.add(semanticName + " which provides " + purpose + " data.");
162+
semanticFeaturesContext.add(purpose + ", ");
165163
}
166164
}
167165
});
@@ -170,6 +168,15 @@ private Set<String> generateSemanticFeatures(int nid, ChartingContext chartingCo
170168
return semanticFeaturesContext;
171169
}
172170

171+
private List<Integer> patternsToSkip() {
172+
return List.of(TinkarTermV2.DESCRIPTION_PATTERN.nid(),
173+
TinkarTermV2.EL_PLUS_PLUS_INFERRED_AXIOMS_PATTERN.nid(),
174+
TinkarTermV2.EL_PLUS_PLUS_STATED_AXIOMS_PATTERN.nid(),
175+
TinkarTermV2.STATED_NAVIGATION_PATTERN.nid(),
176+
TinkarTermV2.INFERRED_NAVIGATION_PATTERN.nid(),
177+
TinkarTermV2.OWL_AXIOM_SYNTAX_PATTERN.nid());
178+
}
179+
173180
private void processBatch(List<EmbeddingData> embeddingBatch, ChartingContext chartingContext) {
174181
// Generate embeddings values from string names
175182
List<TextSegment> names = embeddingBatch.stream().map(EmbeddingData::name).toList();
@@ -179,6 +186,6 @@ private void processBatch(List<EmbeddingData> embeddingBatch, ChartingContext ch
179186
.map(embeddingData -> TextSegment.from(embeddingData.name().text(), embeddingData.metadata()))
180187
.toList();
181188
embeddingStore.addAll(embeddings, segmentsWithMetaData);
182-
chartingContext.progressUpdate().accept(chartingContext.batchSize());
189+
chartingContext.progressUpdate().accept(embeddingBatch.size());
183190
}
184191
}

src/main/java/dev/ikm/server/cosmos/portal/ContextGenerator.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,19 +163,22 @@ private void roleGroupContext(StringBuilder stringBuilder, RoleGroup roleGroup,
163163
roleGroup.roles().forEach(role -> roleContext(stringBuilder, role, true));
164164
}
165165

166-
private String semanticDataContext(int nid) {
167-
List<Integer> patternFilter = List.of(TinkarTermV2.DESCRIPTION_PATTERN.nid(),
166+
private List<Integer> patternsToSkip() {
167+
return List.of(TinkarTermV2.DESCRIPTION_PATTERN.nid(),
168168
TinkarTermV2.EL_PLUS_PLUS_INFERRED_AXIOMS_PATTERN.nid(),
169169
TinkarTermV2.EL_PLUS_PLUS_STATED_AXIOMS_PATTERN.nid(),
170170
TinkarTermV2.STATED_NAVIGATION_PATTERN.nid(),
171171
TinkarTermV2.INFERRED_NAVIGATION_PATTERN.nid(),
172172
TinkarTermV2.OWL_AXIOM_SYNTAX_PATTERN.nid());
173+
}
174+
175+
private String semanticDataContext(int nid) {
173176
StringBuilder semanticDataBuilder = new StringBuilder();
174177
PrimitiveData.get().forEachSemanticNidForComponent(nid, semanticNid -> {
175178
Latest<SemanticEntityVersion> latestSemanticVersion = calculatorService.getStampCalculator()
176179
.latest(semanticNid);
177180
if (latestSemanticVersion.isPresent()
178-
&& !patternFilter.contains(latestSemanticVersion.get().patternNid())) {
181+
&& !patternsToSkip().contains(latestSemanticVersion.get().patternNid())) {
179182
SemanticEntityVersion semanticEntityVersion = latestSemanticVersion.get();
180183
Latest<PatternEntityVersion> latestPattern = calculatorService.getStampCalculator()
181184
.latest(semanticEntityVersion.patternNid());

0 commit comments

Comments
 (0)