# Shape constraints (SHACL-STYLE, evaluated by dayone.knowledge.shapes in plain Python).
# HONEST LABEL: this is not W3C SHACL and has not been run through a SHACL engine. A SHACL export is PROPOSED.
version: 1.0.0
entity_shapes:
  dayone:Claim:
    required: [proposition, attributed_to, made_at, scope, source_type, epistemic_type]
    enums: {epistemic_type: [observed_fact, assertion, interpretation, inference, estimate, hypothesis]}
  dayone:Evidence:
    required: [source_ref, collected_at, original_format, sha256, source_authority, permitted_use, retention_policy, custodian]
    enums: {source_authority: [primary, secondary, public_record, interview, model_output, unknown]}
    patterns: {sha256: "^[0-9a-f]{64}$"}
  dayone:Finding:
    required: [statement, confidence, method]
  dayone:Question:
    required: [text, scope, status]
  dayone:Hypothesis:
    required: [text, falsifier]
  dayone:Opportunity:
    required: [description, status]
  dayone:ModelRun:
    required: [model, model_version, config, endpoint_class]
  dayone:Review:
    required: [reviewer_ref, decision, reviewed_at]
  dayone:Proposal:
    required: [concept_type, label, definition, state, proposed_by]
relationship_shapes:
  default:
    require_basis: true       # attrs.basis = [evidence uris] OR attrs.exploratory_rationale
    temporal_when_declared: true
