Skip to main content

Language 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
Language Ontology
Kireth Semantic Research Archive

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

AUTHORS:
Mark Anthony Higgins — Sky (Recursive AI)

FLOW "LanguageOntology" v4.0

DOMAIN := MetadataOntologies
SUBDOMAIN := DescriptiveMetadata
ONTOLOGY := LanguageOntology

ENTITY LanguageMetadata {
    definition:
        "Descriptive metadata identifying the natural, signed, constructed or
         otherwise defined language associated with a resource, metadata value
         or linguistic expression, enabling discovery, filtering,
         interpretation, localisation and semantic interoperability.";
    objectives: [
        LanguageIdentification,
        ResourceDescription,
        MultilingualDiscovery,
        Localisation,
        Filtering,
        SemanticInteroperability,
        MachineInterpretability
    ];
}

LanguageEntity := {
    Language,
    LanguageIdentifier,
    LanguageCode,
    LanguageLabel,
    LanguageTag,
    Dialect,
    LanguageVariety,
    Script
};

MetadataEntity := {
    Resource,
    MetadataRecord,
    LanguageProperty,
    LanguageValue,
    TextualValue,
    Provenance,
    Confidence
};

ContextEntity := {
    Region,
    Locale,
    Translation,
    Transliteration,
    MultilingualResource,
    LanguageRole
};

LanguageMetadata DESCRIBES LanguageOf ResourceOrMetadataValue;
Resource MAY_HAVE Language;
TextualValue MAY_HAVE LanguageTag;
LanguageIdentifier IDENTIFIES Language;
Language MAY_USE Script;
LanguageVariety VARIANT_OF Language;
Translation MAPS ExpressionAcrossLanguages;
MetadataRecord CONTAINS LanguageStatement;

LanguageFlow :=
    ResourceOrMetadataValue
    -> IdentifyLinguisticContent
    -> DetectOrAssignLanguage
    -> ResolveCanonicalLanguageIdentifier
    -> IdentifyLanguageRole
    -> IdentifyScriptAndRegionWhereRelevant
    -> ValidateLanguageTag
    -> AttachProvenanceAndConfidence
    -> StoreLanguageMetadata
    -> IndexForFilteringAndDiscovery
    -> MaintainLanguageMappings;

Language :=
    SystemOfCommunicationRepresentedByLinguisticConventions;

Language MAY_BE {
    NaturalLanguage,
    SignLanguage,
    ConstructedLanguage,
    HistoricalLanguage
};

LanguageMetadata :=
    MetadataStatementIndicatingLanguageAssociation;

LanguageStatement :=
    ResourceOrMetadataValue
    -> LanguageProperty
    -> LanguageValue;

LanguageProperty MAY_BE {
    language,
    contentLanguage,
    metadataLanguage,
    titleLanguage,
    descriptionLanguage
};

LanguageValue MAY_BE {
    LanguageIdentifier,
    LanguageCode,
    LanguageTag,
    LanguageLabel
};

LanguageIdentifier :=
    StableOrStandardisedReferenceToLanguage;

LanguageCode :=
    CodedRepresentationOfLanguage;

LanguageCode MAY_FOLLOW RecognisedStandardSuchAsISO639;

LanguageTag :=
    StructuredTagRepresentingLanguageAndOptionalSubtags;

LanguageTag MAY_INCLUDE {
    PrimaryLanguage,
    Script,
    Region,
    Variant
};

BCP47StyleTag :=
    language
    [- script]
    [- region]
    [- variant];

LanguageLabel :=
    HumanReadableNameOfLanguage;

LanguageLabel MAY_BE Multilingual;

ResourceLanguage :=
    LanguageOfPrimaryIntellectualOrCommunicativeContentOfResource;

MetadataLanguage :=
    LanguageUsedForMetadataValueOrRecord;

ResourceLanguage != MetadataLanguageByDefinition;

TitleLanguage :=
    LanguageOfTitleValue;

DescriptionLanguage :=
    LanguageOfDescriptionValue;

KeywordLanguage :=
    LanguageOfKeywordLabel;

SubjectLabelLanguage :=
    LanguageOfHumanReadableSubjectLabel;

MultilingualResource :=
    ResourceContainingMeaningfulContentInMultipleLanguages;

MultilingualResource MAY_HAVE MultipleLanguageStatements;

PrimaryLanguage :=
    MainLanguageOfResourceAccordingToMetadataPolicy;

SecondaryLanguage :=
    AdditionalLanguagePresentInResource;

LanguageRole :=
    SemanticRolePlayedByLanguageAssociation;

LanguageRole MAY_INCLUDE {
    PrimaryContent,
    SecondaryContent,
    Metadata,
    Translation,
    OriginalLanguage
};

