86 lines
2.1 KiB
Plaintext
86 lines
2.1 KiB
Plaintext
|
|
# Personal ontology schema — types for content artifacts and career opportunities.
|
||
|
|
# Used by PersonalOntology projects to track what to write, where to apply, and how to present work.
|
||
|
|
#
|
||
|
|
# Design decisions:
|
||
|
|
# - Content and Opportunity are independent types; linked_nodes connects them to core.ncl node IDs.
|
||
|
|
# - audience and fit_signals use closed enums to force explicit categorization.
|
||
|
|
# - PersonalConfig is the export contract for .ontology/personal.ncl in consumer projects.
|
||
|
|
|
||
|
|
let content_kind_type = [|
|
||
|
|
'BlogPost,
|
||
|
|
'ConferenceProposal,
|
||
|
|
'CV,
|
||
|
|
'Application,
|
||
|
|
'Email,
|
||
|
|
'Thread,
|
||
|
|
|] in
|
||
|
|
|
||
|
|
let content_status_type = [|
|
||
|
|
'Idea,
|
||
|
|
'Draft,
|
||
|
|
'Review,
|
||
|
|
'Published,
|
||
|
|
'Rejected,
|
||
|
|
'Archived,
|
||
|
|
|] in
|
||
|
|
|
||
|
|
let opportunity_kind_type = [|
|
||
|
|
'Conference,
|
||
|
|
'Job,
|
||
|
|
'Grant,
|
||
|
|
'Collaboration,
|
||
|
|
'Podcast,
|
||
|
|
|] in
|
||
|
|
|
||
|
|
let opportunity_status_type = [|
|
||
|
|
'Watching,
|
||
|
|
'Evaluating,
|
||
|
|
'Active,
|
||
|
|
'Submitted,
|
||
|
|
'Closed,
|
||
|
|
|] in
|
||
|
|
|
||
|
|
let audience_type = [|
|
||
|
|
'Technical,
|
||
|
|
'HiringManager,
|
||
|
|
'GeneralPublic,
|
||
|
|
'Community,
|
||
|
|
'Academic,
|
||
|
|
|] in
|
||
|
|
|
||
|
|
let content_type = {
|
||
|
|
id | String,
|
||
|
|
kind | content_kind_type,
|
||
|
|
title | String | default = "",
|
||
|
|
status | content_status_type,
|
||
|
|
linked_nodes | Array String | default = [],
|
||
|
|
audience | audience_type,
|
||
|
|
note | String | default = "",
|
||
|
|
} in
|
||
|
|
|
||
|
|
let opportunity_type = {
|
||
|
|
id | String,
|
||
|
|
kind | opportunity_kind_type,
|
||
|
|
name | String,
|
||
|
|
status | opportunity_status_type,
|
||
|
|
fit_signals | Array String | default = [],
|
||
|
|
linked_nodes | Array String | default = [],
|
||
|
|
deadline | String | default = "",
|
||
|
|
note | String | default = "",
|
||
|
|
} in
|
||
|
|
|
||
|
|
{
|
||
|
|
ContentKind = content_kind_type,
|
||
|
|
ContentStatus = content_status_type,
|
||
|
|
OpportunityKind = opportunity_kind_type,
|
||
|
|
OpportunityStatus = opportunity_status_type,
|
||
|
|
Audience = audience_type,
|
||
|
|
Content = content_type,
|
||
|
|
Opportunity = opportunity_type,
|
||
|
|
|
||
|
|
PersonalConfig = {
|
||
|
|
contents | Array content_type | default = [],
|
||
|
|
opportunities | Array opportunity_type | default = [],
|
||
|
|
},
|
||
|
|
}
|