24 #include "../ConcordLib/QueryNode.h" 25 #include "../ConcordLib/QueryOptions.h" 54 CQuery(
const string &label=
string(
""))
157 virtual void Clear(
bool deep=
true);
174 :
CQuery(label), m_Negated(negated)
183 virtual bool Negate(
void);
189 virtual string NegString(
const std::string &s);
196 virtual string jsonData() {
return string(
"\"Negated\":")+(m_Negated ?
"1" :
"0"); };
204 CQAtomic(
const string &label=
string(
""),
bool negated=
false)
232 :
CQNegatable(opName,negated), m_dtr1(dtr1), m_dtr2(dtr2), m_OpName(opName)
248 virtual void Clear(
bool deep=
true);
314 :
CQBinOp(dtr1,dtr2,
"WITH"), m_MatchId(matchId)
337 :
CQWith(dtr1,dtr2,matchId)
339 m_OpName =
"WITHOUT";
352 :
CQWith(dtr1,dtr2,matchId)
381 CQToken(
const string &indexName=
string(
""),
const string &value=
string(
""),
const BYTE matchId=0)
382 :
CQAtomic(value), m_IndexName(indexName), m_Value(value), m_MatchId(matchId)
405 string IndexName(
const string& DefaultIndexName=
string(
""));
408 string BreakName(
const string& DefaultBreakName=
string(
""));
411 virtual string IndexString(
void);
414 virtual string ValueString(
void);
417 virtual string MatchIdString(
void);
424 virtual string jsonValue(
void);
434 CQTokExact(
const string &indexName=
string(
""),
const string &value=
string(
""))
440 virtual string ValueString();
449 CQTokAny(
const string &indexName=
string(
""),
const string &value=
string(
"*"))
456 virtual string ValueString();
468 CQTokAnchor(
const string &indexName=
string(
""),
const string &value=
string(
""))
471 m_ValueInt = strtol(value.c_str(), NULL, 0);
477 virtual string IndexString(
void);
478 virtual string ValueString();
489 CQTokRegex(
const string &indexName=
string(
""),
const string ®ex=
string(
""),
bool negated=
false)
490 :
CQToken(indexName,regex), m_bRegexNegated(negated)
496 virtual string ValueString();
508 CQTokSet(
const string &indexName=
string(
""),
const string& rawValue=
string(
""),
const set<string>& values=set<string>())
509 :
CQToken(indexName,rawValue), m_Values(values)
517 string SetValueString(
const set<string> &values);
526 virtual string ValueString(
void);
543 CQTokInfl(
const string &indexName=
string(
""),
const string &value=
string(
""),
const vector<string> expanders=vector<string>())
544 :
CQTokSet(indexName,value), m_Expanders(expanders), m_Txc(
"(CQTokInfl)")
547 CQTokInfl(
const string &indexName=
string(
""),
const set<string> &values=set<string>(),
const vector<string> expanders=vector<string>())
548 :
CQTokSet(indexName,string(
""),values), m_Expanders(expanders), m_Txc(
"(CQTokInfl)")
563 virtual string ValueString(
void);
566 virtual string ExpanderString(
void);
567 virtual string ExpanderJson(
void);
582 CQTokSetInfl(
const string &indexName=
string(
""),
const set<string> &values=set<string>(),
const vector<string> expanders=vector<string>())
584 { m_RawValues = m_Values; };
589 virtual string ValueString(
void);
599 CQTokPrefix(
const string &indexName=
string(
""),
const string &prefix=
string(
""))
607 virtual string ValueString();
616 CQTokSuffix(
const string &indexName=
string(
""),
const string &suffix=
string(
""))
622 virtual string ValueString();
630 CQTokInfix(
const string &indexName=
string(
""),
const string &infix=
string(
""))
636 virtual string ValueString();
644 CQTokPrefixSet(
const string &indexName=
string(
""),
const set<string> &prefixes=set<string>())
650 virtual string ValueString();
651 virtual string jsonClass() {
return "CQTokPrefixSet"; };
658 CQTokSuffixSet(
const string &indexName=
string(
""),
const set<string> &suffixes=set<string>())
664 virtual string ValueString();
665 virtual string jsonClass() {
return "CQTokSuffixSet"; };
672 CQTokInfixSet(
const string &indexName=
string(
""),
const set<string> &infixes=set<string>())
678 virtual string ValueString();
690 CQTokMorph(
const string &indexName=
string(
"MorphPattern"),
const vector<string>& items=vector<string>())
691 :
CQToken(indexName), m_Items(items)
692 {
if (!m_Items.empty()) m_Value=m_Items[0]; };
697 void Append(
const string &item) { m_Items.push_back(item); };
701 virtual string ValueString();
711 CQTokLemma(
const string &indexName=
string(
"Lemma"),
const string &value=
string(
""))
712 :
CQTokMorph(indexName,vector<string>(1,value))
718 virtual string ValueString();
728 CQTokThes(
const string &indexName=
string(
"Thes"),
const string &value=
string(
""))
735 virtual string ValueString();
744 CQTokChunk(
const string &indexName=
string(
""),
const string &value=
string(
""))
751 virtual string ValueString();
759 CQTokFile(
const string &indexName=
string(
""),
const string &fileName=
string(
""))
766 virtual string ValueString();
793 : m_dtr1(dtr1), m_dtr2(dtr2), m_dtr3(dtr3), m_Dist(dist)
803 virtual void Clear(
bool deep=
true);
846 CQSeq(
const vector<CQToken*> &items,
const vector<BYTE> &dists,
const vector<BYTE> &distops)
847 : m_Items(items), m_Dists(dists), m_DistOps(distops)
868 virtual void Clear(
bool deep=
true);
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:634
CQWithout(CQuery *dtr1=NULL, CQuery *dtr2=NULL, BYTE matchId=0)
Definition: Query.h:336
virtual string jsonClass()
Definition: Query.h:327
virtual string jsonClass()
Definition: Query.h:637
CQTokSuffixSet(const string &indexName=string(""), const set< string > &suffixes=set< string >())
Definition: Query.h:658
bool m_Negated
whether this query is negated
Definition: Query.h:169
virtual ~CQTokPrefixSet()
Definition: Query.h:647
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:764
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:475
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:620
virtual bool Negate()
Toggle negation flag, returns new value. Default throws an exception.
Definition: Query.cpp:105
virtual ~CQWithout()
Definition: Query.h:341
single-token query: positional anchor
Definition: Query.h:463
virtual ~CQTokSuffixSet()
Definition: Query.h:661
CQTokRegex(const string &indexName=string(""), const string ®ex=string(""), bool negated=false)
Definition: Query.h:489
CQTokMorph(const string &indexName=string("MorphPattern"), const vector< string > &items=vector< string >())
Definition: Query.h:690
TxChain m_Txc
expansion chain; see TermExpander.h
Definition: Query.h:540
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:439
BYTE m_MatchId
Definition: Query.h:378
virtual string toString()
DEBUG: return a canonical string form for this query (default just returns m_Label) ...
Definition: Query.h:126
logical conjunction (implicit)
Definition: Query.h:277
virtual ~CQTokInfixSet()
Definition: Query.h:675
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:494
virtual bool RootOK()
Is this query an admissible root of a compiled parse tree (default returns !this->Negated()) ...
Definition: Query.h:106
single-token query: set expanded using CTermExpander.h interface
Definition: Query.h:576
CQueryNode * m_Node
underlying CQueryNode (DDC-v1.x API)
Definition: Query.h:45
virtual ~CQTokExact()
Definition: Query.h:437
string Format(const char *format,...)
Definition: ddcString.cpp:393
virtual bool Negated()
For sanity checks. Default just returns false.
Definition: Query.h:91
virtual ~CQuery(void)
Definition: Query.cpp:90
virtual string jsonValue()
json stringification utility
Definition: Query.h:480
virtual string jsonClass()
Definition: Query.h:479
virtual void ClearOptions()
deletes m_Options if non-NULL
Definition: Query.cpp:74
CQTokInfl(const string &indexName=string(""), const set< string > &values=set< string >(), const vector< string > expanders=vector< string >())
Definition: Query.h:547
BYTE m_Dist
maximum distance
Definition: Query.h:789
virtual string jsonClass()
Definition: Query.h:497
virtual ~CQWithor()
Definition: Query.h:356
CQNegatable(bool negated)
Definition: Query.h:176
CQTokSetInfl(const string &indexName=string(""), const set< string > &values=set< string >(), const vector< string > expanders=vector< string >())
Definition: Query.h:582
single-token query: arbitrary token (indexName and value are ignored)
Definition: Query.h:447
single-token query: suffix-set (left-truncated) query *{SUFFIX,...}
Definition: Query.h:656
single-token query: infix (substring) query INFIX
Definition: Query.h:628
single-token query: expanded using CTermExpander.h interface
Definition: Query.h:534
virtual string jsonClass()
Definition: Query.h:257
CQuery(const string &label=string(""))
Default constructor.
Definition: Query.h:55
virtual string jsonClass()
Definition: Query.h:301
CQNegatable(const string &label=string(""), bool negated=false)
Default constructor.
Definition: Query.h:173
CQSeq(const vector< CQToken *> &items, const vector< BYTE > &dists, const vector< BYTE > &distops)
literal constructor (unused)
Definition: Query.h:846
virtual ~CQOr()
Definition: Query.h:297
virtual string jsonClass()
Definition: Query.h:720
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:662
virtual string jsonClass()
Definition: Query.h:881
CQuery * m_dtr2
second argument
Definition: Query.h:225
void SetCompiler(CQueryCompiler *compiler)
Definition: Query.cpp:57
virtual string jsonClass()
Definition: Query.h:591
virtual void ClearNode()
deletes m_Node if non-NULL
Definition: Query.cpp:65
virtual ~CQTokMorph()
Definition: Query.h:694
CQTokInfl(const string &indexName=string(""), const string &value=string(""), const vector< string > expanders=vector< string >())
Definition: Query.h:543
virtual string jsonValue()
json stringification utility
Definition: Query.h:704
CQToken(const string &indexName=string(""), const string &value=string(""), const BYTE matchId=0)
Definition: Query.h:381
virtual ~CQToken()
Definition: Query.h:384
CQAnd(CQuery *dtr1=NULL, CQuery *dtr2=NULL)
Definition: Query.h:265
CQTokLemma(const string &indexName=string("Lemma"), const string &value=string(""))
Definition: Query.h:711
virtual string jsonData()
Definition: Query.h:196
virtual bool RootOK()
Is this query an admissible root of a compiled parse tree (default returns !this->Negated()) ...
Definition: Query.h:299
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:749
virtual string jsonClass()
Definition: Query.h:651
virtual string jsonClass()
Definition: Query.h:665
single-token query: file list (UNSAFE)
Definition: Query.h:757
CQuery * m_dtr1
first query argument (required)
Definition: Query.h:780
CQAtomic(const string &label=string(""), bool negated=false)
Default constructor.
Definition: Query.h:204
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:561
CQTokFile(const string &indexName=string(""), const string &fileName=string(""))
Definition: Query.h:759
virtual string jsonClass()
Definition: Query.h:138
virtual string jsonClass()
Definition: Query.h:752
string jsonStr(ddcObject *o)
json strinfication wrapper
Definition: ddcObject.h:208
CQOr(CQuery *dtr1=NULL, CQuery *dtr2=NULL)
Definition: Query.h:294
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:454
logical conjunction
Definition: Query.h:263
single-token query: chunk (compiles, but UNTESTED)
Definition: Query.h:742
virtual void SetOptions(CQueryOptions *opts)
set global query options ; deletes any pre-existing m_Options
Definition: Query.cpp:145
virtual bool HasMatchId() const
Returns true iff this query uses a nontrival match-id operator; default checks (this->GetMatchId() !=...
Definition: Query.cpp:125
CQWith(CQuery *dtr1=NULL, CQuery *dtr2=NULL, BYTE matchId=0)
Definition: Query.h:313
CQueryNode is an abstract class for any node in a query parse tree. A parse tree is built by YACC dur...
Definition: QueryNode.h:42
logical disjunction
Definition: Query.h:292
string m_Value
value to be searched for (default="")
Definition: Query.h:374
virtual ~CQTokSet()
Definition: Query.h:511
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:402
CQueryTokenNode is a class which corresponds to one token or it's singular property (for example lemm...
Definition: QueryNode.h:273
virtual string jsonClass()
Definition: Query.h:287
class for global query filters aka "query operators"
Definition: ddcObject.h:45
string jsonValues(void)
wrapper for jsonArray(m_Values)
Definition: Query.h:523
CQTokPrefix(const string &indexName=string(""), const string &prefix=string(""))
Definition: Query.h:599
virtual bool Compile(CQueryCompiler *compiler)
Definition: Query.cpp:37
void Append(const string &item)
append an item to the current list
Definition: Query.h:697
virtual string jsonClass()
Definition: Query.h:609
virtual ~CQTokAny()
Definition: Query.h:452
virtual string jsonValue(void)
json stringification utility
Definition: Query.cpp:524
virtual string optionsToString()
DEBUG: return canonical option string
Definition: Query.cpp:152
CQuery * m_dtr1
first argument
Definition: Query.h:222
virtual string jsonClass()
Definition: Query.h:623
CQTokPrefixSet(const string &indexName=string(""), const set< string > &prefixes=set< string >())
Definition: Query.h:644
CQNegatable: negatable queries.
Definition: Query.h:166
set< string > m_Values
set of user-specified target forms
Definition: Query.h:505
virtual ~CQTokLemma()
Definition: Query.h:714
single-token query: exact full-string match
Definition: Query.h:432
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:514
list< ddcObject * > ddcObjectList
Definition: ddcObject.h:28
virtual string jsonValue()
json stringification utility
Definition: Query.h:529
vector< CQToken * > m_Items
items to be queried (must be token nodes)
Definition: Query.h:836
virtual bool RootOK()
Is this query an admissible root of a compiled parse tree (default returns !this->Negated()) ...
Definition: Query.h:270
CQAndImplicit(CQuery *dtr1=NULL, CQuery *dtr2=NULL)
Definition: Query.h:279
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:716
single-token query: regex
Definition: Query.h:485
int m_ValueInt
Definition: Query.h:465
virtual ~CQAnd()
Definition: Query.h:268
virtual ~CQNegatable()
Definition: Query.h:180
CQNear(BYTE dist=1, CQuery *dtr1=NULL, CQuery *dtr2=NULL, CQuery *dtr3=NULL)
Definition: Query.h:792
virtual ~CQAndImplicit()
Definition: Query.h:285
CQTokAnchor(const string &indexName=string(""), const string &value=string(""))
Definition: Query.h:468
CQuery * m_dtr3
thrid query argument (NULL for none)
Definition: Query.h:786
virtual ~CQTokPrefix()
Definition: Query.h:603
CQWithor(CQuery *dtr1=NULL, CQuery *dtr2=NULL, BYTE matchId=0)
Definition: Query.h:351
virtual string jsonClass()
Definition: Query.h:195
root-level query options (filters and flags)
Definition: QueryOptions.h:39
virtual string jsonValue()
json stringification utility
Definition: Query.h:592
virtual void Clear(bool deep=true)
clear query contents. if deep is true, propagates operation to daughters
Definition: Query.cpp:83
virtual bool Negated()
override returns current value of m_Negated
Definition: Query.h:186
virtual string jsonClass()
Definition: Query.h:822
binary operation (abstract)
Definition: Query.h:219
virtual string jsonValue()
json stringification utility
Definition: Query.h:570
virtual string toJson()
Definition: Query.h:137
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:648
string SetValueString(void)
wrapper for SetValueString(m_Values)
Definition: Query.h:520
CQSeq(CQToken *item)
constructor for atomic (1-token) sequences
Definition: Query.h:851
CQuery * m_dtr2
second query argument (required)
Definition: Query.h:783
CQTokExact(const string &indexName=string(""), const string &value=string(""))
Definition: Query.h:434
single-token query (abstract)
Definition: Query.h:368
string m_Label
arbitrary name for this query node (e.g. string from which it was parsed)
Definition: Query.h:39
vector< string > m_Expanders
expansion chain labels (empty list uses default expander for current index or identity) ...
Definition: Query.h:537
virtual bool CompileOptions(CQueryCompiler *compiler=NULL)
Definition: Query.cpp:45
virtual ~CQTokThes()
Definition: Query.h:731
virtual string jsonClass()
Definition: Query.h:442
CQueryOptions * m_Options
root-level options (root queries only)
Definition: Query.h:48
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:699
single-token query: prefix-set (right-truncated) query {PREFIX,...}*
Definition: Query.h:642
Definition: QueryCompiler.h:50
CQTokThes(const string &indexName=string("Thes"), const string &value=string(""))
Definition: Query.h:728
CQTokInfix(const string &indexName=string(""), const string &infix=string(""))
Definition: Query.h:630
unsigned char BYTE
Definition: utilit.h:94
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:605
virtual string jsonClass()
Definition: Query.h:272
CQueryCompiler * m_Compiler
associated query compiler (only set on Compile())
Definition: Query.h:42
virtual string jsonClass()
Definition: Query.h:528
'WITHOUT' query
Definition: Query.h:334
CQTokSuffix(const string &indexName=string(""), const string &suffix=string(""))
Definition: Query.h:616
CQTokAny(const string &indexName=string(""), const string &value=string("*"))
Definition: Query.h:449
single-token query: suffix (left-truncated) query *SUFFIX
Definition: Query.h:614
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:733
virtual string jsonValue()
json stringification utility
Definition: Query.h:721
virtual ~CQTokChunk()
Definition: Query.h:747
virtual ~CQAtomic()
Definition: Query.h:207
virtual bool CheckSatisfiable(CQueryCompiler *compiler)
Definition: Query.cpp:31
virtual const char * OperatorKey(void) const
Compilation utility: return query-operator key for use with CConcIndexator::m_OpDefaultIndexNames.
Definition: Query.h:676
single-token query: prefix (right-truncated) query PREFIX*
Definition: Query.h:597
virtual string jsonClass()
Definition: Query.h:767
string m_IndexName
name of index to be queried (default="" (->"Token"))
Definition: Query.h:371
virtual string jsonClass()
Definition: Query.h:426
vector< BYTE > m_DistOps
distance constraint relations
Definition: Query.h:842
CQBinOp(CQuery *dtr1=NULL, CQuery *dtr2=NULL, const string &opName="", bool negated=false)
Definition: Query.h:231
CQTokChunk(const string &indexName=string(""), const string &value=string(""))
Definition: Query.h:744
virtual ~CQTokInfl()
Definition: Query.h:551
'WITH' query
Definition: Query.h:306
Definition: TermExpander.h:106
virtual void Evaluate()
Definition: Query.cpp:96
BYTE m_MatchId
Definition: Query.h:310
single-token query: morph pattern (compiles, but UNTESTED)
Definition: Query.h:684
bool m_bRegexNegated
Definition: Query.h:487
single-token query: infix-set (substring) query *{INFIX,...}*
Definition: Query.h:670
single-token query: disjunction over a finite set of values
Definition: Query.h:502
virtual string jsonData()
Definition: Query.h:139
CQAtomic: atomic (sequencable) queries.
Definition: Query.h:201
virtual ~CQTokSetInfl()
Definition: Query.h:586
virtual string jsonClass()
Definition: Query.h:210
virtual string jsonClass()
Definition: Query.h:569
virtual string jsonClass()
Definition: Query.h:344
single-token query: thesaurus (compiles, but UNTESTED)
Definition: Query.h:726
virtual string jsonClass()
Definition: Query.h:679
virtual void DisownChildren()
Definition: Query.cpp:139
virtual string jsonClass()
Definition: Query.h:703
virtual ~CQTokFile()
Definition: Query.h:762
virtual string jsonClass()
Definition: Query.h:457
virtual ddcObjectList Children() const
Definition: Query.cpp:131
virtual string optionsToJson()
return json format option string
Definition: Query.cpp:160
virtual ~CQWith()
Definition: Query.h:316
const BYTE DefaultMatchId
Definition: Query.cpp:25
CQTokSet(const string &indexName=string(""), const string &rawValue=string(""), const set< string > &values=set< string >())
Definition: Query.h:508
'WITHOR' query
Definition: Query.h:349
string m_OpName
convenience: operation name
Definition: Query.h:228
set< string > m_RawValues
raw input values
Definition: Query.h:579
std::string jsonArray(const Container &values)
Definition: ddcString.h:76
vector< BYTE > m_Dists
distances between items
Definition: Query.h:839
virtual ~CQTokRegex()
Definition: Query.h:492
virtual ~CQTokAnchor()
Definition: Query.h:473
CQTokInfixSet(const string &indexName=string(""), const set< string > &infixes=set< string >())
Definition: Query.h:672
virtual ~CQTokInfix()
Definition: Query.h:633
Truly abstract (index-independent) representation of a parsed query Should eventually replace old ad...
Definition: Query.h:36
virtual string jsonClass()
Definition: Query.h:737
virtual BYTE SetMatchId(BYTE matchId)
Set match-id, returns new value. Default throws an exception.
Definition: Query.cpp:118
virtual BYTE GetMatchId() const
Get current match-id (should return a nontrivial match-id if any was used, else 0; default just retur...
Definition: Query.cpp:112
virtual string jsonClass()
Definition: Query.h:359
virtual ~CQTokSuffix()
Definition: Query.h:619
vector< string > m_Items
morph query items
Definition: Query.h:687
single-token query: lemma-search "%LEMMA" (UNTESTED under LemmaQueryUsesMorphPattern=true (default)) ...
Definition: Query.h:709