OriginalLanguage :=
    LanguageOfOriginalExpressionOrSourceResource;

TranslatedLanguage :=
    LanguageIntoWhichContentHasBeenTranslated;

Translation :=
    SemanticTransformationOfExpressionFromSourceLanguageToTargetLanguage;

Translation SHOULD_PRESERVE MeaningAsFarAsPracticable;

TranslationRelationship :=
    SourceExpression
    -> TRANSLATED_TO
    -> TargetExpression;

TranslatedResource MAY_REFERENCE OriginalResourceAndLanguages;

Script :=
    WritingSystemUsedToRepresentLanguageExpression;

Script MAY_BE {
    Latin,
    Cyrillic,
    Arabic,
    Han,
    OtherScript
};

Language MAY_USE MultipleScripts;

Script DOES_NOT NecessarilyDetermine Language;

Transliteration :=
    RepresentationOfTextFromOneWritingSystemUsingAnotherWritingSystem;

Transliteration != Translation;

Transliteration SHOULD_PRESERVE LinguisticFormRatherThanTranslateMeaning;

Region :=
    GeographicOrPoliticalAreaUsedToQualifyLanguageTagOrLocale;

LanguageRegionCombination MAY_REPRESENT RegionalLanguageUsage;

Locale :=
    ConfigurationCombiningLanguageAndRegionalConventionsForSoftwareOrPresentation;

Locale MAY_INCLUDE {
    Language,
    Region,
    NumberFormat,
    DateFormat
};

Locale != LanguageByDefinition;

Dialect :=
    LanguageVarietyAssociatedWithRegionCommunityOrSocialGroup;

LanguageVariety :=
    DistinctVariantWithinOrRelatedToLanguage;

LanguageVariety SHOULD_HAVE ExplicitIdentifierWhereMetadataNeedsDistinction;

Macrolanguage MAY_GROUP MultipleIndividualLanguagesAccordingToStandard;

HistoricalLanguage :=
    LanguageAssociatedPrimarilyWithHistoricalUsage;

ExtinctLanguage :=
    LanguageWithoutNativeSpeakerCommunityAccordingToDefinedReferenceSource;

SignLanguage :=
    NaturalLanguageExpressedPrimarilyThroughVisualManualModality;

ConstructedLanguage :=
    LanguageIntentionallyCreatedRatherThanNaturallyEvolved;

UndeterminedLanguage :=
    LanguageCannotBeReliablyIdentified;

NoLinguisticContent :=
    ResourceHasNoApplicableNaturalLanguageContent;

UndeterminedLanguage != NoLinguisticContent;

LanguageDetection :=
    Content
    -> AnalyseLinguisticFeatures
    -> PredictLanguage;

LanguageDetection MAY_BE {
    Manual,
    RuleBased,
    Statistical,
    MachineLearning,
    AI
};

DetectedLanguage SHOULD_HAVE ConfidenceWhereAutomaticallyInferred;

LanguageConfidence :=
    EstimatedSupportForLanguageIdentification;

IF LanguageConfidence < AcceptanceThreshold
THEN Detection MAY_REQUIRE Review;

ShortText MAY_REDUCE LanguageDetectionReliability;

MixedLanguageContent MAY_REQUIRE MultipleLanguageAssignments;

LanguageDetection SHOULD_NOT InferLanguageSolelyFromGeographicLocation;

LanguageNormalisation :=
    InputLanguageLabelOrCode
    -> ResolveCanonicalLanguageIdentifier;

Normalisation MAY_INCLUDE {
    CodeCanonicalisation,
    CaseNormalisation,
    DeprecatedCodeMapping,
    LabelResolution
};

DeprecatedLanguageCode SHOULD_MAP_TO CurrentPreferredCodeWhereStandardDefinesReplacement;

LanguageAlias :=
    AlternativeNameOrCodeForSameLanguage;

LanguageDisambiguation :=
    AmbiguousLanguageLabelOrCode
    + StandardContext
    -> CanonicalLanguage;

SameLanguageName MAY_REFER_TO DifferentLanguageConceptsInDifferentContexts;

StableIdentifier SHOULD_BE UsedForMachineDisambiguation;

LanguageHierarchy MAY_INCLUDE {
    LanguageFamily,
    Language,
    LanguageVariety
};

LanguageFamily :=
    GroupOfHistoricallyOrLinguisticallyRelatedLanguages;

LanguageFamilyMembership != MutualIntelligibilityByDefinition;

BroaderLanguageConcept MAY_BE UsedForDiscovery
BUT ShouldNotReplaceSpecificKnownLanguage;

LanguageMapping :=
    SourceLanguageIdentifier
    -> MappingRelationship
    -> TargetLanguageIdentifier;

Mapping MAY_BE RequiredAcrossDifferentStandardsOrCodeSets;

