@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:Q-314 a edu:Knobit ;
    rdfs:label "Recognises nulls left to chance in a check predicate"@en ;
    dcterms:identifier "Q-314" ;
    dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
    dcterms:source "Review checklist 03-dq-rules (data-quality), row 14; ISO 9075; Codd 1979; formerly data-modelling K-714"@en ;
    skos:altLabel "Nulls treated by accident (data quality rule)"@en ;
    skos:definition "A predicate that evaluates to `UNKNOWN` for nulls, where nobody decided whether a null passes. A `CHECK` passes `UNKNOWN`; a DQ row predicate fails it; a violation query written as `WHERE NOT (expr)` silently drops it. And `NOT IN` against a subquery that returns a null matches nothing."@en ;
    skos:prefLabel "Recognises nulls left to chance in a check predicate"@en ;
    edu:actionVerb "Recognises"@en ;
    edu:appliesKnowledge knobit:K-655 ;
    edu:assessmentCriterion "Flags the deficient case and passes the acceptable one. Deficient: Copied from the CHECK: `interest_rate_type_code IN ('FIX','VAR')` on an optional column — every current account with no rate type fails. Or `WHERE account_currency_code NOT IN (SELECT currency_code FROM ref_currency)` with one null code in the reference table: no violation ever found Acceptable: `interest_rate_type_code IS NULL OR interest_rate_type_code IN (...)` where null is allowed, and a separate completeness check where it is not; `NOT EXISTS` instead of `NOT IN`"@en ;
    edu:assessmentMethod "skill-tests task: Loan application data quality rules on Snowflake (DQ rule anomaly skills)"@en ;
    edu:contextFunction <https://knobit.org/def/contextFunction/resultEvaluation> ;
    edu:creationMethod <https://knobit.org/def/creationMethod/aiGeneratedHumanEdited> ;
    edu:expectedResult "The predicate and the explicit null decision"@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 "predicate evaluating to UNKNOWN"@en ;
    schema:creativeWorkStatus "accepted" ;
    schema:isPartOf register:data-quality .

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

knobit:K-655 rdfs:label "Explains null semantics and three-valued logic"@en .

