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

swipl - ben_prolog_db

oooooo oooooo oooo oooo

`888. `888. .8' `888

`888. .8888. .8' .ooooo. 888 .ooooo. .ooooo. ooo. .oo. .oo. .ooooo.

`888 .8'`888. .8' d88' `88b 888 d88' `"Y8 d88' `88b `888P"Y88bP"Y88b d88' `88b

`888.8' `888.8' 888ooo888 888 888 888 888 888 888 888 888ooo888

`888' `888' 888 .o 888 888 .o8 888 888 888 888 888 888 .o

`8' `8' `Y8bod8P' o888o `Y8bod8P' `Y8bod8P' o888o o888o o888o `Y8bod8P'

Please run ?- license for attributions

For online help, please contact Ben at ben.a.merritt@gmail.com

In order to better assist you, please have your job offer ready

To learn more about Ben, run a query over this Prolog program

For example, you can run `all_skills(X).`