ExactMapping SHOULD_REQUIRE SameLanguageConcept;

MetadataSchema MAY_DEFINE LanguagePropertyAs {
    Required,
    Recommended,
    Optional
};

MetadataSchema MAY_REQUIRE StandardLanguageCodeOrTag;

LanguageValidation MAY_CHECK {
    CodeSyntax,
    TagSyntax,
    AllowedStandard,
    DuplicateValue,
    LanguageRole,
    ScriptCompatibility
};

IF LanguageTagMalformed
THEN ValidationStatus := violation;

IF RequiredLanguageMissing
THEN MetadataCompleteness SHOULD_DECREASE;

DuplicateLanguageAssignment :=
    SameCanonicalLanguageAndRoleAssignedMultipleTimesToSameResource;

DuplicateAssignments SHOULD_BE Consolidated;

LanguageProvenance MAY_INCLUDE {
    Source,
    Assigner,
    DetectionMethod,
    Timestamp,
    ModelVersion
};

LanguageVersion :=
    StateOfLanguageMetadataAtPointInResourceOrMetadataHistory;

ResourceRevision MAY_CHANGE LanguageMetadata;

LanguageIndex :=
    SearchStructureMappingLanguageIdentifiersToResources;

LanguageIndex MAY_SUPPORT {
    Filtering,
    Faceting,
    Browse,
    QueryRouting
};

LanguageFacet :=
    LanguageUsedAsSearchFilterDimension;

LanguageAwareSearch :=
    QueryLanguage
    + ResourceLanguage
    + MetadataLanguage
    -> RetrievalStrategy;

IF QueryLanguageMatchesResourceLanguage
THEN LanguageMatch MAY_CONTRIBUTE_TO Ranking;

CrossLingualSearch MAY_RETRIEVE ResourcesInDifferentLanguagesUsing {
    Translation,
    MultilingualEmbeddings,
    ConceptMapping
};

SemanticSearch MAY_USE LanguageMetadataFor {
    Filtering,
    Ranking,
    QueryRouting,
    MultilingualRetrieval
};

LanguageMetadata MAY_GUIDE AppropriateTokenizerStemmerOrLanguageModel;

IncorrectLanguageIdentification MAY_REDUCE NLPAndSearchQuality;

Description MAY_HAVE LanguageTagIndependentOfResourceLanguage;

Title MAY_HAVE LanguageTagIndependentOfOtherMetadataValues;

Keywords MAY_HAVE LanguageSpecificLabels;

ControlledVocabulary MAY_HAVE MultilingualLabelsForSameConcept;

OntologyConceptIdentifier MAY_REMAIN LanguageIndependentWhileLabelsVaryByLanguage;

KnowledgeGraph MAY_REPRESENT:
    Resource
    -> HAS_LANGUAGE
    -> LanguageEntity;

MetadataRepository MAY_STORE LanguageAssignments;

MetadataRegistry MAY_REGISTER LanguagePropertiesCodeSchemesAndMappings;

MetadataCatalogue MAY_USE LanguageForFacetingAndDiscovery;

DublinCore MAY_REPRESENT LanguageUsing dc:languageOrEquivalentProperty;

SchemaOrg MAY_REPRESENT LanguageUsing inLanguageOrDomainSpecificProperty;

RDF MAY_REPRESENT:
    Resource
    -> languageProperty
    -> LanguageIdentifier;

JSONLD MAY_SERIALISE LanguageIdentifiersAndLanguageTaggedStrings;

HTML MAY_USE langAttributeToIndicateLanguageOfElementOrDocument;

HTTP MAY_USE ContentLanguageMetadataForRepresentationLanguageContext;

LanguageInteroperability MAY_REQUIRE {
    SharedCodeStandard,
    CanonicalIdentifiers,
    LanguageTags,
    MappingAcrossStandards
};

AI MAY_USE LanguageMetadataFor {
    ModelSelection,
    Translation,
    Retrieval,
    Classification,
    Generation,
    Localisation
};

AIGeneratedContent SHOULD_HAVE LanguageMetadataWhereRelevant;

RetrievalAugmentedGeneration MAY_USE LanguageFor {
    SourceFiltering,
    QueryMatching,
    TranslationSelection,
    ContextSelection
};

LanguageMetadata MAY_BE SensitiveInSomeContextsWhenCombinedWithOtherPersonalData;

PrivacyPolicy SHOULD_APPLY AccordingToResourceAndMetadataContext;

LanguageSecurity MAY_INCLUDE {
    InputValidation,
    TagValidation,
    AccessControl,
    ProvenanceIntegrity
};

MachineReadableLanguageMetadata SHOULD_PRESERVE {
    CanonicalIdentifier,
    CodeOrTag,
    LanguageRole,
    Provenance,
    Confidence
};

