# To mark queries as 'not available in the specific corpus',
# prepend the string '** ' to the query.
{
  Q => {
    -dereko => {
      poliqarp => {
        simple => 'Baum',
        simpleseq => 'der Baum',
        simpleci => 'laufen/i',
        complexpos => '[pos=ADJA]',
        re => '"l(au|ie)fen"',
        rex => '"l(au|ie)fen"/x',
        recontext => '".*?l(au|ie)fen.*?"',
        simplex => 'trenn/xi',
        rexi => '"l(au|ie)fen"/xi',
        complexorth => '[orth=Baum]',
        complexre => '[orth="l(au|ie)fen"/xi]',
        complexlemma => '[base=Baum]',
        complexplural => '[marmot/m=number:pl]',
        complexverbatim => '[orth=\'http://www.ids-mannheim.de/cosmas2/projekt/\']',
        neg1 => '[pos!=ADJA]',
        neg2 => '[!pos=ADJA]',
        span => '<corenlp/c=NP>',
        and => '[orth=laufe/i & base=Lauf]',
        andneg1 => '[orth=laufe/i & base!=Lauf]',
        andneg2 => '[orth=laufe/i & !base=Lauf]',
        or => '[base=laufen | base=gehen]',
        group => '[(base=laufen | base=gehen) & tt/pos=VVFIN]',
        seq => 'der alte Mann',
        seqcomplex => '[orth=der][orth=alte][orth=Mann]',
        seqcomplexempty => '[orth=der][][orth=Mann]',
        seqspan => '<base/s=s>[orth=Der]',
        seqor => 'der [orth=alte | orth=junge] Mann',
        seqorgroup1 => '(dem jungen | der alte) Mann',
        seqorgroup2 => 'der (junge | alte) Mann',
        repmanual => 'der der der',
        repsimple => 'der{3}',
        repcomplex => '[orth=der]{3}',
        repre => '"la.*?"/i{3}',
        repanno => '[base=ein][tt/p=ADJA]{3,4}[corenlp/p=NN]',
        seqopt1 => '[base=die][tt/pos=ADJA]?[base=Baum]',
        seqopt2 => '[base=die][tt/pos=ADJA]{,1}[base=Baum]',
        seqstar => '[base=die][tt/pos=ADJA]*[base=Baum]',
        seqplus1 => '[base=die][tt/pos=ADJA]+[base=Baum]',
        seqplus2 => '[base=die][tt/pos=ADJA]{1,}[base=Baum]',
        seqplus3 => '[base=die][tt/pos=ADJA][tt/pos=ADJA]*[base=Baum]',
        seqdistance1 => '[base=die][][base=Baum]',
        seqdistance2 => '[base=die][]{2}[base=Baum]',
        seqdistance3 => '[base=die][]{2,}[base=Baum]',
        seqdistance4 => '[base=die][]{,3}[base=Baum]',
        seqdistanceopt => '[base=die][]?[base=Baum]',
        seqdistancestar => '[base=die][]*[base=Baum]',
        seqdistanceplus => '[base=die][]+[base=Baum]',
        poscontains => 'contains(<base/s=s>, [tt/p=KOUS])',
        posstartswith => 'startsWith(<base/s=s>, [tt/p=KOUS])',
        posendswith => 'endsWith(<base/s=s>, [opennlp/p=NN])',
        posmatches => 'matches(<base/s=s>,[tt/p=CARD][tt/p="N.*"])',
        posoverlaps => 'overlaps([][tt/p=ADJA],{1:[tt/p=ADJA]}[])',
        classes => 'der {1:{2:[]} Mann}',
        focus => 'focus(der {Baum})',
        focusempty => 'focus(der {[]} Mann)',
        focusextension => 'focus(der alte und {[]})',
        focusrelevance => 'focus(contains(er []{,10} sagte, {Baum}))'
      },
      cqp => {
        simplesquote => "'Baum'",
        simpledquote => '"Baum"',
        re => '"(Tannen)?baum"',
        simpleseq1 => '"der" "Baum"',
        simpleseq2 => "'der' 'Baum'",
        simplescflag => '"laufen"%c',
        simplesidia1 => '"Fraulein"%d',
        simplesegidia2 => '"Fraulein"%cd',
        regexqu1 => '"It\'s"',
        regexequ1 => '\'It\'\'s\'',
        compsl1 => '[orth="Baum"]',
        compsl2 => '"Baum"',
        compsse => '[orth="l(au|ie)fen"%c]',
        compsbase => '[base="Baum"]',
        compspos => '[pos="ADJA"]',
        compstoken1 => '[marmot/m="number":"pl"]',
        compstoken2 => '[marmot/m=\'tense\':\'pres\']',
        compstokenverb => '[orth=\'https://de.wikipedia.org\'%l]',
        neg1 =>  '[pos!="ADJA"] "Haare"',
        neg2 => '[!pos="ADJA"] "Haare"',
        empseq => '[]',
        spansegm => '<corenlp/c=NP>',
        parseg => '[orth="laufe"%c & base="Lauf"]',
        parsegamp1 => '[orth="laufe"%c & base!="Lauf"]',
        parsegamp2 => '[base="laufen" | base="gehen"]',
        parsegalt => '[base="laufen" | base="gehen"]',
        parsegcb => '[(base="laufen" | base="gehen") & tt/pos="VVFIN"]',
        parsegrb => '[(base="laufen" | base="gehen") & (tt/pos="VVFIN")]',
        parsegneg1 => '[(!(base="laufen" | base="gehen")) & (tt/pos="VVFIN")]',
        parsegneg2 => '[!(base="laufen") & !(base="gehen") & (tt/pos="VVFIN")]',
        parsegneg3 => '[!base="laufen" & !base="gehen" & tt/pos="VVFIN"]',
        parsegneg4 => '[base!="laufen" & base!="gehen" & tt/pos="VVFIN"]',
        syntop1 => '"der" "alte" "Mann"',
        syntop2 => '[orth="der"][orth="alte"][orth="Mann"]',
        syntop3 =>  '[orth="der"][][orth="Mann"]',
        posfirst1 => '<base/s=s>[orth="Der"]',
        posfirst2 => '<s>[orth="Der"]',
        posaend1 => '</base/s=s>[orth="Der"]',
        posaend2 => '</s>[orth="Der"]',
        posend1 => '[orth="Mann"]</base/s=s>',
        posend2 => '[orth="Mann"]</s>',
        posbbeg1 => '[orth="Mann"]<base/s=s>',
        posbbeg2 => '[orth="Mann"]<s>',
        posbbeg3 => '"für" []{20,25} "uns"</s>'
      }
    }
  }
};
