FacetDiscovery: a facet vanishes on pages where all its values are unlabelled (conditionsOfAccess worst, 2431 page-instances) #6
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found by TestOER reviewing wp-plugin-amb-nostr#5; reproduced independently on a
different corpus slice. Not caused by that PR — it is the
$labelled === 0rejection inFacetDiscovery::finalizeCore(), which predatesevery variant of the label rule.
Symptom
FacetDiscoverytreats "family carries:idand a:prefLabel:<lang>" asthe test for whether a tag family is a filterable facet. Some publishers emit
learningResourceType:idwith no prefLabel at all. On an archive page drawnfrom their events,
learningResourceType— the single most useful facet — issilently absent from the filter UI.
The facet is not missing from the data. It is present and filterable by tag
value. Only the display label is absent.
Measured
TestOER, 8482 events: 3 of 38 publishers, 359 events affected.
Reproduced on a separate 1999-event sample paged from
wss://amb-relay.edufeed.org— 5 publishers withlearningResourceType:idandzero labels:
5c090631alone is 75 events, so this is not a long-tail curiosity — it is awhole publisher's worth of pages rendering without their main facet.
TestOER also measured the same for
conditionsOfAccesson two of thosepublishers.
Why it stayed hidden
The corpus-level census reads as an absolute separation — every entity family
exactly 0 prefLabels, every vocabulary family thousands. That number is
dominated by
610df6d6, which is 91% of the corpus and labels everything.discover()runs per page, and per page the picture is different. Acorpus-level aggregate cannot show a per-page false negative.
Options
or its last path segment. Keeps the facet, ugly labels.
SkosLabelResolveralready exists and resolves w3idvocabularies; the unlabelled values here are real vocabulary URIs, so this
would produce proper labels. Costs a lookup and a cache.
whether it is a facet. Facet-hood would need a different signal — which is
the deeper fix and the larger change.
Related: 4 concept values in the labelled families also carry no label and would
render as raw URIs today (1
aboutfromhochschulfaechersystematik, 3learningResourceTypefromvocabs.sodix.de) — a different vocabulary sourcethan the labelled ones. So the gap tracks the vocabulary, not the value, which
is evidence for option 2.
My recommendation is 2 with 1 as the fallback when the lookup misses, but this
is a rendering/product call as much as a code one.
Reframing this on TestOER's measurement:
conditionsOfAccessis the bigger victim, notlearningResourceType. I originally framed it around lrt; that was the wrong unit.Two units, and they rank the families differently
Across a 67,384-page every-offset sweep (TestOER, 8482 events), counting page-instances where the facet vanishes from the dropdown:
Counting events that carry
:idwith zero prefLabels instead, on my own independent 4999-event slice:These disagree, and both are correct. lrt has more unlabelled events;
conditionsOfAccessloses more pages, because a page only loses the facet when every event on it that carries the facet is unlabelled — so clustering dominates, not raw counts.The page unit is the user-visible one — a vanished dropdown is a page-level event. So the issue is now framed on it, and
conditionsOfAccessleads.Not a regression, and bounded
All 4450 drops come from the label test, none from the type test. The pre-
de6dde2rule dropped these same 4450 plus 56 more (realabout/learningResourceTypefacets with exactly 1 labelled value), so the shipped discriminator is strictly better here — this issue is what remains, not something it introduced.Recommendation unchanged
SkosLabelResolverlookup with value-fallback. The unlabelled values are real vocabulary URIs (w3id.org/kim/...,vocabs.sodix.de/...), so the label is resolvable — it is a rendering gap, not missing data. Falling back to the raw value would keep the facet filterable even when no label resolves.FacetDiscovery: a facet vanishes for publishers who emit :id with no prefLabelto FacetDiscovery: a facet vanishes on pages where all its values are unlabelled (conditionsOfAccess worst, 2431 page-instances)