Vocabulary Model
Status Note
Current recommendation and first implementation for #90.
Purpose
VRDex needs flexible scene language without forcing everyone into one rigid taxonomy. The vocabulary model normalizes and stores terms that appear in profiles, worlds, events, and discovery facets.
Scopes
Initial scopes:
profile_tagperson_rolecommunity_categorycommunity_subtypeevent_participant_roleevent_tagworld_tagworld_creator_rolediscovery_facet
Normalization
Terms keep a user-facing label and a normalized key.
Examples:
Melodic House->melodic_houseclub night->club_nightWorld Author->world_author
The model deduplicates obvious case and whitespace variants. It does not try to infer arbitrary semantic equivalence in deterministic code.
Sources
Term source values:
seeded: built-in starter vocabularyuser_created: learned from submitted or authored recordsreviewed: promoted or curated by maintainers/moderatorsimported: created from reviewed import flows
Ranking Use
Vocabulary terms feed:
- search facets
- weighted search document fields
- browse chips on discovery surfaces
- future typeahead suggestions
- moderation and merge workflows outside the first slice
Non-Goals
- fully automated taxonomy inference
- forcing all communities into one fixed role list
- broad ad hoc language-to-intent mappings in code
- moderation dashboard for vocabulary abuse in the first slice
Out of Scope
- reviewed aliases and merges
- admin curation UI
- usage analytics for term quality
- personalized recommendation facets