Základním typem dotazu je atributový výraz. Ten popisuje jeden uzel ve stromu / záznam v databázi. Atributové výrazy můžete skládat a tím vytvořit stromový výraz popisující vztahy mezi uzly.
Atributový výraz popisuje jeden uzel ve stromu. Má tři možné podoby:
Atributy zapsané uvnitř hranatých závorek: [attribute1="regex1" attribute2="regex2" …]
. Tato forma matchuje uzel, jehož atributy matchují všechny příslušné regexpy. Možné atributy jsou lemma
, techlemma
, pos
(part-of-speech, tedy slovní druh), id
a parent
. id
a parent
očekávají jako parametr číslo uzlu z databáze; [parent=="143581" pos=="N"]
je ekvivalentní (téměř – liší se zvýrazněním výsledku) k [id=="143581"] [pos=="N"]
. Speciální případ je [parent=="-1"]
– matchuje uzly, které nemají otce.
Příklad: [lemma="vana" pos="N"]
matchuje všechna substantiva, která obsahují jako substring „vana“.
Kromě =
existují i další spojky: ==
pro stringové porovnání (stringy jsou stejné, pokud se skládají ze stejných znaků), !=
a !==
pro negaci předchozích dvou.
Prázdným hranatým závorkám vyhovují všechny uzly: []
Regexp zapsaný v uvozovkách: "regex"
. Toto je zkratka za [defattr="regex"]
, kde defattr je atribut vybraný v roletce pod vyhledávacím políčkem.
Text bez ohraničení: string
. Toto je ekvivalentní k [defattr=="string"]
.
Stromový výraz popisuje podstrom. Vznikne zřetězením atributových výrazů: nejjednodušší způsob je napsat několik atributových výrazů za sebe, čímž se ve stromu sestupuje do hloubky. První atributový výraz odpovídá kořeni nalezeného podstromu, druhý jeho synovi, třetí bude syn druhého…
Příklad: balit "ík$" [pos=="N"]
najde strom, jehož kořenem je slovo „balit“, které má za syna slovo končící na „ík“, jehož synem je substantivum.
Pokud chcete k nějakému uzlu specifikovat více synů, dejte je do závorek a oddělte čárkami: aexpr (texpr1, texpr2, …)
. Tím najdete podstrom, jehož kořen matchuje atributový výraz aexpr
a každý stromový výraz texprX
namatchuje nějakého z jeho synů.
Příklad: [] ([lemma="ík$"], [lemma="ice$"])
– najde všechna slova končící na „ík“ a „ice“, která jsou na stejné úrovni.
[] [pos="V"] [pos="N"] [pos="A"] [pos="D"]
[] ([pos="V"], [pos="N"], [pos="A"], [pos="D"])
[][][][][][][]
[] ([], [], [], [], [], [], [], [], [])
Pokud se v dotazu ptáte na více synů na jedné úrovni, budou ve výsledcích tito synové pro přehlednost řazeni ve stejném pořadí, v jakém jste se na ně ptali. To znamená, že výsledek dotazu [] ([pos=="A"], [pos=="V"])
se vypíše tak, že přídavné jméno bude vlevo od slovesa.