@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix edu: <https://knobit.org/def/> .
@prefix knobit: <https://knobit.org/id/knobit/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix register: <https://knobit.org/id/register/> .
@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .

knobit:K-623 a edu:Knobit ;
    rdfs:label "Recognises inconsistent validity periods in a versioned table"@en ;
    dcterms:identifier "K-623",
        "Q-391" ;
    dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
    dcterms:source "Review checklist 04-physical, row 23; DDL 2014 ch. 13; S&W 15.4"@en,
        "Shared-URI copy of data-modelling K-623 (Review checklist 04-physical (data-modelling), row 23; DDL 2014 ch. 13; S&W 15.4)"@en ;
    skos:altLabel "Overlapping, gapped or inconsistently bounded validity periods (physical model)"@en ;
    skos:definition "In a table with validity periods, two versions of one key valid at the same time (contradiction), consecutive identical versions (circumlocution), gaps nobody meant, or closed intervals in one table and half-open in another. A point-in-time join then returns two rows or none."@en ;
    skos:prefLabel "Recognises inconsistent validity periods in a versioned table"@en ;
    edu:actionVerb "Recognises"@en ;
    edu:appliesKnowledge knobit:K-658 ;
    edu:assessmentCriterion "Flags the deficient case and passes the acceptable one. Deficient: `dim_account` versions 2026-01-01..2026-06-30 and 2026-06-01..9999-12-31: a payment on 2026-06-15 joins both and is counted twice; two rows with `is_current = true` Acceptable: Half-open intervals `[valid_from, valid_to)` project-wide; a unique constraint on natural key plus `valid_from`; DQ rules for no overlap and exactly one current row per key (`PHY-015`, `PHY-016`)"@en ;
    edu:assessmentMethod "skill-tests task: Loan application physical model on Snowflake (physical design anomaly skills)"@en ;
    edu:contextFunction <https://knobit.org/def/contextFunction/resultEvaluation> ;
    edu:creationMethod <https://knobit.org/def/creationMethod/aiGeneratedAiEdited>,
        <https://knobit.org/def/creationMethod/aiGeneratedHumanEdited> ;
    edu:expectedResult "Overlaps, unintended gaps or mixed bounds, and the convention to apply"@en ;
    edu:graphRelevance <https://knobit.org/def/graphRelevance/learnerState>,
        <https://knobit.org/def/graphRelevance/taskSelection> ;
    edu:knobitType <https://knobit.org/def/knobitType/skill> ;
    edu:targetObject "validity periods"@en ;
    schema:creativeWorkStatus "accepted" ;
    schema:isPartOf register:data-modelling,
        register:data-quality .

edu:Knobit rdfs:label "Knobit"@en,
        "Knobit"@et .

knobit:K-658 rdfs:label "Explains history strategies and validity-period conventions"@en .

