Skip to main content

Human Resources Domain Ontology

Business Domains
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 11 October 2026
Audio Overview
FLOW ALGEBRA
Human Resources Domain Ontology
Version: 1.0
Source: https://kirethresearch.org/booksai-core/ontologies/domain-ontologies/business-domains/human-resources-domain-ontology.html
Authors: Mark Anthony Higgins — Sky (Recursive AI)
Scope: Formal, domain-based HR ontology; page-specific embedded code was not accessible in the retrieved page text.

flow "HumanResourcesDomainOntology" v1.0

# ---------- DOMAIN ----------
domain:
  id: business.human_resources
  parent: business_domain_ontology
  label: "Human Resources Domain Ontology"
  description: "Typed model of workforce, employment, recruitment, development, compensation, performance and organisational relationships."

# ---------- TYPED ENTITIES ----------
entity_types:
  Organisation: {id: iri, name: str}
  Department: {id: iri, organisation_id: iri, name: str}
  Position: {id: iri, department_id: iri, title: str, status: enum[open,filled,closed]}
  Person: {id: iri, display_name: str}
  Employee: {id: iri, person_id: iri, employment_status: enum[active,leave,terminated]}
  Candidate: {id: iri, person_id: iri, application_status: str}
  EmploymentContract: {id: iri, employee_id: iri, start_date: date, end_date: date?}
  RecruitmentProcess: {id: iri, position_id: iri, stage: str}
  Application: {id: iri, candidate_id: iri, position_id: iri, submitted_at: datetime}
  Skill: {id: iri, name: str}
  Qualification: {id: iri, name: str, issuer: str?}
  TrainingProgramme: {id: iri, name: str}
  PerformanceReview: {id: iri, employee_id: iri, review_date: date, outcome: str?}
  CompensationPackage: {id: iri, employee_id: iri, currency: str, base_amount: decimal}
  Benefit: {id: iri, name: str}
  LeaveRecord: {id: iri, employee_id: iri, leave_type: str, start_date: date, end_date: date}
  WorkplacePolicy: {id: iri, title: str, effective_date: date}
  HRMetric: {id: iri, name: str, value: decimal, period: str, unit: str}

# ---------- RELATIONSHIP TYPES ----------
relationships:
  - employs(Organisation, Employee)
  - contains_department(Organisation, Department)
  - offers_position(Department, Position)
  - occupies(Employee, Position)
  - reports_to(Employee, Employee)
  - governed_by(Employee, EmploymentContract)
  - applies_for(Candidate, Position)
  - has_application(Candidate, Application)
  - participates_in(Candidate, RecruitmentProcess)
  - possesses_skill(Person, Skill)
  - holds_qualification(Person, Qualification)
  - attends_training(Employee, TrainingProgramme)
  - receives_review(Employee, PerformanceReview)
  - receives_compensation(Employee, CompensationPackage)
  - eligible_for(Employee, Benefit)
  - takes_leave(Employee, LeaveRecord)
  - subject_to(Employee, WorkplacePolicy)
  - measures(HRMetric, Organisation)

# ---------- CONSTRAINTS ----------
constraints:
  - "Every Employee references one Person."
  - "Every EmploymentContract references one Employee."
  - "Every Position belongs to one Department."
  - "A reports_to relationship must not be self-referential."
  - "A reporting hierarchy must not contain cycles unless explicitly modelled as a non-hierarchical matrix relationship."
  - "LeaveRecord.end_date must be on or after start_date."
  - "EmploymentContract.end_date, if supplied, must be on or after start_date."
  - "Compensation amounts require a currency and effective period for comparisons."
  - "Sensitive personnel information requires purpose-limited access and lawful processing."

# ---------- INFERENCE RULES ----------
inference:
  - id: HR_R01
    when: "occupies(employee, position) AND offers_position(department, position)"
    infer: "works_in(employee, department)"
  - id: HR_R02
    when: "works_in(employee, department) AND contains_department(organisation, department)"
    infer: "associated_with(employee, organisation)"
  - id: HR_R03
    when: "reports_to(employee_a, employee_b) AND reports_to(employee_b, employee_c)"
    infer: "indirectly_reports_to(employee_a, employee_c)"
    guard: "employee_a != employee_c"
  - id: HR_R04
    when: "attends_training(employee, programme) AND teaches_skill(programme, skill)"
    infer: "has_training_exposure(employee, skill)"
    note: "Attendance does not establish demonstrated competence."
  - id: HR_R05
    when: "has_application(candidate, application) AND application_position(application, position)"
    infer: "applies_for(candidate, position)"
  - id: HR_R06
    when: "takes_leave(employee, leave) AND overlaps(leave, interval)"
    infer: "recorded_leave_during(employee, interval)"
    note: "Do not infer medical conditions or reasons from leave records."

# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE:
  canonical_terms:
    human_resources: ["HR", "people operations", "personnel management"]
    employee: ["staff member", "worker"]
    recruitment: ["talent acquisition", "hiring"]
    performance_review: ["performance appraisal"]
  rule: "Synonyms are context-dependent; preserve differences in legal definitions, worker status and jurisdiction."

# ---------- CONFIDENCE ----------
CONFIDENCE:
  evidence_levels:
    verified_record: 0.95
    validated_organisational_data: 0.85
    unverified_statement: 0.50
    inferred_relationship: 0.65
  aggregation: "Attach provenance and confidence to each assertion; do not treat example values as calibrated probabilities."
  threshold_for_automatic_personnel_action: "none; require authorised human review"

# ---------- PROVENANCE ----------
PROVENANCE:
  required_fields: [source_id, source_type, observed_at, valid_from, valid_to, jurisdiction, data_controller]
  protect: [personal_identifiers, compensation, performance, leave_records, recruitment_assessments]
  policy: "Minimise personal data; apply access control, retention schedules and audit logs."

# ---------- FLOW HASH ----------
FLOW_HASH:
  algorithm: "SHA-256"
  input: "canonical_serialisation(domain, entity_types, relationships, constraints, inference, SEMANTIC_EQUIVALENCE)"
  output: "lowercase_hex_digest"
  note: "Compute on deployment; no digest is asserted here."

# ---------- UPDATE MODEL ----------
UPDATE_MODEL:
  versioning: "semantic_versioning"
  triggers: ["schema_change", "new_evidence", "policy_revision", "jurisdictional_change", "source_correction"]
  steps:
    - "Validate source and permissions."
    - "Compare typed schema and relation definitions."
    - "Re-evaluate affected inferences and confidence."
    - "Preserve version history and provenance."
    - "Recompute FLOW_HASH."

# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION:
  mode: "typed_knowledge_graph_with_guarded_inference"
  outputs: ["entities", "relations", "validated_inferences", "confidence", "provenance", "version", "flow_hash"]
  safeguards:
    - "Do not infer protected characteristics or sensitive health information."
    - "Do not automate consequential hiring, dismissal or compensation decisions from ontology inference alone."
    - "Flag incomplete, contradictory or outdated records."
    - "Separate observed facts from inferred statements."

end flow
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