ГОСТ Р 59791—2021
Комментарий: чтобы проиллюстрировать перевод, высказывание
«А
pet cat Yojo is on a mat» («Домашний кот
Йоджо лежит на лежанке») можно представить в расширенном формате CGIF с двумя концептуальными узлами в
последовательности дуг концептуального отношения:
(On [@*х (Pet ?х) (Cat ?х): Yojo] [Mat])
Для создания эквивалентного основного формата CGIF из последовательности дуг удаляются концепты.
Вместо них используются ссылки, связывающие их с концептами, которые расширены указанными выше правила ми
перезаписи. Ниже приводится результат в основном формате CGIF:
[: Yojo] (Pet Yojo) (Cat Yojo)
[*g00238] (Mat ?g00238) (On Yojo ?g00238)
Имя CG Yojo — это ссылка на первый концепт, а имя CG д00238, созданное с помощью gensymQ, — на ле
жанку. В п. Б.3.9 приведены обсуждение выражения типа и его перевод. Перевод
cg2cl
переведет основной формат
CGIF в абстрактный синтаксис, который будет выражен следующим CLIF:
(exists (g00238) (and (= Yojo Yojo) (Pet Yojo) (Cat Yojo)
(Mat ?g00238) (On Yojo ?g00238)))
Концепт кореферентности с одной ссылкой, например [: Yojo], не влияет на истинность или ложность вы
сказывания. Если он не требуется в качестве контейнера для комментариев, его может удалить оптимизирующий
компилятор.
Б.3.7 Концептуальный граф (CG)
Определение: строка
сд,
состоящая из неупорядоченной последовательности подстрок, представляющих
концепты, концептуальные отношения, логические значения и комментарии.
Перевод: концептуальный граф
д.
CG(?cg?) -> ?g?;
CG = {concept | conceptualRelation | boolean | comment};
if (frst(sortCG(?cg?)~= )
?g? =“[“, frst(sortCG(?cg?)),
“[“, second(sortCG(?cg?), “]", “]”;
else ?g? = second(sortCG(?cg?));
end; end;
sortCG(cg) следует быть парой (
д1, g2),
где
д1
— концептуальный граф, полученный из всех связанных кван
тором общности концептов в
сд,
а
д2
— концептуальный граф, полученный из всех других концептов, концептуаль
ных отношений и комментариев в
сд.
sortCG(?cg?) -> 7g1?,?g2?;
sortCG = ( (concept ?c? | conceptualRelation ?x?
| boolean ?x? | comment ?x?), sortCG ?rem?
I );
if (?c?= ) ?cg2? = CG(?x?));
elif (second(concept(?c?)) = “@every”)
?cg1? = third(concept(?c?));
else ?cg2? = third(concept(?c?));
end;
?g1? = ?cg1?, frst(sortCG(?rem?)); ?g2? = ?cg2, second(sortCG(?rem?));
end;
Комментарий: если во входной строке отсутствуют концепты, содержащие кванторы общности, в результате
должна создаваться одна строка в основном формате CGIF, объединяющая результаты перевода всех узлов не
зависимо друг от друга. Но если входная строка содержит какие-либо концепты существования, выходная строка
должна включать в себя два отрицания. Внешний контекст должен содержать переводы всех концептов существо
вания, а внутренний — всех других узлов во входных данных.
Б.3.8 Концептуальное отношение
Определение: строка
сг,
представляющая собой обычное концептуальное отношение или действующий
субъект.
Перевод: концептуальный граф
д,
который должен быть либо ordinaryRelation(cr), либо действующим субъ
ектом (сг).
conceptualRelation = ordinaryRelation | actor;
ordinaryRelation(?cr?) -> ?g?;
ordinaryRelation = “(“, [comment] ?cm?, ([“#”, “?”], CGname) ?r?,
arcSequence ?s?, [endComment] ?ecm?, “)”;
?g? = second(arcSequence(?s?)),
“(“, ?cm?, ?r?, frst(arcSequence(?s?)),
third(arcSequence(?s?)), ?ecm?, “)”;
end;
46