ГОСТ Р 59791—2021
## Тип данных xsd: string используется, если лексическое значение относится к
## лексическому пространству xsd: string.
## В противном случае используется тип данных rdf: XMLLiteral.
## Лексическое значение — это содержимое
## дочернего элемента символа (если таковой присутствует); в противном случае это содержимое
## элемента cl: Marker.
Marker = element Marker { Marker.type }
Marker.type |= cICommon, symbol
Marker.type |= text & anyElement*
## Шаблоны cICommon и cICommentable:
## Prefixes, Comments, Keys
cICommentable = cICommon, label?, Comment*
cICommon = base.attrib?, Prefix*
## Элемент cl: Prefix является синтаксическим механизмом для
## сокращения IRI. Он не соответствует явным
## частям абстрактного синтаксиса.
## Перед сопоставлением с абстрактным синтаксисом все CURIE,
## которые выступают в качестве значений атрибутов XCL,
## должны быть расширены до IRI в соответствии с определениями префиксов.
## Определения пространства имен XML не следует использовать для определения
## префиксов CURIE.
## Определения префиксов используются внутри родительского элемента
## и его дочерних элементов.
## При наличии противоречивых определений префиксов:
## определения префиксов, которые являются дочерними по отношению к элементу Е, имеют приоритет
## над теми, что являются дочерними по отношению к предшественникам элемента Е;
## определения префиксов имеют приоритет перед предшествующими аналогами.
Prefix = element Prefix { Prefix.type }
Prefix.type = pre.attrib, iri.attrib
pre.attrib = attribute pre { pre.datatype }
pre.datatype = xsd: NCName?
## Элемент cl: Comment представляет собой комментарий абстрактного синтаксиса,
## Лексическое значение элемента cl: Comment является его содержимым.
## Атрибуты могут использоваться для указания типа данных, который будет применен при сопоставлении
## лексического значения с пространством значений типа данных.
## Благодаря этому комментарий абстрактного синтаксиса рассматривается как «фрагмент данных».
Comment =
element Comment {
attribute * { text }*,
(text & anyElement*)
}
label = key.attrib
iri.attrib = attribute iri { absIRI.datatype }
cri.attrib = attribute cri { curieOrAbsIRI.datatype } key.attrib
57