Skip to main content

Keyword Ontology

Descriptive Metadata
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 06 October 2026
Audio Overview
FLOW ALGEBRA
Keyword Ontology
Kireth Semantic Research Archive

PAGE:
https://kirethresearch.org/booksai-core/ontologies/metadata-ontologies/descriptive-metadata/keyword-ontology.html

AUTHORS:
Mark Anthony Higgins — Sky (Recursive AI)

FLOW "KeywordOntology" v4.0

DOMAIN := MetadataOntologies
SUBDOMAIN := DescriptiveMetadata
ONTOLOGY := KeywordOntology

ENTITY Keyword {
    definition:
        "A word, phrase or controlled term associated with a resource to
         represent its subject, theme, entity, feature or discoverable concept
         for indexing, retrieval, classification and semantic interpretation.";
    objectives: [
        ResourceDiscovery,
        SubjectRepresentation,
        Indexing,
        SearchRecall,
        Classification,
        SemanticRetrieval,
        MetadataInteroperability
    ];
}

KeywordEntity := {
    Keyword,
    Resource,
    KeywordValue,
    KeywordPhrase,
    ControlledKeyword,
    UncontrolledKeyword,
    PreferredTerm,
    AlternativeTerm
};

SemanticEntity := {
    Concept,
    Subject,
    Entity,
    TaxonomyConcept,
    VocabularyTerm,
    OntologyConcept,
    Identifier
};

MetadataEntity := {
    MetadataRecord,
    KeywordProperty,
    Language,
    Provenance,
    Confidence,
    Source
};

Keyword DESCRIBES Resource;
Keyword REPRESENTS ConceptOrSubject;
MetadataRecord CONTAINS KeywordStatement;
ControlledKeyword REFERENCES VocabularyTerm;
VocabularyTerm MAY_HAVE PreferredTerm;
AlternativeTerm MAY_REFER_TO SameConcept;
Keyword MAY_SUPPORT SearchIndex;

KeywordFlow :=
    Resource
    -> AnalyseContentAndContext
    -> IdentifyCandidateKeywords
    -> NormaliseTerms
    -> ResolveConceptsAndEntities
    -> MapToControlledVocabularyWherePossible
    -> RankKeywordRelevance
    -> ValidateKeywords
    -> AttachProvenanceAndConfidence
    -> StoreInMetadataRecord
    -> IndexForSearch
    -> MaintainAndUpdate;

Keyword :=
    LexicalTermOrPhraseAssociatedWithResource;

Keyword MAY_BE {
    SingleWord,
    MultiWordPhrase,
    NamedEntity,
    ControlledTerm,
    FreeTextTerm
};

KeywordValue :=
    TextualOrIdentifierBasedRepresentationOfKeyword;

KeywordPhrase :=
    MultiTokenKeywordRepresentingSingleSearchableConceptOrExpression;

ControlledKeyword :=
    KeywordSelectedFromManagedVocabularyTaxonomyThesaurusOrOntology;

UncontrolledKeyword :=
    FreeTextKeywordNotRestrictedToManagedVocabulary;

ControlledKeyword MAY_IMPROVE {
    Consistency,
    Disambiguation,
    Interoperability
};

UncontrolledKeyword MAY_IMPROVE {
    Flexibility,
    EmergingTermCoverage,
    UserExpression
};

KeywordStatement :=
    Resource
    -> KeywordProperty
    -> KeywordValue;

KeywordProperty MAY_BE {
    keyword,
    subjectKeyword,
    indexTerm,
    tag
};

Subject :=
    TopicOrConceptRepresentedByResource;

Keyword MAY_INDICATE Subject
BUT Keyword != SubjectConceptByDefinition;

Concept :=
    SemanticMeaningRepresentedByKeyword;

MultipleKeywords MAY_MAP_TO SameConcept;

SameKeyword MAY_MAP_TO DifferentConceptsAccordingToContext;

PreferredTerm :=
    PrimaryVocabularyLabelForConcept;

AlternativeTerm :=
    SynonymVariantAbbreviationOrNonPreferredLabelForConcept;

