module core learn <https://purl.org/learn/core#> is

  import [
    dc
    doap
    foaf
    owl
    rdfs
    skos
    xsd
  ]

  @skos:prefLabel = [ "Learning Ontology"@en "Læringsontologi"@da ]
  @dc:description = "General domain ontology on learning"@en
  @dc:created = @xsd:date(2024-04-26)
  @dc:creator = <https://dr.jones.dk/me/#me>
  @dc:license = <https://spdx.org/licenses/AGPL-3.0-or-later>
  @rdf:type = skos:ConceptScheme

  entity Objective is
    @rdfs:subClassOf = owl:Thing
    @skos:prefLabel = [ "Objective"@en "Mål"@da ]
    @skos:description = "Abstract or concrete goal/skill/competence resulting from a succesful learning"@en
    identity id -> unknown

  end

  entity Process is
    @rdfs:subClassOf = doap:Project
    @skos:prefLabel = [ "Learning Process"@en "Læringsproces"@da ]
    @skos:description = "The process of acquiring new understanding"@en
    identity id -> unknown

    hasObjective -> Objective
    involvesAction -> Action
    causesCognition -> Cognition
  end

  entity Cognition is
    @rdfs:subClassOf = owl:Thing
    @skos:prefLabel = [ "Cognition"@en "Erkendelse"@da ]
    @skos:description = "The mental action or process of acquiring knowledge and understanding"@en
    identity id -> unknown
  end

  entity Learner foaf:Person is
    @rdfs:subClassOf = foaf:Person
    @skos:prefLabel = [ "Learner"@en "Elev"@da ]
    @skos:description = "Agent subject to a learning process"@en
    identity id -> unknown

    learnsWithin -> Space
    learnsUsing -> Material
    learnsThrough -> Action
    learnsFormalizedBy -> System
    learnsCausedBy -> Cause
    seeksObjective -> Objective
    achievesCognition -> Cognition
    isEducatedBy -> Educator
;    isTaughtBy -> Teacher
;    isFacilitatedBy -> Facilitator
;    isEvaluatedBy -> Evaluator
;    isInstructedBy -> Instructor
    collaboratesWith -> Learner
    usesMethod -> Method
  end

  entity Educator is
    @rdfs:subClassOf = foaf:Person
    @skos:prefLabel = [ "Educator"@en "Underviser"@da ]
    @skos:description = "Agent aiding a learner towards an objective"@en
;    @skos:narrower = [ learn:Teacher learn:Instructor learn:Facilitator learn:Evaluator ]
    identity id -> unknown

    educates -> Learner
    educatesAbout -> Objective
    educatesUsing -> Material
    educatesFormalizedBy -> System
  end

  entity System is
    @skos:description = "Set of principles/methods/conventions for structuring a learning process"@en
;    @skos:narrower = [ learn:School_of_thought learn:Dogma learn:Principle ]
    identity id -> unknown
  end

  entity Action is
    @skos:description = "Abstract or concrete action/practice/movement by a learner as part of a learning process"@en
    identity id -> unknown

    contributesTo -> Cognition
  end

  entity Cause is
    @skos:description = "Originating reason for a learner to initiate a learning process"@en
    identity id -> unknown

    causesAction -> Action
  end

  entity Material is
    @skos:description = "Sets of information intended to aid a learner in reaching a learning objective"@en
;    @skos:narrower = [ learn:School_book learn:Prior_Knowledge ]
    identity id -> unknown
  end

  ;; the "evaluation"
  entity Evaluation

  entity Method is
    @skos:description = "Way of approaching a learning process"@en
    identity id -> unknown

    requiresMaterial -> Material
    isPartOf -> System
    shapesAction -> Action
  end

end