ГОСТ Р 59791—2021
arc(?ar?) -> ?х?, ?g?;
arc = [comment] ?cm?, (reference ?r? |CGname ?n? | concept ?c?);
if (?r?~= ) ?x? = ?ar; ?g? = ;
elif (?n?~= ) ?x? = ?cm?,?n?; ?g? =?n?,
else ?x? = ?cm?, frst(concept(?c?));
?g? = third(concept(?c?));
end; end;
Если
ar
является ссылкой, x должен соответствовать значению
ar,
а
д
— иметь пустое значение. Если
аг
со
держит определяющую метку, х должен быть результатом замены маркера * в
аг
на ?,
ад
— концептом [*л]. Если
аг
содержит концепт с, х должен быть результатом замены концепта с в
аг
на ссылку
г, ад
— third(concept(c)).
Комментарий: Например, если дуга
аг
— это [Integer], значением concept([lnteger]) будет имя CG, например
д00023, а дуга ([Integer]) будет парой, состоящей из ссылки ?д00023 и концептуального графа [*д00023] (Integer
?д00023).
Б.3.4 arcSequence
Описание; строка
as,
которая должна содержать последовательность s из нуля, одной или нескольких дуг, за
которой следует необязательный маркер последовательности
sqn.
Перевод: тройная переменная (
rs,g,sqn
), состоящая из последовательности ссылок rs, концептуального гра
фа
д
и маркера последовательности
sqn.
arcSequence(?as?) -> ?rs?, ?g?, ?sqn?;
arcSequence = {arc} ?s?, [[comment], “7”, seqmark] ?sqn?;
?rs? = map(frst,map(arc,?s?));
?g? = map(second,map(arc,?s?));
end;
Комментарий: функция map(arc,?s?) применяет arc к каждой дуге s, чтобы создать последовательность пар,
состоящую из ссылки и концепта. Затем map(frst,map(arc,?s?)) извлекает последовательность ссылок из первого
элемента каждой пары. Наконец, map(second,map(arc,?s?)) извлекает последовательность концептов из второго
элемента каждой пары. Возможность наличия маркера последовательности в последовательности дуг подразуме
вает, что концептуальное отношение может иметь разное количество дуг. Действующий субъект может иметь раз ное
количество входных дуг, но количество выходных дуг должно быть фиксированным. Следовательно, выходные дуги
не должны иметь маркера последовательности.
Б.3.5 Логическое значение
Определение: строка Ь, которая должна содержать контекст Ьс, который, в свою очередь, не должен непо
средственно содержать ссылку или определяющую метку. Контекст
Ьс
должен либо иметь префикс «~» и не иметь
метку типа, либо не иметь префикса и иметь одну из следующих констант в качестве метки типа: Either, Equiv,
Equivalence, If, Iff, Then.
Перевод: отрицание
ng,
которое должно иметь значение negation(b), eitherOr(b), ifThen(b), or equiv(b).
boolean = negation | eitherOr | ifThen | equiv;
negation(?b?) -> ?ng?;
negation = “-[“, [comment] ?cm?, CG 7x7, [endComment] ?ecm?, “]”;
?ng? = “~[“, ?cm?, CG(?x7), ?ecm?, “]”;
end;
ifThen(?b?) -> ?ng?;
ifThen = “[“, [comment] 7cm17, “If, [“:”], CG ?ante?,
“[“, [comment] 7cm27, “Then”, [“:”], CG ?conse?,
[endComment] 7ecm17, «]», [endComment] 7ecm27, «]»;
?ng? = «-[«, 7cm17, CG(?ante7),
«-[«, 7cm27, CG(?conse7), 7ecm17, «]», 7ecm27, «]»;
end;
equiv(?b?) -> ?ng?;
equiv = “[“, [comment] 7cm17, (“Equiv” | “Equivalence”), [“:”],
“[“, [comment] 7cm27, “Iff’, [“:”], CG 7g17,
[endComment] 7ecm2? «]»,
“[“, [comment] 7cm37, “Iff, [“:”], CG 7g27,
[endComment] 7ecm3? «]», [endComment] ?ecm1? «]»;
?ng? = «[«, 7cm17, «-[«, 7cm27, CG(?g17),
«-[«, CG(?g27), «]», 7ecm27, «]», 7cm27,
«-[«, 7cm37, CG(?g27),
«-[«, CG(?g17), «]», 7ecm37, «]», 7ecm17, «]»;
end;
eitherOr(?b?) -> ?ng?;
eitherOr = “[“, [comment] ?cm?, “Either”, [“:”],
44