Сокращенный синтаксис XPDL

В этом разделе описан сокращенный синтаксис XPDL, который позволяет сделать правила более компактными.

Сокращенная форма записи простого правила

Если набор правил состоит из одного правила без вложенных правил и выводит в результат все, что найдено поисковым запросом, достаточно написать только поисковый запрос. Например, вместо правила на Изображении 1

xpdl simpl rule.rus
Изображение 1. Стандартный вид правила
Фрагмент правила
rule: dict_cities
{
 /* например, Москва, Санкт-Петербург, Лондон */
 query: {dictword(GeoAdministrative, "category = city")}:m
 }

 result: City = $m
 }
}

можно написать только запрос, как на Изображении 2.

xpdl simpl query only.rus
Изображение 2. Сокращенный вид правила
Фрагмент правила
dictword(GeoAdministrative, "category = city")

В этом случае тело правила, а также раздел результата создаются автоматически. Обратите внимание, что в этом режиме невозможно изменить встроенные название правила («xpdl_generated_rule») и название результата («Match»), а также добавить атрибуты результата.

Выражение «$&»

Выражение «$&» можно использовать в разделе результатов для ссылки на запрос, не включенный в именованную группу. Например, правило на Изображении 3 может быть записано так, как показано на Изображении 4 .

xpdl simpl ref amp std.rus
Изображение 3. Стандартный вид правила
Фрагмент правила
rule: dict_cities
{
 /* например, Москва, Санкт-Петербург, Лондон */
 query: {dictword(GeoAdministrative, "category = city")}:m
 }

 result: City = $m
 }
}
xpdl simpl ref amp.rus
Изображение 4. Сокращенный вид правила
Фрагмент правила
rule: dict_cities
{
 /* например, Москва, Санкт-Петербург, Лондон */
 query: {dictword(GeoAdministrative, "category = city")}:m
 }

 result: City = $&
 }
}

Результат по умолчанию

Раздел результатов в верхней части файла автоматически добавляется в правила, в которых нет раздела результатов. Это помогает избежать повторяющихся фрагментов, в случае если несколько правил выводят один и тот же результат. Например, правила на Изображении 5 могут быть записаны, как показано на Изображении 6 .

xpdl simpl def results2.rus
Изображение 5. Стандартный вид правила
Фрагмент правила
rule: dict_cities
 {
 /* например, Москва, Санкт-Петербург, Лондон */
 query: {dictword(GeoAdministrative, "category = city")}:m

 result: City = $m
 }

 rule: context_cities
 {
 /* населенные пункты, извлекаемые по контексту (отсутствующие_в словаре) */
 query: {phrase(0, form(город), case(title))}:m

 result: City = $m
 }
xpdl simpl def results.rus
Изображение 6. Сокращенный вид правила
Фрагмент правила
rule: dict_cities
 {
 /* например, Москва, Санкт-Петербург, Лондон */
 query: {dictword(GeoAdministrative, "category = city")}:m
 }

 rule: context_cities
 {
 /* населенные пункты, извлекаемые по контексту (отсутствующие_в словаре) */
 query: {phrase(0, form(город), case(title))}:m
 }