Сокращенный синтаксис 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. Сокращенный вид правила
Фрагмент правила
result: City = $m

rule: dict_cities
{
    /* например, Москва, Санкт-Петербург, Лондон */
    query: {dictword(GeoAdministrative, "category = city")}:m
}

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