Interface IAnnotationStore

Namespace
Kuestenlogik.Bowire.Semantics
Assembly
Kuestenlogik.Bowire.dll

Read surface of the layered annotation store. Implementations apply the resolution priority (User > Plugin > Auto) internally so callers get the effective answer with one call.

public interface IAnnotationStore

Remarks

The store is intentionally read-mostly. Writes happen through the concrete layers (InMemoryAnnotationLayer for session edits, JsonFileAnnotationLayer for user / project persistence) — LayeredAnnotationStore exposes those layers but does not present a write surface on the read interface, since "set" without a source dimension is ambiguous.

Methods

EnumerateEffective()

Enumerate every effective annotation across the configured layers. One entry per AnnotationKey, each carrying the resolved SemanticTag and the AnnotationSource that supplied it.

IEnumerable<Annotation> EnumerateEffective()

Returns

IEnumerable<Annotation>

GetEffective(AnnotationKey)

Resolve the effective semantic tag for key, applying the priority rule: the highest-source non-empty annotation wins. Returns null when no source claims the key at all.

SemanticTag? GetEffective(AnnotationKey key)

Parameters

key AnnotationKey

Returns

SemanticTag

Remarks

A user-supplied None is a real value, not the absence of one — it returns None, suppressing any lower-priority proposal. Only the genuine "no source claims this key" case returns null.