From eef5de613c75661e5d94baa086f6f2ddc26c7ed0 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Thu, 24 Mar 2016 23:16:07 -0400 Subject: Added verb frames In addition: - Added prepositions. - Rewrote a lot of the query interface. It now, for a lot of relationships, supports nested AND, OR, and NOT logic. - Rewrote the token class. It is now a union-like class instead of being polymorphic, which means smart pointers are no longer necessary. - Querying with regards to word derivation has been temporarily removed. - Sentinel values are now supported for all word types. - The VerbNet data retrieved from http://verbs.colorado.edu/~mpalmer/projects/verbnet/downloads.html was found to not be perfectly satisfactory in some regards, especially regarding adjective phrases. A patch file is now included in the repository describing the changes made to the VerbNet v3.2 download for the canonical verbly datafile. --- lib/adjective_query.h | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 lib/adjective_query.h (limited to 'lib/adjective_query.h') diff --git a/lib/adjective_query.h b/lib/adjective_query.h new file mode 100644 index 0000000..e7755cb --- /dev/null +++ b/lib/adjective_query.h @@ -0,0 +1,91 @@ +#ifndef ADJECTIVE_QUERY_H_05E590FD +#define ADJECTIVE_QUERY_H_05E590FD + +namespace verbly { + + class adjective_query { + public: + adjective_query(const data& _data); + + adjective_query& limit(int _limit); + adjective_query& random(); + adjective_query& except(const adjective& _word); + adjective_query& rhymes_with(const word& _word); + adjective_query& has_pronunciation(); + + adjective_query& requires_comparative_form(); + adjective_query& requires_superlative_form(); + adjective_query& position(adjective::positioning pos); + + adjective_query& is_variant(); + adjective_query& variant_of(filter _f); + + adjective_query& has_antonyms(); + adjective_query& antonym_of(filter _f); + + adjective_query& has_synonyms(); + adjective_query& synonym_of(filter _f); + + adjective_query& is_generalization(); + adjective_query& generalization_of(filter _f); + + adjective_query& is_specification(); + adjective_query& specification_of(filter _f); + + adjective_query& is_pertainymic(); + adjective_query& pertainym_of(filter _f); + + adjective_query& is_mannernymic(); + adjective_query& anti_mannernym_of(filter _f); + +/* adjective_query& derived_from(const word& _w); + adjective_query& not_derived_from(const word& _w);*/ + + std::list run() const; + + const static int unlimited = -1; + + protected: + const data& _data; + int _limit = unlimited; + bool _random = false; + std::list _rhymes; + std::list _except; + bool _has_prn = false; + + bool _requires_comparative_form = false; + bool _requires_superlative_form = false; + adjective::positioning _position = adjective::positioning::undefined; + + bool _is_variant = false; + filter _variant_of; + + bool _is_antonymic = false; + filter _antonym_of; + + bool _is_synonymic = false; + filter _synonym_of; + + bool _is_generalization = false; + filter _generalization_of; + + bool _is_specification = false; + filter _specification_of; + + bool _is_pertainymic = false; + filter _pertainym_of; + + bool _is_mannernymic = false; + filter _anti_mannernym_of; + +/* std::list _derived_from_adjective; + std::list _not_derived_from_adjective; + std::list _derived_from_adverb; + std::list _not_derived_from_adverb; + std::list _derived_from_noun; + std::list _not_derived_from_noun;*/ + }; + +}; + +#endif /* end of include guard: ADJECTIVE_QUERY_H_05E590FD */ -- cgit 1.4.1