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
Download Code
Copy to Clipboard