summary refs log tree commit diff stats
path: root/lib/noun.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/noun.h')
-rw-r--r--lib/noun.h150
1 files changed, 4 insertions, 146 deletions
diff --git a/lib/noun.h b/lib/noun.h index fbc2f9e..77601d0 100644 --- a/lib/noun.h +++ b/lib/noun.h
@@ -11,6 +11,7 @@ namespace verbly {
11 friend class noun_query; 11 friend class noun_query;
12 12
13 public: 13 public:
14 noun();
14 noun(const data& _data, int _id); 15 noun(const data& _data, int _id);
15 16
16 std::string base_form() const; 17 std::string base_form() const;
@@ -20,7 +21,9 @@ namespace verbly {
20 bool has_plural_form() const; 21 bool has_plural_form() const;
21 22
22 noun_query hypernyms() const; 23 noun_query hypernyms() const;
24 noun_query full_hypernyms() const;
23 noun_query hyponyms() const; 25 noun_query hyponyms() const;
26 noun_query full_hyponyms() const;
24 noun_query part_meronyms() const; 27 noun_query part_meronyms() const;
25 noun_query part_holonyms() const; 28 noun_query part_holonyms() const;
26 noun_query substance_meronyms() const; 29 noun_query substance_meronyms() const;
@@ -33,153 +36,8 @@ namespace verbly {
33 noun_query antonyms() const; 36 noun_query antonyms() const;
34 adjective_query pertainyms() const; 37 adjective_query pertainyms() const;
35 adjective_query variations() const; 38 adjective_query variations() const;
36 };
37
38 class noun_query {
39 public:
40 noun_query(const data& _data);
41
42 noun_query& limit(int _limit);
43 noun_query& random(bool _random);
44 noun_query& except(const noun& _word);
45 noun_query& rhymes_with(const word& _word);
46 noun_query& has_pronunciation(bool _has_prn);
47
48 noun_query& is_hypernym(bool _arg);
49 noun_query& hypernym_of(const noun& _noun);
50 noun_query& not_hypernym_of(const noun& _noun);
51
52 noun_query& is_hyponym(bool _arg);
53 noun_query& hyponym_of(const noun& _noun);
54 noun_query& not_hyponym_of(const noun& _noun);
55
56 noun_query& is_part_meronym(bool _arg);
57 noun_query& part_meronym_of(const noun& _noun);
58 noun_query& not_part_meronym_of(const noun& _noun);
59
60 noun_query& is_part_holonym(bool _arg);
61 noun_query& part_holonym_of(const noun& _noun);
62 noun_query& not_part_holonym_of(const noun& _noun);
63
64 noun_query& is_substance_meronym(bool _arg);
65 noun_query& substance_meronym_of(const noun& _noun);
66 noun_query& not_substance_meronym_of(const noun& _noun);
67
68 noun_query& is_substance_holonym(bool _arg);
69 noun_query& substance_holonym_of(const noun& _noun);
70 noun_query& not_substance_holonym_of(const noun& _noun);
71
72 noun_query& is_member_meronym(bool _arg);
73 noun_query& member_meronym_of(const noun& _noun);
74 noun_query& not_member_meronym_of(const noun& _noun);
75
76 noun_query& is_member_holonym(bool _arg);
77 noun_query& member_holonym_of(const noun& _noun);
78 noun_query& not_member_holonym_of(const noun& _noun);
79
80 noun_query& is_proper(bool _arg);
81 noun_query& is_not_proper(bool _arg);
82
83 noun_query& is_instance(bool _arg);
84 noun_query& instance_of(const noun& _noun);
85 noun_query& not_instance_of(const noun& _noun);
86
87 noun_query& is_class(bool _arg);
88 noun_query& class_of(const noun& _noun);
89 noun_query& not_class_of(const noun& _noun);
90
91 noun_query& has_synonyms(bool _arg);
92 noun_query& synonym_of(const noun& _noun);
93 noun_query& not_synonym_of(const noun& _noun);
94
95 noun_query& has_antonyms(bool _arg);
96 noun_query& antonym_of(const noun& _noun);
97 noun_query& not_antonym_of(const noun& _noun);
98
99 noun_query& has_pertainym(bool _arg);
100 noun_query& anti_pertainym_of(const adjective& _adj);
101
102 noun_query& is_attribute(bool _arg);
103 noun_query& attribute_of(const adjective& _adj);
104
105 noun_query& derived_from(const word& _w);
106 noun_query& not_derived_from(const word& _w);
107
108 std::list<noun> run() const;
109
110 const static int unlimited = -1;
111
112 private:
113 const data& _data;
114 int _limit = unlimited;
115 bool _random = false;
116 std::list<std::string> _rhymes;
117 std::list<noun> _except;
118 bool _has_prn = false;
119
120 bool _is_hypernym = false;
121 std::list<noun> _hypernym_of;
122 std::list<noun> _not_hypernym_of;
123
124 bool _is_hyponym = false;
125 std::list<noun> _hyponym_of;
126 std::list<noun> _not_hyponym_of;
127
128 bool _is_part_meronym = false;
129 std::list<noun> _part_meronym_of;
130 std::list<noun> _not_part_meronym_of;
131
132 bool _is_substance_meronym = false;
133 std::list<noun> _substance_meronym_of;
134 std::list<noun> _not_substance_meronym_of;
135
136 bool _is_member_meronym = false;
137 std::list<noun> _member_meronym_of;
138 std::list<noun> _not_member_meronym_of;
139
140 bool _is_part_holonym = false;
141 std::list<noun> _part_holonym_of;
142 std::list<noun> _not_part_holonym_of;
143
144 bool _is_substance_holonym = false;
145 std::list<noun> _substance_holonym_of;
146 std::list<noun> _not_substance_holonym_of;
147
148 bool _is_member_holonym = false;
149 std::list<noun> _member_holonym_of;
150 std::list<noun> _not_member_holonym_of;
151
152 bool _is_proper = false;
153 bool _is_not_proper = false;
154
155 bool _is_instance = false;
156 std::list<noun> _instance_of;
157 std::list<noun> _not_instance_of;
158
159 bool _is_class = false;
160 std::list<noun> _class_of;
161 std::list<noun> _not_class_of;
162
163 bool _has_synonyms = false;
164 std::list<noun> _synonym_of;
165 std::list<noun> _not_synonym_of;
166
167 bool _has_antonyms = false;
168 std::list<noun> _antonym_of;
169 std::list<noun> _not_antonym_of;
170
171 bool _has_pertainym = false;
172 std::list<adjective> _anti_pertainym_of;
173
174 bool _is_attribute = false;
175 std::list<adjective> _attribute_of;
176 39
177 std::list<adjective> _derived_from_adjective; 40 bool operator<(const noun& other) const;
178 std::list<adjective> _not_derived_from_adjective;
179 std::list<adverb> _derived_from_adverb;
180 std::list<adverb> _not_derived_from_adverb;
181 std::list<noun> _derived_from_noun;
182 std::list<noun> _not_derived_from_noun;
183 }; 41 };
184 42
185}; 43};