1
/*************************************************************
2
* Facts
3
*/
4
5
% skill types
6
skill_type(language).
7
skill_type(framework).
8
skill_type(database).
9
skill_type(platform).
10
skill_type(paradigm).
11
12
% languages
13
skill(typescript, language).
14
skill(python, language).
15
skill(sql, language).
16
skill(go, language).
17
skill(prolog, language).
18
skill(java, language).
19
20
% frameworks
21
skill(react, framework).
22
skill(react_native, framework).
23
skill(next, framework).
24
skill(express, framework).
25
skill(fiber, framework).
26
skill(storybook, framework).
27
28
% databases
29
skill(postgresql, database).
30
skill(elasticsearch, database).
31
skill(dynamodb, database).
32
33
% platforms
34
skill(aws, platform).
35
skill(docker, platform).
36
skill(stripe, platform).
37
38
% paradigms
39
skill(object_oriented_programming, paradigm).
40
skill(logical_programming, paradigm).
41
skill(mathematical_analysis, paradigm).
42
43
% education
44
institution(regis_university).
45
institution(washington_state_university).
46
institution(skagit_valley_college).
47
48
% work experience
49
company(radency).
50
company(soul_refiner).
51
company(us_army).
52
company(caritas_spes).
53
company(credo).
54
55
used(radency, typescript).
56
used(radency, react).
57
used(radency, python).
58
used(radency, elasticsearch).
59
used(radency, storybook).
60
used(soul_refiner, typescript).
61
used(soul_refiner, sql).
62
used(soul_refiner, postgres).
63
used(soul_refiner, dynamodb).
64
used(soul_refiner, react).
65
used(soul_refiner, react_native).
66
used(soul_refiner, next).
67
used(soul_refiner, express).
68
used(soul_refiner, storybook).
69
used(soul_refiner, object_oriented_programming).
70
used(soul_refiner, docker).
71
used(soul_refiner, aws).
72
used(credo, typescript).
73
used(credo, sql).
74
used(credo, postgres).
75
used(credo, react_native).
76
used(credo, object_oriented_programming).
77
used(regis_university, java).
78
used(regis_university, object_oriented_programming).
79
used(regis_university, logical_programming).
80
used(washington_state_university, mathematical_analysis).
81
used(skagit_valley_college, mathematical_analysis).
82
83
started(skagit_valley_college, student, date(2009,09,04), unpaid).
84
started(washington_state_university, student, date(2012,08,25), unpaid).
85
started(regis_university, student, date(2023,04,15), unpaid).
86
started(caritas_spes, volunteer, date(2021,11,24), unpaid).
87
started(credo, volunteer, date(2022,04,22), unpaid).
88
started(us_army, infantry_squad_leader, date(2014,01,06), paid).
89
started(radency, full_stack_intern, date(2021,12,20), unpaid).
90
started(radency, software_engineer, date(2022,02,15), paid).
91
started(soul_refiner, software_engineer, date(2022,07,17), paid).
92
93
ended(skagit_valley_college, student, date(2012,05,15), unpaid).
94
ended(washington_state_university, student, date(2013,05,25), unpaid).
95
ended(regis_university, student, cputime, unpaid).
96
ended(caritas_spes, volunteer, cputime, unpaid).
97
ended(credo, volunteer, cputime, unpaid).
98
ended(us_army, infantry_squad_leader, date(2021,04,08), paid).
99
ended(radency, full_stack_intern, date(2022,02,15), unpaid).
100
ended(radency, software_engineer, date(2022,07,17), paid).
101
ended(soul_refiner, software_engineer, cputime, paid).
102
103
/*************************************************************
104
* Rules
105
*/
106
107
% skills
108
all_skills(X) :- setof(S, skill(S, B), X).
109
110
all_skills_by_type(Type, X) :- setof(S, skill(S, Type), X).
111
112
skills_at(Company, Skills) :-
113
setof(S, used(Company, S), Skills).
114
115
% work experience
116
position_at(Company, X) :-
117
started(Company, X, _, _).
118
119
all_positions(X) :-
120
setof(P, position_at(_, P), X).
121
122
time_at(Entity, Start, End) :-
123
(company(Entity) ; institution(Entity)),
124
started(Entity, X, Start, _),
125
ended(Entity, Y, End, _),
126
Start \= End,
127
!.
128
129
/*************************************************************
130
* Utilities
131
*/
132
133
f_date(Date, X) :-
134
format_time(atom(X),
135
'%d %b %Y',
136
Date, posix).
137