ontoref/ontology/schemas/personal.ncl

86 lines
2.1 KiB
Plaintext
Raw Normal View History

# 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 = [],
},
}