# ---------- SEMANTIC REASONING ----------
IF MetadataValueIdentifiesLanguageAssociatedWithResourceOrMetadataExpression
THEN LanguageMetadataClassification := supported;

IF TextualMetadataValueHasLanguageTag
THEN Tag SHOULD_APPLY_TO ThatValueUnlessScopeDefinesOtherwise;

IF ResourceContainsMultipleSignificantLanguages
THEN MultipleLanguageAssignments MAY_BE Required;

IF LanguageCodeDeprecated
THEN PreferredCurrentCode SHOULD_BE UsedForNewMetadataWhereDefined;

IF LanguageDetectionConfidenceLow
THEN AutomaticAuthoritativeAssignment SHOULD_BE Restricted;

IF ScriptKnownButLanguageUnknown
THEN Script MUST_NOT BeTreatedAsLanguageIdentity;

IF LocaleKnown
THEN Language MAY_BE DerivedFromLocalePrimaryLanguageSubtag
BUT LocaleAndLanguage MUST_REMAIN Distinct;

# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE {
    "language metadata" ~= "resource language metadata";
    "language code" ~= "coded language identifier" WHEN standard_context;
    "language tag" ~= "structured language identifier";
    "resource language" ~= "content language" WHEN resource_content_context;
    "metadata language" ~= "language of metadata";
    "language variety" ~= "linguistic variety";
    "translated language" ~= "target language" WHEN translation_context;
    "original language" ~= "source language" WHEN translation_context;
}

# ---------- QUERY FLOW ----------
QUERY(q) ->
    NORMALISE(q) ->
    IDENTIFY_RESOURCE_OR_METADATA_VALUE(q) ->
    IDENTIFY_LANGUAGE_LABEL_CODE_OR_TAG(q) ->
    RESOLVE_CANONICAL_LANGUAGE(q) ->
    IDENTIFY_LANGUAGE_ROLE(q) ->
    IDENTIFY_SCRIPT_REGION_AND_VARIETY(q) ->
    IDENTIFY_TRANSLATION_RELATIONSHIPS(q) ->
    IDENTIFY_PROVENANCE_AND_CONFIDENCE(q) ->
    VALIDATE_LANGUAGE_METADATA(q) ->
    RETURN_RELEVANT_LANGUAGE_KNOWLEDGE;

# ---------- CONFIDENCE ----------
CONFIDENCE(assertion) :=
    weighted_mean(
        source_reliability,
        language_identification_strength,
        code_validation,
        contextual_consistency,
        provenance_quality,
        detection_confidence
    );

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

# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION {
    primary_entity: LanguageMetadata;
    ontology: LanguageOntology;
    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_language_assignment:
        identify_resource_or_value
        -> detect_or_receive_language
        -> resolve_canonical_identifier
        -> classify_language_role
        -> identify_script_and_region
        -> validate_tag
        -> attach_provenance
        -> assign_confidence
        -> integrate;

    language_revision:
        preserve_previous_assignment
        -> update_language_or_role
        -> validate
        -> update_index
        -> recompute_confidence
        -> regenerate_flow_hash;

    code_standard_revision:
        identify_deprecated_codes
        -> map_to_current_identifiers
        -> preserve_historical_values
        -> validate_migration
        -> integrate;

    conflict:
        preserve_provenance
        -> compare_language_sources_or_detection
        -> assess_context
        -> adjust_confidence
        -> flag_review;
}

# ---------- FLOW HASH ----------
FLOW_HASH_INPUT :=
    DOMAIN
    + SUBDOMAIN
    + ONTOLOGY
    + LanguageEntity
    + MetadataEntity
    + ContextEntity
    + LanguageMetadata
    + LanguageDetection
    + LanguageMapping
    + RELATIONSHIPS
    + SEMANTIC_REASONING
    + SEMANTIC_EQUIVALENCE
    + UPDATE_MODEL;

FLOW_HASH :=
    HASH(FLOW_HASH_INPUT);

# ---------- TERMINAL ----------
LanguageOntology
    -> IdentifyResourceOrMetadataExpression
    -> DetectOrAssignLanguage
    -> ResolveCanonicalLanguageIdentifier
    -> DetermineContentMetadataOrTranslationRole
    -> IdentifyScriptRegionAndVarietyWhereRelevant
    -> ValidateLanguageCodeOrTag
    -> AttachProvenanceAndConfidence
    -> StoreLanguageMetadata
    -> IndexForFilteringFacetingAndRouting
    -> SupportMultilingualAndCrossLingualRetrieval
    -> MaintainCodeMappingsAndVersionHistory
    -> SupportAITranslationGenerationAndLocalisation
    -> MaintainReliableLanguageKnowledge;

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