Synonym :=
    LexicalAlternativeWithSameOrSimilarMeaningInContext;

SynonymExpansion MAY_IMPROVE SearchRecall;

Homonym :=
    SameLexicalFormRepresentingDifferentConcepts;

HomonymousKeyword SHOULD_BE DisambiguatedUsingContext;

Polysemy :=
    KeywordWithMultipleRelatedMeanings;

EntityKeyword :=
    KeywordReferringToCanonicalNamedEntity;

EntityKeyword MAY_REFERENCE StableEntityIdentifier;

NamedEntity MAY_BE {
    Person,
    Organisation,
    Place,
    Product,
    Event,
    Work
};

KeywordLanguage :=
    LanguageOfKeywordLabel;

MultilingualMetadata MAY_HAVE EquivalentKeywordsAcrossLanguages;

Keyword SHOULD_HAVE LanguageTagWhereRequired;

TranslatedKeyword :=
    KeywordExpressionInAnotherLanguageRepresentingSameOrMappedConcept;

Translation SHOULD_PRESERVE ConceptMeaning;

KeywordNormalisation MAY_INCLUDE {
    UnicodeNormalisation,
    CaseNormalisation,
    WhitespaceNormalisation,
    PunctuationNormalisation,
    Lemmatization
};

Normalisation SHOULD_NOT CollapseDistinctNamedEntitiesOrConceptsIncorrectly;

StemmedKeyword :=
    SearchDerivedFormProducedByStemming;

StemmedForm SHOULD_NOT ReplaceCanonicalMetadataValueUnlessPolicyDefines;

SingularPluralVariants MAY_BE NormalisedForSearch
WHILE OriginalMetadataValue MAY_BE Preserved;

KeywordExtraction :=
    ResourceContent
    -> IdentifyCandidateTerms
    -> ScoreCandidates
    -> SelectKeywords;

KeywordExtraction MAY_BE {
    Manual,
    Statistical,
    RuleBased,
    NLPBased,
    AIAssisted
};

ManualKeyword :=
    KeywordSelectedByHumanMetadataAgent;

AutomaticKeyword :=
    KeywordGeneratedBySoftware;

AIGeneratedKeyword :=
    KeywordSuggestedByAIModel;

GeneratedKeyword SHOULD_HAVE {
    MethodProvenance,
    Confidence
};

CandidateKeyword :=
    TermConsideredForMetadataAssignmentBeforeValidation;

KeywordRelevance :=
    DegreeToWhichKeywordAccuratelyRepresentsResourceContentOrPurpose;

KeywordSpecificity :=
    DegreeToWhichKeywordPreciselyDescribesResourceRatherThanBroadDomain;

KeywordCoverage :=
    DegreeToWhichAssignedKeywordsRepresentImportantResourceTopics;

KeywordRedundancy :=
    DegreeToWhichMultipleKeywordsProvideLittleAdditionalSemanticValue;

KeywordQuality MAY_INCLUDE {
    Relevance,
    Specificity,
    Coverage,
    Consistency,
    Provenance
};

KeywordScoring MAY_USE {
    Frequency,
    Position,
    StatisticalImportance,
    SemanticSimilarity,
    EntitySalience,
    HumanJudgement
};

TFIDFLikeScore MAY_SUPPORT StatisticalKeywordExtraction;

EmbeddingSimilarity MAY_SUPPORT SemanticKeywordSelection;

HighEmbeddingSimilarity != GuaranteedCorrectKeywordAssignment;

KeywordRanking :=
    CandidateKeywords
    -> ScoreByRelevance
    -> OrderCandidates;

KeywordThreshold :=
    MinimumScoreRequiredForAutomaticAcceptanceAccordingToPolicy;

IF KeywordConfidence < Threshold
THEN Keyword MAY_REQUIRE ReviewOrExclusion;

ControlledVocabulary :=
    ManagedSetOfPermittedOrPreferredTerms;

Keyword MAY_MAP_TO ControlledVocabularyTerm;

Taxonomy MAY_ORGANISE KeywordConceptsHierarchically;

