# 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 => '[mate/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}))'
      }
    }
  }
};