Thesaurus MAY_DEFINE {
    PreferredTerm,
    AlternativeTerm,
    BroaderTerm,
    NarrowerTerm,
    RelatedTerm
};

Ontology MAY_DEFINE ExplicitSemanticRelationshipsForKeywordConcepts;

SKOS MAY_REPRESENT KeywordVocabularyConceptsAndLabels;

VocabularyIdentifier SHOULD_BE StoredWhereMachineInteroperabilityRequires;

FreeTextKeyword MAY_BE LaterMappedTo ControlledConcept;

KeywordMapping :=
    FreeTextOrSourceKeyword
    -> ControlledConceptOrTargetKeyword;

Mapping MAY_BE {
    Exact,
    Close,
    Broader,
    Narrower,
    Related
};

KeywordDisambiguation :=
    Keyword
    + ResourceContext
    -> IntendedConcept;

Context MAY_INCLUDE {
    Title,
    Description,
    Creator,
    ResourceType,
    OtherKeywords
};

KeywordDeduplication :=
    CandidateKeywordSet
    -> DetectEquivalentOrNormalisedDuplicates
    -> PreservePreferredRepresentation;

ExactDuplicateKeyword SHOULD_NOT UsuallyBeStoredMultipleTimesInSameContext;

NearDuplicateKeywords MAY_BE PreservedIfSemanticallyDistinct;

Tag :=
    LightweightUserOrSystemAssignedLabel;

Tag MAY_FUNCTION_AS Keyword
BUT Tag MAY_HAVE LessFormalSemanticControl;

Hashtag :=
    PlatformSpecificTaggedTerm;

Hashtag MAY_BE NormalisedToKeywordAccordingToApplicationPolicy;

IndexTerm :=
    TermUsedForSearchIndexingOrSubjectAccess;

IndexTerm MAY_BE ControlledOrUncontrolled;

KeywordIndex :=
    SearchStructureMappingKeywordsToResources;

KeywordIndex MAY_SUPPORT {
    ExactLookup,
    PrefixLookup,
    Faceting,
    QueryExpansion
};

InvertedIndex :=
    KeywordOrTerm
    -> SetOfMatchingResources;

KeywordSearch :=
    QueryKeywords
    -> MatchIndexedKeywords
    -> RankResources;

ExactKeywordMatch MAY_HAVE StrongRetrievalSignal;

AlternativeTermMatch MAY_RETRIEVE ResourceUsingPreferredConcept;

KeywordBoost :=
    RankingWeightAppliedToKeywordMatches;

Boost SHOULD_DEPEND_ON SearchIntentAndMetadataQuality;

KeywordFacet :=
    KeywordOrConceptUsedAsFilterDimension;

Faceting MAY_USE ControlledKeywordsMoreReliablyThanUncontrolledTerms;

QueryExpansion MAY_USE {
    Synonyms,
    BroaderConcepts,
    NarrowerConcepts,
    RelatedConcepts
};

Expansion SHOULD_BALANCE PrecisionAndRecall;

SemanticSearch MAY_USE KeywordFor {
    ConceptMatching,
    QueryExpansion,
    Ranking,
    ResourceFiltering
};

Keyword MAY_BE ConvertedTo EmbeddingForSemanticSimilarity;

VectorRepresentation SHOULD_NOT Replace ExplicitKeywordIdentityWhenExactConceptIsKnown;

KnowledgeGraph MAY_REPRESENT {
    ResourceNode,
    KeywordConceptNode,
    ResourceSubjectEdge
};

KeywordConcept MAY_LINK ResourceToBroaderSemanticKnowledge;

Description MAY_BE SourceFor KeywordExtraction;

Title MAY_BE HighWeightSourceFor KeywordExtraction;

Creator MAY_BE KeywordOnlyWhenApplicationSemanticsTreatCreatorAsDiscoverableKeyword;

MetadataSchema MAY_DEFINE KeywordPropertyAs {
    Required,
    Recommended,
    Optional
};

MetadataSchema MAY_DEFINE MaximumOrMinimumKeywordCount;

ExcessiveKeywordCount MAY_REDUCE MetadataQualityOrSearchPrecision;

KeywordValidation MAY_CHECK {
    EmptyValue,
    DuplicateValue,
    Language,
    VocabularyMembership,
    Relevance,
    ProhibitedTerm
};

IF ControlledKeywordRequired
AND KeywordNotInVocabulary
THEN ValidationStatus := violation_or_warning
ACCORDING_TO policy;

KeywordProvenance MAY_INCLUDE {
    Source,
    Creator,
    ExtractionMethod,
    Timestamp,
    ModelVersion
};

KeywordConfidence :=
    EstimatedSupportForKeywordAssignment;

HumanCuratedKeyword MAY_HAVE GovernanceStatusDistinctFrom AutomaticKeyword;

KeywordVersion :=
    StateOfKeywordAssignmentAtPointInResourceOrMetadataHistory;

ResourceChange MAY_REQUIRE KeywordReevaluation;

KeywordRemoval SHOULD_PRESERVE AuditHistoryWhereGovernanceRequires;

KeywordMerge :=
    MultipleEquivalentKeywordRepresentations
    -> PreferredKeywordOrConcept;

KeywordSplit :=
    AmbiguousKeyword
    -> MultipleDistinctConceptAssignments;

KeywordMigration MAY_BE RequiredWhenVocabularyConceptIsDeprecatedOrSplit;

DeprecatedKeywordConcept SHOULD_REFERENCE ReplacementWhereAvailable;

MetadataRegistry MAY_REGISTER KeywordVocabulariesAndProperties;

MetadataRepository MAY_STORE KeywordAssignmentsAndVocabularyReferences;

MetadataCatalogue MAY_USE KeywordsForDiscoveryAndFaceting;

Interoperability MAY_REQUIRE {
    SharedKeywordProperty,
    ControlledVocabulary,
    StableConceptIdentifier,
    LanguageTag
};

KeywordCrosswalk :=
    MappingBetweenKeywordVocabulariesOrClassificationSystems;

AI MAY_USE KeywordsFor {
    Retrieval,
    Classification,
    Recommendation,
    Clustering,
    MetadataGeneration
};

AIKeywordGeneration :=
    Resource
    -> AnalyseContent
    -> GenerateCandidateKeywords
    -> ScoreConfidence
    -> Validate
    -> StoreApprovedKeywords;

AIGeneratedKeywords SHOULD_NOT BeTreatedAsAuthoritativeWithoutPolicyAppropriateValidation;

RetrievalAugmentedGeneration MAY_USE KeywordsFor {
    SourceFiltering,
    QueryExpansion,
    ContextSelection,
    ResourceRanking
};

PrivacyPolicy MAY_RESTRICT KeywordsThatRevealSensitiveInformation;

KeywordSecurity MAY_INCLUDE {
    InputValidation,
    AccessControl,
    ProvenanceIntegrity,
    ChangeAuthorisation
};

MachineReadableKeyword SHOULD_PRESERVE {
    ValueOrIdentifier,
    Language,
    ConceptMapping,
    Provenance,
    Confidence
};

# ---------- SEMANTIC REASONING ----------
IF MetadataTermRepresentsDiscoverableTopicThemeEntityOrFeatureOfResource
THEN KeywordClassification := supported;

IF KeywordMapsToControlledConcept
THEN ConceptIdentifier SHOULD_BE PreferredForMachineLinking;

IF MultipleLexicalKeywordsMapToSameConcept
THEN Search MAY_TreatThemAsSemanticAlternatives;

IF SameKeywordMapsToDifferentConcepts
THEN ContextualDisambiguation SHOULD_BE Applied;

IF KeywordConfidenceLow
THEN AutomaticAcceptance SHOULD_BE RestrictedAccordingToPolicy;

IF VocabularyConceptDeprecated
THEN NewKeywordAssignment SHOULD_PREFER ReplacementWhereDefined;

IF KeywordIsIrrelevantToResource
THEN KeywordQuality SHOULD_DECREASE;

# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE {
    "keyword" ~= "index keyword" WHEN metadata_search_context;
    "keyword phrase" ~= "key phrase";
    "controlled keyword" ~= "controlled index term";
    "uncontrolled keyword" ~= "free-text keyword";
    "preferred term" ~= "preferred keyword" WHEN vocabulary_context;
    "alternative term" ~= "keyword synonym" WHEN vocabulary_context;
    "keyword extraction" ~= "keyphrase extraction";
    "keyword mapping" ~= "keyword concept mapping";
}

# ---------- QUERY FLOW ----------
QUERY(q) ->
    NORMALISE(q) ->
    IDENTIFY_RESOURCE(q) ->
    IDENTIFY_KEYWORDS(q) ->
    NORMALISE_KEYWORD_VALUES(q) ->
    IDENTIFY_LANGUAGE(q) ->
    RESOLVE_ENTITIES_AND_CONCEPTS(q) ->
    MAP_TO_CONTROLLED_VOCABULARY(q) ->
    ASSESS_RELEVANCE_AND_CONFIDENCE(q) ->
    VALIDATE_KEYWORDS(q) ->
    RETURN_RELEVANT_KEYWORD_KNOWLEDGE;

# ---------- CONFIDENCE ----------
CONFIDENCE(assertion) :=
    weighted_mean(
        source_reliability,
        keyword_relevance,
        concept_mapping_strength,
        vocabulary_consistency,
        provenance_quality,
        contextual_relevance
    );

CONFIDENCE >= 0.90 => HIGH;
CONFIDENCE >= 0.70 AND < 0.90 => MODERATE;
CONFIDENCE < 0.70 => REVIEW;

# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION {
    primary_entity: Keyword;
    ontology: KeywordOntology;
    parse_entities: true;
    parse_relationships: true;
    preserve_relationship_direction: true;
    resolve_semantic_equivalence: true;
    execute_reasoning_rules: true;
    apply_confidence_weighting: true;
    preserve_provenance: true;
}

# ---------- UPDATE MODEL ----------
UPDATE_MODEL {
    new_keyword:
        identify_resource
        -> normalise_term
        -> resolve_concept
        -> map_vocabulary
        -> assess_relevance
        -> attach_provenance
        -> assign_confidence
        -> validate
        -> integrate;

    keyword_revision:
        preserve_previous_assignment
        -> add_remove_or_replace_keyword
        -> update_index
        -> revalidate
        -> recompute_confidence
        -> regenerate_flow_hash;

    vocabulary_revision:
        identify_affected_keywords
        -> map_deprecated_concepts
        -> preserve_historical_identifiers
        -> validate_migration
        -> integrate;

    conflict:
        preserve_provenance
        -> compare_keyword_meanings_or_sources
        -> disambiguate_context
        -> adjust_confidence
        -> flag_review;
}

# ---------- FLOW HASH ----------
FLOW_HASH_INPUT :=
    DOMAIN
    + SUBDOMAIN
    + ONTOLOGY
    + KeywordEntity
    + SemanticEntity
    + MetadataEntity
    + Keyword
    + KeywordExtraction
    + KeywordMapping
    + RELATIONSHIPS
    + SEMANTIC_REASONING
    + SEMANTIC_EQUIVALENCE
    + UPDATE_MODEL;

FLOW_HASH :=
    HASH(FLOW_HASH_INPUT);

# ---------- TERMINAL ----------
KeywordOntology
    -> IdentifyResourceContentAndContext
    -> ExtractOrAssignCandidateKeywords
    -> NormaliseLexicalForms
    -> ResolveEntitiesSubjectsAndConcepts
    -> MapToControlledVocabularyWhereAvailable
    -> RankRelevanceAndSpecificity
    -> ValidateDuplicatesVocabularyAndMeaning
    -> AttachLanguageProvenanceAndConfidence
    -> StoreKeywordMetadata
    -> IndexForSearchFacetingAndQueryExpansion
    -> MaintainVocabularyMappingsAndVersions
    -> SupportSemanticSearchAndAIConsumption
    -> MaintainReliableKeywordKnowledge;

END FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