ГОСТ Р ИСО/МЭК 13250-6-2016

ГОСТР

исо/мэк

13250-6—

2016

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ТЕХНИЧЕСКОМУ РЕГУЛИРОВАНИЮ И МЕТРОЛОГИИ

НАЦИОНАЛЬНЫЙ

СТАНДАРТ

РОССИЙСКОЙ

ФЕДЕРАЦИИ

Содержание
  1. Информационная технология ТЕМАТИЧЕСКИЕ КАРТЫ Часть 6 Компактный синтаксис (ISO/IEC 13250-6:2010, ЮТ) Издание официальное Москва Стандартинформ 2016 Предисловие 1    ПОДГОТОВЛЕН Федеральным государственным унитарным предприятием Государственный научно-исследовательский и конструкторско-технологический институт «ТЕСТ» (ФГУП ГосНИИ «ТЕСТ»), Обществом с ограниченной ответственностью «Информационно-аналитический центр» (ООО ИАВЦ) на основе собственного аутентичного перевода на русский язык англоязычной версии международного стандарта, указанного в пункте 4 2    ВНЕСЕН Техническим комитетом по стандартизации ТК 22 «Информационные технологии» 3    УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 1 ноября 2016 г. № 1546-ст 4    Настоящий стандарт идентичен международному стандарту ИСО/МЭК 13250-6:2010 «Информационная технология. Тематические карты. Часть 6. Компактный синтаксис» (ISO/IEC 13250-6:2010 «Information technology — Topic Maps — Part 6: Compact syntax», IDT). При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов соответствующие им национальные стандарты Российской Федерации, сведения о которых приведены в дополнительном приложении ДА 5    ВВЕДЕН ВПЕРВЫЕ Правипа применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. № 162—ФЗ «О стандартизации в Российской Федерации». Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе «Национальные стандарты», а официальный текст изменений и поправок — в ежемесячном информационном указателе «Национальные стандарты». В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому ругулированию и метрологии в сети Интернет (www.gost.ru) ©Стандартинформ. 2016 Настоящий стандарт не может быть полностью или частично воспроизведен, тиражирован и распространен в качестве официального издания без разрешения Федерального агентства по техническому регулированию и метрологии # Both of the above have the same effect as the following mccartney isa person; birthday: 1942-06-12. born-in(person: mccartney, birthplace: Liverpool) Если named-wildcard используется внутри тела шаблона, он доступен только внутри шаблона. Каждый раз. когда шаблон вызывается, named-wildcard вызывает создание темы. Это должно быть обработано по-другому. Наименования шаблонов и identifiers темы имеют разные пространства имен. Если существует шаблон с именем А, то все еще возможно задекларировать тему с идентификатором А. 3.15 Вызов шаблона Для вызова шаблона необходимо выполнить следующие действия: —    если в вызов шаблона происходит внутри topic-tail (3.9), следует вставить topic-identity темы, которая была использована в качестве первого аргумента входных данных; —    осуществить поиск определения шаблона с template-name и количеством предоставленных arguments. Если такой шаблон не определен, то это является ошибкой; —    привязать каждую переменную шаблона к аргументу согласно позиции аргумента (первая переменная связывается с первым аргументом и т. д.); —    добавить каждое заявление тела шаблона к тематической карте так. чтобы любая переменная была заменена аргументом привязки. Примечание — Внутри шаблонов можно сослаться на другие шаблоны, которые еще не были определены (ссылка вперед). Если шаблон вызывается, то шаблоны, на которые он ссылается, должны быть определены. Пример 1 U Template invocation within a topic declaration mccartney plays-for(The_Beatles, piano); has-shoosize(42). U Template invocation outsido of topic declarations plays-for(john, The_Boatlos, guitar) has-shoesizo(john, 45) Пример 2 — Смысл iri-ref зависит от контекста def wiki-entry(Siri. Sname) Siri    tt    Used    as    subject identifier Sname; description: Siri. It Used as occurrence value end wiki-entry(<http://en.wikipedia.org/wiki/John_Lennon>, «John Lennon») ft The following template invocation fails, because a subject locator is U provided which cannot be used as value of an occurrence. wiki-entry(=<http j/en. wikipedia.org/wiki/Paul_McCartney>, «Sir Paul McCartney») It -> Error! Пример 3 — Шаблоны могут использоваться для того, чтобы «украсить» другие шаблоны dof is-boatlo(Sboatlo) is-mombor-of(Sboatlo. Tho-Boatlos) ond dof is-mombor-of(Smembor, Sgroup) mombor-offmombor: Smombor, group: Sgroup) end 8 ГОСТ РИСО/МЭК 13250-6—2016 is-member-of(sting, The-Police) U Invoking the ‘raw’is-member-of template is-beatle(john). 3.16 Директивы 3.16.1    Префикс директива Префикс директива используется для ассоциации IRI с идентификатором. Синтаксис выглядит следующим образом. Во время десериализации префикс компонент связывает identifier с IRI. Если identifier уже связан, то это является ошибкой, если только identifier не привязан к одному и тому же reference. Если сцепка iri и local части QName создает недопустимый IRI, то это является ошибкой. %prefix wiki http://en.wikipedia.org/wiki/ wiki:John_Lennon    # QName used as a subject identifier —    «John Lennon». 3.16.2    Директива включения Директива include используется для того, чтобы включить другой СТМ источник в обрабатываемый СТМ экземпляр. В качестве ссылки на другой источник используется IRI. IRI внешнего ресурса информационного, обозначенный с помощью in-ref. разрешается, и ресурс анализируется СТМ процессором по правилам, определенным настоящим стандартом, принимая предоставленный iri — ref в виде документа IRI в качестве входных данных. Далее происходит инициализация wildcard-iri СТМ процессора с документом IRI этого СТМ источника и счетчик подстановочных знаков устанавливается в начальное с текущим значением счетчика подстановочных знаков. Если информационный ресурс не является допустимым СТМ ресурсом, то это является ошибкой. Новый экземпляр модели данных (В) затем объединяется в текущий (А) путем: —    итерации всех тематических элементов в свойстве В (topics] и выявления тех тем. которые содержат локаторы в их [item identifiers), значение строки которых начинается с документа IRI В. Для каждого из этих идентификаторов элементов создается строка S путем вычитания значения строки документа IRI В из значения строки идентификатора элемента. Строка S разрешается относительно документа IRI А. Полученная строка добавляется к свойству (item identifiers] темы; —    добавления всех тематических элементов свойства В [topics] к свойству A (topics); —    добавления всех элементов ассоциаций свойства В [associations] к свойству A [associations]. Примечание — Добавление тем и ассоциаций кА может привести к дальнейшим слияниям, какописано в ИСО/М ЭК 13250-2. Текущее значение счетчика подстановочных знаков устанавливается равным значению счетчика подстановочных знаков процессора, который был ответственен за создание экземпляра модели данных (В). Все шаблоны импортируются и могут быть использованы текущим СТМ символьным потоком так. как они были объявлены при их включении. 3.16.3    Директива mergemap Директива mergemap используется для того, чтобы объединить внешнюю тематическую карту в тематическую карту, произведенную путем десериализации СТМ тематической карты. Синтаксис директивы mergemap выглядит следующим образом: Настоящий стандарт предписывает, что каждый соответствующий требованиям СТМ процессор должен поддерживать следующие синтаксисы. http://psi.topicmaps.org/iso13250/ctm Идентификатор для Compact Topic Maps Syntax (СТМ). описанный в настоящем стандарте. http://psi.topicmaps.org/iso13250/xtm Идентификатор для XML Topic Maps Syntax (ХТМ), описанный в ИСО/МЭК13250-3. 9 Помимо нормативного синтаксиса, упомянутого выше. СТМ процессор может поддерживать и другие синтаксисы. Если notation не поддерживается СТМ процессором, то это является ошибкой. Во время десериализации компонент mergemap вызывает немедленную десериализацию ссылочной тематической карты в экземпляр модели данных. Новый экземпляр модели данных (В) затем объединяется в текущий (А) путем: —    добавления всех тематических элементов свойства В [topics] к свойству A [topics]; —    добавления всех элементов ассоциаций свойства В [associations] к свойству A [associations). Примечание — Добавление тем и ассоциаций к А можег привести к дальнейшим слияниям, как описано в ИСО/МЭК 13250-2. 10 ГОСТ РИСО/МЭК 13250-6—2016 Приложение А (справочное) Целое число СТМ В настоящем приложении приведено описание XML схемы для ctirvinteger (http://psi.top»cmaps.orgfeo13250/ctm-integer). «simpleType» <union> <simpleType> «restriction base=’nonNegativelnteger’/> </simpleType> <simpleType> «restriction base-string’» «enumeration value=‘*7> «/restriction» «/simpleType» «/union» «/simpleType» 11 ГОСТ Р ИСО/МЭК 13250-6—2016 Приложение В (справочное) Синтаксис Синтаксис ядра и общий синтаксиса (commodity syntax) будет вставлен через XSLT. 12 ГОСТ РИСО/МЭК 13250-е—2016 Приложонио ДА (справочное) Сведения о соответствии ссылочных международных стандартов национальным стандартам Российской Федерации Таблица ДА.1 Обозначение ссылочного международного стандарта Степень соответствия Обозначение и наименование соответствующего национального стандарта ISO/IEC 13250-2:2006 ЮТ ГОСТ Р ИСО/МЭК 13250-2—2012 «Информационная технология. Тематические карты. Часть 2. Модель данных» Примечание — В настоящей таблице использовано следующее условное обозначение степени соответствия стандартов; — ЮТ — идентичные стандарты. 13 ГОСТ РИСО/МЭК 13250-6—2016 Содержание 1    Область применения……………………………………………1 2    Нормативные ссылки…………………………………………..1 3    Описание синтаксиса…………………………………………..1 3.1    О синтаксисе……………………………………………..1 3.2    Десериализация……………………………………………2 3.3    Распространенные синтаксические конструкции………………………….2 3.4    Литералы……………………………………………….4 3.5    Тематическая карта………………………………………….5 3.6    Директива кодирования……………………………………….5 3.7    Директива версии…………………………………………..5 3.8    Темы………………………………………………….5 3.9    Тематический хвост………………………………………….6 3.10    Возникновения……………………………………………6 3.11    Наименования……………………………………………6 3.12    Варианты………………………………………………7 3.13    Ассоциации……………………………………………..7 3.14    Шаблоны……………………………………………….7 3.15    Вызов шаблона……………………………………………8 3.16    Директивы………………………………………………9 Приложение А (справочное)    Целое число СТМ……………………………..11 Приложение В (справочное)    Синтаксис…………………………………12 Приложение ДА (справочное) Сведения о соответствии ссылочных международных стандартов национальным стандартам Российской Федерации…………………13 Библиография………………………………………………..14 III НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ Информационная технология ТЕМАТИЧЕСКИЕ КАРТЫ Часть 6 Компактный синтаксис Information technology. Topic maps. Part 6. Compact syntax Дата введения — 2017—09—01 1 Область применения Настоящий стандарт определяет текстовое отображение для представления экземпляров модели данных, определенной в ИСО/МЭК 13250-2. Настоящий стандарт также определяет сопоставление такого отображения с моделью данных. Синтаксис описан с помощью грамматики расширенной Бэкус-Науровой формы (РБНФ). 2    Нормативные ссылки В настоящем стандарте использованы нормативные ссылки на следующие стандарты: Официальные    названия    для наборов символов.    14    мая 2007 года,    доступно    на <http://www.iana.org/assignments/character-sets> (IANA-CHARSETS. CHARACTER SETS, Internet Assigned Numbers Authonty. 14 May 2007. available at <http://www.iana.org/assignments/character-sets>) ИСО/МЭК 13250-2:2012 Информационные технологии. Тематические карты. Часть2. Модель данных (ISO/IEC 13250-2:2006. Information technology — Topic Maps — Part 2: Data model) XSDT Схема XML Часть 2. Типы данных, второе издание, рекомендация W3C. 28 октября 2004 года, доступно по адресу: <http://www.w3.org/TR/xmlschema-2/> (XSDT. XML Schema Part 2: Datatypes Second    Edition.    W3C Recommendation.    28    October 2004,    available    at <http://www.w3.org/TR/xmlschema-2/>) IETF RFC 3986 Универсальный идентификатор ресурса (URI): общий синтаксис, спецификация интернет стандарты. январь 2005, доступно по адресу <http://www.ietf.org/rfc/rfc3986.txt> (IETF RFC 3986, Uniform Resource Identifier (URI): Genenc Syntax. Internet Standards Track Specification, January 2005. available at <http://www.ietf.org/rfc/rfc3986.txt>) IETF RFC 3987 Интернационализированные идентификаторы ресурсов (IRI), спецификация интернет стандарты, ноябрь 2005. доступно по адресу:    <http://www.ietf.org/rfc/rfc3987.txt> (IETF RFC 3987, Internationalized Resource Identifiers (IRIs), Internet Standards Track Specification, January 2005. available at <http://www.ietf.org/rfc/rfc3987.txt>) 3    Описание синтаксиса 3.1 О синтаксисе Аббревиатуру СТМ (Compact Topic Maps) часто используют для обозначения синтаксиса, определенного в настоящем стандарте. Данный раздел определяет СТМ синтаксис с помощью грамматики EBNF. основанной на отображении. описанном в XML 1.0. Он использует текстовое описание для сопоставления СТМ с ИСО/МЭК 13250-2. Полностью EBNF содержится в приложении А. Издание официальное 3.2    Десериализация Данный подраздел определяет, как экземпляры СТМ синтаксиса десериализуются в экземпляры модели данных, определенной в ИСО/МЭК 13250-2. Сериализация определена неявно, но имплементации должны производить СТМ сериализации, которые при десериализации в новый экземпляр модели данных будут производить такой экземпляр модели данных, который имеет канонизацию, аналогичную исходному экземпляру модели данных, согласно ИСО/МЭК 13250-4. Входными данными для процесса десериализации являются: —    опциональное наименование набора символов в соответствии с IANA-CHARSETS, что задает кодировку СТМ экземпляра; —    байтовый поток, который преобразуется в символьный поток с помощью следующих шагов: —    если опциональное входное название набора символов предоставлено, то кодировка устанавливается в указанное значение; —    если поток байтов начинается с EF ВВ BF (UTF-8 метка порядка байтов), то кодировка устанавливается как«ШТ-8»; —    если кодировка уже установлена в другое значение из-за опционального названия набор символов. то это является ошибкой; —    если последующие байты в потоке содержат последовательность 25 65 6Е 63 6F 64 69 6Е 67 (процентная кодировка ASCII), все последующие байты 09 или 20 пропускаются до первых считанных 22 байт. Следующая байтовая последовательность до следующего 22 байта (исключительно) интерпретируется как наименование набора символов в соответствии с IANA-CHARSETS; —    если кодировка уже установлена в другое значение, то это является ошибкой; —    если предыдущие действия не дают кодировку, она должна быть установлена как «UTF-8»; —    поток байтов преобразуется в зависимости от кодировки в Unicode так. что опциональная байтовая последовательность EF ВВ BF удаляется из начала байтового потока. Такой символьный поток обрабатывается согласно грамматике, указанной в настоящем стандарте: —    абсолютный IRI. Это ИРИ. из которого считывается поток байтов, известный как документ IRI. Такой IRI должен быть всегда предоставлен, так как это необходимо для того, чтобы назначить идентификаторы элементов тематических элементов, созданных во время десериализации. Если СТМ экземпляр не был считан из какого-либо конкретного IRI, приложение в ответе за предоставление подходящего IRI; —    абсолютный IRI, который будет использоваться для разрешения подстановочных знаков против 3.3.8; и который называется «wildcard-in». Если wildcard-iri не предоставлен, его значение берется из документа IRI; —    неотрицательное целое число, называемое «wildcard-counter». Если wildcard-counter не предоставлен. то он устанавливается в начальное значение, равное 0. Десериализация выполняется путем обработки каждого компонента СТМ источника в порядке документов. Компоненты определяются в виде текста, соответствующего синтаксической переменной EBNF. Для каждого встречающегося компонента выполняются операции, указанные в настоящем подразделе для соответствующей синтаксической переменной. Всякий раз. когда создается новый информационный элемент, все его свойства, которые имеют установленные значения, устанавливаются в начальное значение в виде пустого множества; все другие свойства инициализируются в NULL. 3.3    Распространенные синтаксические конструкции 3.3.1    Пробел Пробел (Whitespace) состоит из одного или более пробельных символов (#х20), разрывов строки, переводов строки или табуляции. Пробельный символ разрешен везде для разделения токенов (терминалов и не терминалов). 3.3.2    Комментарии Комментарии являются фрагментами потока символов, которые игнорируются СТМ процессором. Комментарии разрешены там, где разрешены пробельные символы. Многострочные комментарии разграничиваются с помощью #( и )# и могут быть вложенными. Однострочные комментарии начинаются со знака решетки (#) и продолжаются до конца текущей строки либо до конца символьного потока, в зависимости от того, что наступит раньше. 2 ГОСТ РИСО/МЭК 13250-6—2016 3.3.3    Создание IRI из строк Разделители < и > удаляются из iri-delimited; результирующая строка может представлять абсолютный или относительный IRI, который должен удовлетворять требованиям IETF RFC 3986 и IETF RFC 3987. Для создания IRI из строки следует заменить управляющую последовательность %НН на соответствующие символы и раскодировать получившуюся последовательность символов из UTF-8 в последовательность абстрактных символов Unicode. Получившаяся строка превращается в абсолютный IRI с помощью применения документа IRI. 3.3.4    Создание IRI из QName QName используются для сокращения IRI. Синтаксис QName следующий: QName вызывает создание локатора. Во время десериализации IRI, к которому привязан префикс, сцепляется с локальной частью. В результате такого процесса появляется абсолютный IRI. Если префикс не был привязан к IRI так. как указано в 3.16.1. то это является ошибкой. %prefix isbn urn:isbn: isbn:3-7026-4850-X isa book; — «Daskleme Ich bin Ich». 3.3.5    Ссылки IRI IRI ссылками являются либо QName либо IRI. Они взаимозаменяемы: везде, где IRI могут быть использованы. QName могут быть также использованы (при условии, что определен префикс). 3.3.6    Тематический идентификатор На темы ссылается идентификатор элемента, идентификатор субъекта или локатор субъекта. Во время десериализации для каждого topic-identity создается один тематический элемент. Если topic-identity является identifier, локатор создается путем сцепки документа IRI. символа # и значения identifier. Локатор добавляется к свойству (item identifiers! тематического элемента. Если topic-identity определяется идентификатором субъекта, локатор создается и добавляется к свойству (subject identifiers] тематического элемента. Если topic-identity определяется локатором субъекта, локатор создается (ведущий = не часть локатора) и добавляется к свойству (subject locators) тематического элемента. Если topic-identity определяется идентификатором элемента, локатор создается (ведущий А не часть локатора) и добавляется к свойству (item identifiers] тематического элемента. Если topic-identity определяется по wildcard, локатор, созданный в соответствии с процедурой, описанной в 3.3.8. добавляется к свойству (item identifiers] тематического элемента. Если тематический элемент, созданный через десериализацию topic-identity, равен другому тематическому элементу (см. ИСО/МЭК 13250-2. подраздел 5.3). два тематических элемента объединяются в соответствии с процедурой, приведенной в ИСО/МЭК 13250-2. Переменные должны появляться только внутри шаблонов. #    A topic referenced by the subject locator «http://www.isotopicmaps.org/» = http://www.isotopicmaps.org/. #    A topic referenced by a subject identifier http://psi.example.org/John Lennon. #    A topic with a unique item identifier. Within the CTM #    document it is not possible to reference this topic by item identifier. ? — «Atopic». #    A topic with a unique item identifier which may be #    referenced again within the topic map. ?foo — «А new. unique topic». #    Another reference to the same topic later in the document ?foo isa subject. 3.3.7    Тематические ссылки Если topic-ref определяется за счет topic-identity, то используется тематический элемент по 3.3.6. 3 Если topic-ref является embedded-topic, то создается тематический элемент. Локатор создается в соответствии с процедурой, описанной в 3.3.8, где «[» обрабатывается как anonymous-wildcard. Локатор добавляется к свойству (item identifiers] тематического элемента. Тематический элемент используется в качестве входных данных для процедуры topic-tail (3.9). 3.3.8    Создание локаторов из подстановочных знаков Если wildcard задается no anonymous-wildcard, значение счетчика подстановочных знаков увеличивается на 1. Локатор создается путем сцепки wildcard-iri, строки #$ и значения счетчика подстановочных знаков. Если wildcard задается по named-wildcard, и такой named-wildcard не был обработан до этого, значение счетчика подстановочных знаков увеличивается на 1. Локатора создается путем сцепки wildcard-iri, строки #$_, значения счетчика подстановочных знаков, символа «.» и части identifier у named-wildcard. Если named-wildcard был обработан до того, локатор, созданный в первый раз. используется повторно. 3.3.9    Область действия Конструкция область действия (scope) используется для закрепления области действия за информационным элементом. Во время десериализации каждый элемент topic-ref обрабатывается в соответствии с процедурой, описанной в 3.3.7. Такие тематические элементы собираются в набор, который присваивается в качестве значения свойства [scope] обрабатываемого заявления. 3.3.10    Материализатор Конструкция материализатор (reifier) используется, чтобы обратиться от заявления, в котором она появляется, к теме, материализующей конструкцию. Ссылкой является topic-ref. как описано в 3.3.7 Во время десериализации topic-ref превращается в тематический элемент, следуя процедуре по 3.3.7. Тематический элемент устанавливается в качестве значения свойства [reifier] обрабатываемого заявления. 3.3.11    Тип Конструкция тип (type) служит для присвоения типа информационному элементу, в котором она появляется. Тип всегда является темой, указанной с помощью topic-ref. Во время десериализации topic-ref создает тематический элемент, следуя процедуре из 3.3.7, который задается в качестве значения свойства [type] обрабатываемого информационного элемента. 3.4 Литералы 3.4.1 Общие сведения Литерал представляет собой строковое значение с опциональным типом данных. Для удобства настоящий стандарт поддерживает целые числа, десятичные дроби. IRI, даты и значения типа dateTime, которые должны быть действительными в соответствии с XSDT, напрямую. Следующие неявные типы данных связаны с вышеуказанными литералами: iri http://www.w3.Org/2001/XMLSchema#anyURI integer http://www.w3.Org/2001/XMLSchema#mteger decimal http://www.w3.Org/2001/XMLSchema#decimal ctm-integer http://psi.topicmaps.org/iso13250/ctm-mteger date http://www.w3.Org/2001/XMLSchema#date date-time http://www.w3.org/2001/XMLSchema#dateT ime string http://www.w3.Org/2001/XMLSchema#string Любой литерал может быть выражен за счет представления значения в виде строки и добавления квалификатора типа данных (АА). а также iri-ref. указывающего тип данных. 4 ГОСТ РИСО/МЭК 13250-6—2016 Если literal появляется внутри возникновения (3.10). свойство (value) возникновения устанавливается в значение литерала, а свойство [datatype] возникновения устанавливается как тип данных литерала. Если literal появляется внутри варианта (3.12). свойство (value) варианта устанавливается в значение литерала, а свойство (datatype) варианта устанавливается как тип данных литерала. Переменные должны появляться только внутри шаблонов. 42 # equivalent to 42AAxsd:integer 09-19AAxsd:gMonthDay 3.4.2 Управляющие последовательности в строках Строковые управляющие последовательности могут использоваться либо для избегания символов. которые имеют особое значение в грамматике (т. е.), либо для ввода символов, которых нет на клавиатуре. предоставляя их кодовые точки в Юникоде. СТМ процессор должен заменять двоичные последовательности, которые начинаются с обратной косой черты (\). на эквивалентные кодовые точки в Юникоде: \ становится U+005C, Установится U+0022. \п становится U+000A, \г становится U+000D и \t заменяется на U+0009. Последовательности, которые начинаются с \и и \U. представляют собой кодовые точки в Юникоде в виде шестнадцатеричного числа, где часть hexdigit ссылается на кодировку символов в Юникоде. Часть hexdigit должна быть декодирована в символ в Юникоде, который она представляет, и префиксы \и и \U и должны быть удалены из байтового потока. 3.5    Тематическая карта Компонент topicmap выступает в качестве контейнера для тематической карты и не имеет большего значения. Синтаксис выглядит следующим образом. Опциональная директива кодирования должна появиться в самом начале СТМ потока. Пробелы или какие-либо другие символы не допускаются в начале директивы кодирования (см. подробности в разделе 3). Директивы используются для определения среды для СТМ процессора. 3.6    Директива кодирования Директива кодирования определяет кодировку документа. Если декларации кодирования опущена, то должна быть использована кодировка UTF-8. если только метка порядка байтов не указывает другую кодировку (раздел 3). Наименование кодировки должно быть дано в виде строки в форме, рекомендованной IANA-CHARSETS. Разделители « не входят в наименование. Если кодировка представлена, то она должна появиться в самом начале потока символов (ни пробелы, ни какие-либо другие символы не разрешены в начале данной директивы). %encodmg «Shift-JIS» 3.7    Директива версии Директива версии указывает номер версии СТМ синтаксиса, в настоящее время — «1.0». Синтаксис выглядит следующим образом. Директива версии сообщает синтаксическому анализатору, какая версия СТМ синтаксиса будет использована во время десериализации. В настоящее время единственной допустимой версией является 1.0, как определено в настоящем стандарте. Ее использование рекомендовано для будущей совместимости. %version 1.0 3.8    Темы Конструкция тема (topic) используется для декларирования тематического элемента, присвоения ему идентификаторов и составления заявлений об этом, через присвоение имен и появлений, или вызов шаблонов, которые генерируют ассоциации (и/или дополнительные имена и появления). Она начинается с тематического идентификатора и оканчивается точкой. 5 Во время десериализации тематический элемент создается и присваивает идентификатор путем обработки topic-identity в соответствии с процедурой, описанной в 3.3.6. Если присутствует topic-tail, он обрабатывается в соответствии с процедурой, приведенной в 3.9, с созданным тематическим элементом в качестве входных данных. john-lennon. # a topic with an item identifier and nothing else lennon. mccartney. harrison. starr. # four topics on one line #    A topic defined by its subject locator = http://www.isotopicmaps.org/ —    «The ISO Topic Maps Web Site». #    A topic defined by a subject identifier http://psi.example.org/John_Lennon —    «John Lennon». #    A topic with a local identifier and a subject identifier john http://psi.example.org/John Lennon; —    «John Lennon». 3.9    Тематический хвост Тематический хвост (topic tail) используется для присвоения дополнительных идентификаторов к тематическому элементу и создания заявлений об этом. Он принимает тематический элемент в качестве входных данных. Для идентификатора субъекта, локатора субъекта или идентификатора элемента создается IRI в соответствии с процедурой, описанной в 3.3.6, и добавляется к свойству (subject identifiers], или (subject locators], или (item identifiers] тематического элемента. Если любая из этих процедур делает тему равной другому тематическому элементу (см. ИСО/МЭК 13250-2, подраздел 5.3). оба тематических элемента объединяются в соответствии с процедурой, приведенной в ИСО/МЭК 13250-2. Произведение instance-of создает отношения type-instance согласно ИСО/МЭК 13250-2, подраздел 7.2. где тема с правой стороны играет роль http://psi.topicmaps.org/iso13250/model/type. а входной тематический элемент играет роль http://psi.topicmaps.org/iso13250/model/instance. Произведение kind-of устанавливает отношения supertype-subtype согласно ИСО/МЭК 13250-2, подраздел 7.3, где входной тематический элемент играет роль http://psi.topicmaps.org/iso13250/model/ subtype, а тематический элемент с правой стороны играет роль http://psi.topicmaps.or9/iso13250/model/ supertype. 3.10    Возникновения Конструкция возникновение (occurrence) используется для добавления возникновений к тематическому элементу. Синтаксис выглядит следующим образом. Во время десериализации конструкция возникновение вызывает создание элемента возникновения и добавление его к свойству (occurrences] тематического элемента, созданного процедурой, описанной в 3.8. Paul_McCartney birthday: 1942-02-18: webpage: http://en.wikipedia.org/wiki/Paul_McCartney 3.11    Наименования Конструкция наименование (пате) используется для того, чтобы добавить наименование темы в тему. Синтаксис выглядит следующим образом. Во время десериализации конструкция наименование вызывает создание элемента наименования темы и добавление его к свойству (topic names] тематического элемента, созданного процедурой, описанной в 3.8. 6 ГОСТ Р ИСО/МЭК 13250-6—2016 Если type не указан, свойство (type] элемента наименования темы задается как тематический элемент, свойство (subject identifiers] которого содержит http://psi.topicmaps.org/iso13250/model/topic-name; если такого тематического элемента не существует, то он создается. john-lennon —    «John Lennon»;    #    Name with the default name type —    fullname: «John Winston Lennon». # Name of type fullname’ 3.12    Варианты Конструкция вариант (variant) используется для того, чтобы добавить наименование варианта в элемент наименования темы. Синтаксис выглядит следующим образом. Во время десериализации конструкция вариант вызывает создание элемента вариант и добавление его к свойству (variants] элемента наименования темы, созданного процедурой, описанной в 3.11. После того, как scope был обработан, темы в свойстве (scope] элемента наименования темы добавляются к свойству (scope] элемента наименования варианта. %prefix tm http://psi.topicmaps.org/iso13250/model/ #    a topic with a sort name variant john — «John Lennon» («lennon,john» @ trrvsort). 3.13    Ассоциации Конструкция ассоциация (association) используется для добавления ассоциаций к тематической карте. Синтаксис выглядит следующим образом. Во время десериализации элемент ассоциации создается для каждой ассоциации и добавляется к свойству (associations] элемента тематической карты. Во время десериализации элемент роли ассоциации создается для каждого role. Элемент роли добавляется к свойству (roles] элемента ассоциации. member_of(group: The_Beatles. member: JohnLennon) 3.14    Шаблоны Шаблоны являются контейнерами для произвольных тем и заявлений и предоставляют механизм для повторного использования заявлений в различных контекстах. Тело шаблона состоит из обычных тем и ассоциаций и позволяет тематическим ссылкам (3.3.7) и литералам (3.4) быть замененными на переменные. Синтаксис для шаблонов определяется следующим образом. В template-body переменные разрешены везде, где разрешены topic-refs или literals. Декларация шаблона не меняет тематическую карту до тех пор. пока шаблон не был вызван template-invocation (3.15). Если шаблон с таким же идентификатором и тем же количеством аргументов уже определен, это является ошибкой. #    Declaration of a template that sets the topic type to person’. creates an #    occurrence of type birthday’, and creates an association of type born-in’ def born($person. $date, $place) Sperson isa person; birthday: $date. born-in(person : Sperson. birthplace: Splace). end #    Invocation of the template inside a topic block mccartney born( 1942-06-12, Liverpool). #    Invocation of the template outside topic block born(mccartney. 1942-06-12. Liverpool) 7
  2. Часть 6 Компактный синтаксис
  3. Компактный синтаксис
  4. Предисловие 1    ПОДГОТОВЛЕН Федеральным государственным унитарным предприятием Государственный научно-исследовательский и конструкторско-технологический институт «ТЕСТ» (ФГУП ГосНИИ «ТЕСТ»), Обществом с ограниченной ответственностью «Информационно-аналитический центр» (ООО ИАВЦ) на основе собственного аутентичного перевода на русский язык англоязычной версии международного стандарта, указанного в пункте 4 2    ВНЕСЕН Техническим комитетом по стандартизации ТК 22 «Информационные технологии» 3    УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 1 ноября 2016 г. № 1546-ст 4    Настоящий стандарт идентичен международному стандарту ИСО/МЭК 13250-6:2010 «Информационная технология. Тематические карты. Часть 6. Компактный синтаксис» (ISO/IEC 13250-6:2010 «Information technology — Topic Maps — Part 6: Compact syntax», IDT). При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов соответствующие им национальные стандарты Российской Федерации, сведения о которых приведены в дополнительном приложении ДА 5    ВВЕДЕН ВПЕРВЫЕ Правипа применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. № 162—ФЗ «О стандартизации в Российской Федерации». Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе «Национальные стандарты», а официальный текст изменений и поправок — в ежемесячном информационном указателе «Национальные стандарты». В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому ругулированию и метрологии в сети Интернет (www.gost.ru) ©Стандартинформ. 2016 Настоящий стандарт не может быть полностью или частично воспроизведен, тиражирован и распространен в качестве официального издания без разрешения Федерального агентства по техническому регулированию и метрологии # Both of the above have the same effect as the following mccartney isa person; birthday: 1942-06-12. born-in(person: mccartney, birthplace: Liverpool) Если named-wildcard используется внутри тела шаблона, он доступен только внутри шаблона. Каждый раз. когда шаблон вызывается, named-wildcard вызывает создание темы. Это должно быть обработано по-другому. Наименования шаблонов и identifiers темы имеют разные пространства имен. Если существует шаблон с именем А, то все еще возможно задекларировать тему с идентификатором А. 3.15 Вызов шаблона Для вызова шаблона необходимо выполнить следующие действия: —    если в вызов шаблона происходит внутри topic-tail (3.9), следует вставить topic-identity темы, которая была использована в качестве первого аргумента входных данных; —    осуществить поиск определения шаблона с template-name и количеством предоставленных arguments. Если такой шаблон не определен, то это является ошибкой; —    привязать каждую переменную шаблона к аргументу согласно позиции аргумента (первая переменная связывается с первым аргументом и т. д.); —    добавить каждое заявление тела шаблона к тематической карте так. чтобы любая переменная была заменена аргументом привязки. Примечание — Внутри шаблонов можно сослаться на другие шаблоны, которые еще не были определены (ссылка вперед). Если шаблон вызывается, то шаблоны, на которые он ссылается, должны быть определены. Пример 1 U Template invocation within a topic declaration mccartney plays-for(The_Beatles, piano); has-shoosize(42). U Template invocation outsido of topic declarations plays-for(john, The_Boatlos, guitar) has-shoesizo(john, 45) Пример 2 — Смысл iri-ref зависит от контекста def wiki-entry(Siri. Sname) Siri    tt    Used    as    subject identifier Sname; description: Siri. It Used as occurrence value end wiki-entry(<http://en.wikipedia.org/wiki/John_Lennon>, «John Lennon») ft The following template invocation fails, because a subject locator is U provided which cannot be used as value of an occurrence. wiki-entry(=<http j/en. wikipedia.org/wiki/Paul_McCartney>, «Sir Paul McCartney») It -> Error! Пример 3 — Шаблоны могут использоваться для того, чтобы «украсить» другие шаблоны dof is-boatlo(Sboatlo) is-mombor-of(Sboatlo. Tho-Boatlos) ond dof is-mombor-of(Smembor, Sgroup) mombor-offmombor: Smombor, group: Sgroup) end 8 ГОСТ РИСО/МЭК 13250-6—2016 is-member-of(sting, The-Police) U Invoking the ‘raw’is-member-of template is-beatle(john). 3.16 Директивы 3.16.1    Префикс директива Префикс директива используется для ассоциации IRI с идентификатором. Синтаксис выглядит следующим образом. Во время десериализации префикс компонент связывает identifier с IRI. Если identifier уже связан, то это является ошибкой, если только identifier не привязан к одному и тому же reference. Если сцепка iri и local части QName создает недопустимый IRI, то это является ошибкой. %prefix wiki http://en.wikipedia.org/wiki/ wiki:John_Lennon    # QName used as a subject identifier —    «John Lennon». 3.16.2    Директива включения Директива include используется для того, чтобы включить другой СТМ источник в обрабатываемый СТМ экземпляр. В качестве ссылки на другой источник используется IRI. IRI внешнего ресурса информационного, обозначенный с помощью in-ref. разрешается, и ресурс анализируется СТМ процессором по правилам, определенным настоящим стандартом, принимая предоставленный iri — ref в виде документа IRI в качестве входных данных. Далее происходит инициализация wildcard-iri СТМ процессора с документом IRI этого СТМ источника и счетчик подстановочных знаков устанавливается в начальное с текущим значением счетчика подстановочных знаков. Если информационный ресурс не является допустимым СТМ ресурсом, то это является ошибкой. Новый экземпляр модели данных (В) затем объединяется в текущий (А) путем: —    итерации всех тематических элементов в свойстве В (topics] и выявления тех тем. которые содержат локаторы в их [item identifiers), значение строки которых начинается с документа IRI В. Для каждого из этих идентификаторов элементов создается строка S путем вычитания значения строки документа IRI В из значения строки идентификатора элемента. Строка S разрешается относительно документа IRI А. Полученная строка добавляется к свойству (item identifiers] темы; —    добавления всех тематических элементов свойства В [topics] к свойству A (topics); —    добавления всех элементов ассоциаций свойства В [associations] к свойству A [associations]. Примечание — Добавление тем и ассоциаций кА может привести к дальнейшим слияниям, какописано в ИСО/М ЭК 13250-2. Текущее значение счетчика подстановочных знаков устанавливается равным значению счетчика подстановочных знаков процессора, который был ответственен за создание экземпляра модели данных (В). Все шаблоны импортируются и могут быть использованы текущим СТМ символьным потоком так. как они были объявлены при их включении. 3.16.3    Директива mergemap Директива mergemap используется для того, чтобы объединить внешнюю тематическую карту в тематическую карту, произведенную путем десериализации СТМ тематической карты. Синтаксис директивы mergemap выглядит следующим образом: Настоящий стандарт предписывает, что каждый соответствующий требованиям СТМ процессор должен поддерживать следующие синтаксисы. http://psi.topicmaps.org/iso13250/ctm Идентификатор для Compact Topic Maps Syntax (СТМ). описанный в настоящем стандарте. http://psi.topicmaps.org/iso13250/xtm Идентификатор для XML Topic Maps Syntax (ХТМ), описанный в ИСО/МЭК13250-3. 9 Помимо нормативного синтаксиса, упомянутого выше. СТМ процессор может поддерживать и другие синтаксисы. Если notation не поддерживается СТМ процессором, то это является ошибкой. Во время десериализации компонент mergemap вызывает немедленную десериализацию ссылочной тематической карты в экземпляр модели данных. Новый экземпляр модели данных (В) затем объединяется в текущий (А) путем: —    добавления всех тематических элементов свойства В [topics] к свойству A [topics]; —    добавления всех элементов ассоциаций свойства В [associations] к свойству A [associations). Примечание — Добавление тем и ассоциаций к А можег привести к дальнейшим слияниям, как описано в ИСО/МЭК 13250-2. 10 ГОСТ РИСО/МЭК 13250-6—2016 Приложение А (справочное) Целое число СТМ В настоящем приложении приведено описание XML схемы для ctirvinteger (http://psi.top»cmaps.orgfeo13250/ctm-integer). «simpleType» <union> <simpleType> «restriction base=’nonNegativelnteger’/> </simpleType> <simpleType> «restriction base-string’» «enumeration value=‘*7> «/restriction» «/simpleType» «/union» «/simpleType» 11 ГОСТ Р ИСО/МЭК 13250-6—2016 Приложение В (справочное) Синтаксис Синтаксис ядра и общий синтаксиса (commodity syntax) будет вставлен через XSLT. 12 ГОСТ РИСО/МЭК 13250-е—2016 Приложонио ДА (справочное) Сведения о соответствии ссылочных международных стандартов национальным стандартам Российской Федерации Таблица ДА.1 Обозначение ссылочного международного стандарта Степень соответствия Обозначение и наименование соответствующего национального стандарта ISO/IEC 13250-2:2006 ЮТ ГОСТ Р ИСО/МЭК 13250-2—2012 «Информационная технология. Тематические карты. Часть 2. Модель данных» Примечание — В настоящей таблице использовано следующее условное обозначение степени соответствия стандартов; — ЮТ — идентичные стандарты. 13 ГОСТ РИСО/МЭК 13250-6—2016 Содержание 1    Область применения……………………………………………1 2    Нормативные ссылки…………………………………………..1 3    Описание синтаксиса…………………………………………..1 3.1    О синтаксисе……………………………………………..1 3.2    Десериализация……………………………………………2 3.3    Распространенные синтаксические конструкции………………………….2 3.4    Литералы……………………………………………….4 3.5    Тематическая карта………………………………………….5 3.6    Директива кодирования……………………………………….5 3.7    Директива версии…………………………………………..5 3.8    Темы………………………………………………….5 3.9    Тематический хвост………………………………………….6 3.10    Возникновения……………………………………………6 3.11    Наименования……………………………………………6 3.12    Варианты………………………………………………7 3.13    Ассоциации……………………………………………..7 3.14    Шаблоны……………………………………………….7 3.15    Вызов шаблона……………………………………………8 3.16    Директивы………………………………………………9 Приложение А (справочное)    Целое число СТМ……………………………..11 Приложение В (справочное)    Синтаксис…………………………………12 Приложение ДА (справочное) Сведения о соответствии ссылочных международных стандартов национальным стандартам Российской Федерации…………………13 Библиография………………………………………………..14 III НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ Информационная технология ТЕМАТИЧЕСКИЕ КАРТЫ Часть 6 Компактный синтаксис Information technology. Topic maps. Part 6. Compact syntax Дата введения — 2017—09—01 1 Область применения Настоящий стандарт определяет текстовое отображение для представления экземпляров модели данных, определенной в ИСО/МЭК 13250-2. Настоящий стандарт также определяет сопоставление такого отображения с моделью данных. Синтаксис описан с помощью грамматики расширенной Бэкус-Науровой формы (РБНФ). 2    Нормативные ссылки В настоящем стандарте использованы нормативные ссылки на следующие стандарты: Официальные    названия    для наборов символов.    14    мая 2007 года,    доступно    на <http://www.iana.org/assignments/character-sets> (IANA-CHARSETS. CHARACTER SETS, Internet Assigned Numbers Authonty. 14 May 2007. available at <http://www.iana.org/assignments/character-sets>) ИСО/МЭК 13250-2:2012 Информационные технологии. Тематические карты. Часть2. Модель данных (ISO/IEC 13250-2:2006. Information technology — Topic Maps — Part 2: Data model) XSDT Схема XML Часть 2. Типы данных, второе издание, рекомендация W3C. 28 октября 2004 года, доступно по адресу: <http://www.w3.org/TR/xmlschema-2/> (XSDT. XML Schema Part 2: Datatypes Second    Edition.    W3C Recommendation.    28    October 2004,    available    at <http://www.w3.org/TR/xmlschema-2/>) IETF RFC 3986 Универсальный идентификатор ресурса (URI): общий синтаксис, спецификация интернет стандарты. январь 2005, доступно по адресу <http://www.ietf.org/rfc/rfc3986.txt> (IETF RFC 3986, Uniform Resource Identifier (URI): Genenc Syntax. Internet Standards Track Specification, January 2005. available at <http://www.ietf.org/rfc/rfc3986.txt>) IETF RFC 3987 Интернационализированные идентификаторы ресурсов (IRI), спецификация интернет стандарты, ноябрь 2005. доступно по адресу:    <http://www.ietf.org/rfc/rfc3987.txt> (IETF RFC 3987, Internationalized Resource Identifiers (IRIs), Internet Standards Track Specification, January 2005. available at <http://www.ietf.org/rfc/rfc3987.txt>) 3    Описание синтаксиса 3.1 О синтаксисе Аббревиатуру СТМ (Compact Topic Maps) часто используют для обозначения синтаксиса, определенного в настоящем стандарте. Данный раздел определяет СТМ синтаксис с помощью грамматики EBNF. основанной на отображении. описанном в XML 1.0. Он использует текстовое описание для сопоставления СТМ с ИСО/МЭК 13250-2. Полностью EBNF содержится в приложении А. Издание официальное 3.2    Десериализация Данный подраздел определяет, как экземпляры СТМ синтаксиса десериализуются в экземпляры модели данных, определенной в ИСО/МЭК 13250-2. Сериализация определена неявно, но имплементации должны производить СТМ сериализации, которые при десериализации в новый экземпляр модели данных будут производить такой экземпляр модели данных, который имеет канонизацию, аналогичную исходному экземпляру модели данных, согласно ИСО/МЭК 13250-4. Входными данными для процесса десериализации являются: —    опциональное наименование набора символов в соответствии с IANA-CHARSETS, что задает кодировку СТМ экземпляра; —    байтовый поток, который преобразуется в символьный поток с помощью следующих шагов: —    если опциональное входное название набора символов предоставлено, то кодировка устанавливается в указанное значение; —    если поток байтов начинается с EF ВВ BF (UTF-8 метка порядка байтов), то кодировка устанавливается как«ШТ-8»; —    если кодировка уже установлена в другое значение из-за опционального названия набор символов. то это является ошибкой; —    если последующие байты в потоке содержат последовательность 25 65 6Е 63 6F 64 69 6Е 67 (процентная кодировка ASCII), все последующие байты 09 или 20 пропускаются до первых считанных 22 байт. Следующая байтовая последовательность до следующего 22 байта (исключительно) интерпретируется как наименование набора символов в соответствии с IANA-CHARSETS; —    если кодировка уже установлена в другое значение, то это является ошибкой; —    если предыдущие действия не дают кодировку, она должна быть установлена как «UTF-8»; —    поток байтов преобразуется в зависимости от кодировки в Unicode так. что опциональная байтовая последовательность EF ВВ BF удаляется из начала байтового потока. Такой символьный поток обрабатывается согласно грамматике, указанной в настоящем стандарте: —    абсолютный IRI. Это ИРИ. из которого считывается поток байтов, известный как документ IRI. Такой IRI должен быть всегда предоставлен, так как это необходимо для того, чтобы назначить идентификаторы элементов тематических элементов, созданных во время десериализации. Если СТМ экземпляр не был считан из какого-либо конкретного IRI, приложение в ответе за предоставление подходящего IRI; —    абсолютный IRI, который будет использоваться для разрешения подстановочных знаков против 3.3.8; и который называется «wildcard-in». Если wildcard-iri не предоставлен, его значение берется из документа IRI; —    неотрицательное целое число, называемое «wildcard-counter». Если wildcard-counter не предоставлен. то он устанавливается в начальное значение, равное 0. Десериализация выполняется путем обработки каждого компонента СТМ источника в порядке документов. Компоненты определяются в виде текста, соответствующего синтаксической переменной EBNF. Для каждого встречающегося компонента выполняются операции, указанные в настоящем подразделе для соответствующей синтаксической переменной. Всякий раз. когда создается новый информационный элемент, все его свойства, которые имеют установленные значения, устанавливаются в начальное значение в виде пустого множества; все другие свойства инициализируются в NULL. 3.3    Распространенные синтаксические конструкции 3.3.1    Пробел Пробел (Whitespace) состоит из одного или более пробельных символов (#х20), разрывов строки, переводов строки или табуляции. Пробельный символ разрешен везде для разделения токенов (терминалов и не терминалов). 3.3.2    Комментарии Комментарии являются фрагментами потока символов, которые игнорируются СТМ процессором. Комментарии разрешены там, где разрешены пробельные символы. Многострочные комментарии разграничиваются с помощью #( и )# и могут быть вложенными. Однострочные комментарии начинаются со знака решетки (#) и продолжаются до конца текущей строки либо до конца символьного потока, в зависимости от того, что наступит раньше. 2 ГОСТ РИСО/МЭК 13250-6—2016 3.3.3    Создание IRI из строк Разделители < и > удаляются из iri-delimited; результирующая строка может представлять абсолютный или относительный IRI, который должен удовлетворять требованиям IETF RFC 3986 и IETF RFC 3987. Для создания IRI из строки следует заменить управляющую последовательность %НН на соответствующие символы и раскодировать получившуюся последовательность символов из UTF-8 в последовательность абстрактных символов Unicode. Получившаяся строка превращается в абсолютный IRI с помощью применения документа IRI. 3.3.4    Создание IRI из QName QName используются для сокращения IRI. Синтаксис QName следующий: QName вызывает создание локатора. Во время десериализации IRI, к которому привязан префикс, сцепляется с локальной частью. В результате такого процесса появляется абсолютный IRI. Если префикс не был привязан к IRI так. как указано в 3.16.1. то это является ошибкой. %prefix isbn urn:isbn: isbn:3-7026-4850-X isa book; — «Daskleme Ich bin Ich». 3.3.5    Ссылки IRI IRI ссылками являются либо QName либо IRI. Они взаимозаменяемы: везде, где IRI могут быть использованы. QName могут быть также использованы (при условии, что определен префикс). 3.3.6    Тематический идентификатор На темы ссылается идентификатор элемента, идентификатор субъекта или локатор субъекта. Во время десериализации для каждого topic-identity создается один тематический элемент. Если topic-identity является identifier, локатор создается путем сцепки документа IRI. символа # и значения identifier. Локатор добавляется к свойству (item identifiers! тематического элемента. Если topic-identity определяется идентификатором субъекта, локатор создается и добавляется к свойству (subject identifiers] тематического элемента. Если topic-identity определяется локатором субъекта, локатор создается (ведущий = не часть локатора) и добавляется к свойству (subject locators) тематического элемента. Если topic-identity определяется идентификатором элемента, локатор создается (ведущий А не часть локатора) и добавляется к свойству (item identifiers] тематического элемента. Если topic-identity определяется по wildcard, локатор, созданный в соответствии с процедурой, описанной в 3.3.8. добавляется к свойству (item identifiers] тематического элемента. Если тематический элемент, созданный через десериализацию topic-identity, равен другому тематическому элементу (см. ИСО/МЭК 13250-2. подраздел 5.3). два тематических элемента объединяются в соответствии с процедурой, приведенной в ИСО/МЭК 13250-2. Переменные должны появляться только внутри шаблонов. #    A topic referenced by the subject locator «http://www.isotopicmaps.org/» = http://www.isotopicmaps.org/. #    A topic referenced by a subject identifier http://psi.example.org/John Lennon. #    A topic with a unique item identifier. Within the CTM #    document it is not possible to reference this topic by item identifier. ? — «Atopic». #    A topic with a unique item identifier which may be #    referenced again within the topic map. ?foo — «А new. unique topic». #    Another reference to the same topic later in the document ?foo isa subject. 3.3.7    Тематические ссылки Если topic-ref определяется за счет topic-identity, то используется тематический элемент по 3.3.6. 3 Если topic-ref является embedded-topic, то создается тематический элемент. Локатор создается в соответствии с процедурой, описанной в 3.3.8, где «[» обрабатывается как anonymous-wildcard. Локатор добавляется к свойству (item identifiers] тематического элемента. Тематический элемент используется в качестве входных данных для процедуры topic-tail (3.9). 3.3.8    Создание локаторов из подстановочных знаков Если wildcard задается no anonymous-wildcard, значение счетчика подстановочных знаков увеличивается на 1. Локатор создается путем сцепки wildcard-iri, строки #$ и значения счетчика подстановочных знаков. Если wildcard задается по named-wildcard, и такой named-wildcard не был обработан до этого, значение счетчика подстановочных знаков увеличивается на 1. Локатора создается путем сцепки wildcard-iri, строки #$_, значения счетчика подстановочных знаков, символа «.» и части identifier у named-wildcard. Если named-wildcard был обработан до того, локатор, созданный в первый раз. используется повторно. 3.3.9    Область действия Конструкция область действия (scope) используется для закрепления области действия за информационным элементом. Во время десериализации каждый элемент topic-ref обрабатывается в соответствии с процедурой, описанной в 3.3.7. Такие тематические элементы собираются в набор, который присваивается в качестве значения свойства [scope] обрабатываемого заявления. 3.3.10    Материализатор Конструкция материализатор (reifier) используется, чтобы обратиться от заявления, в котором она появляется, к теме, материализующей конструкцию. Ссылкой является topic-ref. как описано в 3.3.7 Во время десериализации topic-ref превращается в тематический элемент, следуя процедуре по 3.3.7. Тематический элемент устанавливается в качестве значения свойства [reifier] обрабатываемого заявления. 3.3.11    Тип Конструкция тип (type) служит для присвоения типа информационному элементу, в котором она появляется. Тип всегда является темой, указанной с помощью topic-ref. Во время десериализации topic-ref создает тематический элемент, следуя процедуре из 3.3.7, который задается в качестве значения свойства [type] обрабатываемого информационного элемента. 3.4 Литералы 3.4.1 Общие сведения Литерал представляет собой строковое значение с опциональным типом данных. Для удобства настоящий стандарт поддерживает целые числа, десятичные дроби. IRI, даты и значения типа dateTime, которые должны быть действительными в соответствии с XSDT, напрямую. Следующие неявные типы данных связаны с вышеуказанными литералами: iri http://www.w3.Org/2001/XMLSchema#anyURI integer http://www.w3.Org/2001/XMLSchema#mteger decimal http://www.w3.Org/2001/XMLSchema#decimal ctm-integer http://psi.topicmaps.org/iso13250/ctm-mteger date http://www.w3.Org/2001/XMLSchema#date date-time http://www.w3.org/2001/XMLSchema#dateT ime string http://www.w3.Org/2001/XMLSchema#string Любой литерал может быть выражен за счет представления значения в виде строки и добавления квалификатора типа данных (АА). а также iri-ref. указывающего тип данных. 4 ГОСТ РИСО/МЭК 13250-6—2016 Если literal появляется внутри возникновения (3.10). свойство (value) возникновения устанавливается в значение литерала, а свойство [datatype] возникновения устанавливается как тип данных литерала. Если literal появляется внутри варианта (3.12). свойство (value) варианта устанавливается в значение литерала, а свойство (datatype) варианта устанавливается как тип данных литерала. Переменные должны появляться только внутри шаблонов. 42 # equivalent to 42AAxsd:integer 09-19AAxsd:gMonthDay 3.4.2 Управляющие последовательности в строках Строковые управляющие последовательности могут использоваться либо для избегания символов. которые имеют особое значение в грамматике (т. е.), либо для ввода символов, которых нет на клавиатуре. предоставляя их кодовые точки в Юникоде. СТМ процессор должен заменять двоичные последовательности, которые начинаются с обратной косой черты (\). на эквивалентные кодовые точки в Юникоде: \ становится U+005C, Установится U+0022. \п становится U+000A, \г становится U+000D и \t заменяется на U+0009. Последовательности, которые начинаются с \и и \U. представляют собой кодовые точки в Юникоде в виде шестнадцатеричного числа, где часть hexdigit ссылается на кодировку символов в Юникоде. Часть hexdigit должна быть декодирована в символ в Юникоде, который она представляет, и префиксы \и и \U и должны быть удалены из байтового потока. 3.5    Тематическая карта Компонент topicmap выступает в качестве контейнера для тематической карты и не имеет большего значения. Синтаксис выглядит следующим образом. Опциональная директива кодирования должна появиться в самом начале СТМ потока. Пробелы или какие-либо другие символы не допускаются в начале директивы кодирования (см. подробности в разделе 3). Директивы используются для определения среды для СТМ процессора. 3.6    Директива кодирования Директива кодирования определяет кодировку документа. Если декларации кодирования опущена, то должна быть использована кодировка UTF-8. если только метка порядка байтов не указывает другую кодировку (раздел 3). Наименование кодировки должно быть дано в виде строки в форме, рекомендованной IANA-CHARSETS. Разделители « не входят в наименование. Если кодировка представлена, то она должна появиться в самом начале потока символов (ни пробелы, ни какие-либо другие символы не разрешены в начале данной директивы). %encodmg «Shift-JIS» 3.7    Директива версии Директива версии указывает номер версии СТМ синтаксиса, в настоящее время — «1.0». Синтаксис выглядит следующим образом. Директива версии сообщает синтаксическому анализатору, какая версия СТМ синтаксиса будет использована во время десериализации. В настоящее время единственной допустимой версией является 1.0, как определено в настоящем стандарте. Ее использование рекомендовано для будущей совместимости. %version 1.0 3.8    Темы Конструкция тема (topic) используется для декларирования тематического элемента, присвоения ему идентификаторов и составления заявлений об этом, через присвоение имен и появлений, или вызов шаблонов, которые генерируют ассоциации (и/или дополнительные имена и появления). Она начинается с тематического идентификатора и оканчивается точкой. 5 Во время десериализации тематический элемент создается и присваивает идентификатор путем обработки topic-identity в соответствии с процедурой, описанной в 3.3.6. Если присутствует topic-tail, он обрабатывается в соответствии с процедурой, приведенной в 3.9, с созданным тематическим элементом в качестве входных данных. john-lennon. # a topic with an item identifier and nothing else lennon. mccartney. harrison. starr. # four topics on one line #    A topic defined by its subject locator = http://www.isotopicmaps.org/ —    «The ISO Topic Maps Web Site». #    A topic defined by a subject identifier http://psi.example.org/John_Lennon —    «John Lennon». #    A topic with a local identifier and a subject identifier john http://psi.example.org/John Lennon; —    «John Lennon». 3.9    Тематический хвост Тематический хвост (topic tail) используется для присвоения дополнительных идентификаторов к тематическому элементу и создания заявлений об этом. Он принимает тематический элемент в качестве входных данных. Для идентификатора субъекта, локатора субъекта или идентификатора элемента создается IRI в соответствии с процедурой, описанной в 3.3.6, и добавляется к свойству (subject identifiers], или (subject locators], или (item identifiers] тематического элемента. Если любая из этих процедур делает тему равной другому тематическому элементу (см. ИСО/МЭК 13250-2, подраздел 5.3). оба тематических элемента объединяются в соответствии с процедурой, приведенной в ИСО/МЭК 13250-2. Произведение instance-of создает отношения type-instance согласно ИСО/МЭК 13250-2, подраздел 7.2. где тема с правой стороны играет роль http://psi.topicmaps.org/iso13250/model/type. а входной тематический элемент играет роль http://psi.topicmaps.org/iso13250/model/instance. Произведение kind-of устанавливает отношения supertype-subtype согласно ИСО/МЭК 13250-2, подраздел 7.3, где входной тематический элемент играет роль http://psi.topicmaps.org/iso13250/model/ subtype, а тематический элемент с правой стороны играет роль http://psi.topicmaps.or9/iso13250/model/ supertype. 3.10    Возникновения Конструкция возникновение (occurrence) используется для добавления возникновений к тематическому элементу. Синтаксис выглядит следующим образом. Во время десериализации конструкция возникновение вызывает создание элемента возникновения и добавление его к свойству (occurrences] тематического элемента, созданного процедурой, описанной в 3.8. Paul_McCartney birthday: 1942-02-18: webpage: http://en.wikipedia.org/wiki/Paul_McCartney 3.11    Наименования Конструкция наименование (пате) используется для того, чтобы добавить наименование темы в тему. Синтаксис выглядит следующим образом. Во время десериализации конструкция наименование вызывает создание элемента наименования темы и добавление его к свойству (topic names] тематического элемента, созданного процедурой, описанной в 3.8. 6 ГОСТ Р ИСО/МЭК 13250-6—2016 Если type не указан, свойство (type] элемента наименования темы задается как тематический элемент, свойство (subject identifiers] которого содержит http://psi.topicmaps.org/iso13250/model/topic-name; если такого тематического элемента не существует, то он создается. john-lennon —    «John Lennon»;    #    Name with the default name type —    fullname: «John Winston Lennon». # Name of type fullname’ 3.12    Варианты Конструкция вариант (variant) используется для того, чтобы добавить наименование варианта в элемент наименования темы. Синтаксис выглядит следующим образом. Во время десериализации конструкция вариант вызывает создание элемента вариант и добавление его к свойству (variants] элемента наименования темы, созданного процедурой, описанной в 3.11. После того, как scope был обработан, темы в свойстве (scope] элемента наименования темы добавляются к свойству (scope] элемента наименования варианта. %prefix tm http://psi.topicmaps.org/iso13250/model/ #    a topic with a sort name variant john — «John Lennon» («lennon,john» @ trrvsort). 3.13    Ассоциации Конструкция ассоциация (association) используется для добавления ассоциаций к тематической карте. Синтаксис выглядит следующим образом. Во время десериализации элемент ассоциации создается для каждой ассоциации и добавляется к свойству (associations] элемента тематической карты. Во время десериализации элемент роли ассоциации создается для каждого role. Элемент роли добавляется к свойству (roles] элемента ассоциации. member_of(group: The_Beatles. member: JohnLennon) 3.14    Шаблоны Шаблоны являются контейнерами для произвольных тем и заявлений и предоставляют механизм для повторного использования заявлений в различных контекстах. Тело шаблона состоит из обычных тем и ассоциаций и позволяет тематическим ссылкам (3.3.7) и литералам (3.4) быть замененными на переменные. Синтаксис для шаблонов определяется следующим образом. В template-body переменные разрешены везде, где разрешены topic-refs или literals. Декларация шаблона не меняет тематическую карту до тех пор. пока шаблон не был вызван template-invocation (3.15). Если шаблон с таким же идентификатором и тем же количеством аргументов уже определен, это является ошибкой. #    Declaration of a template that sets the topic type to person’. creates an #    occurrence of type birthday’, and creates an association of type born-in’ def born($person. $date, $place) Sperson isa person; birthday: $date. born-in(person : Sperson. birthplace: Splace). end #    Invocation of the template inside a topic block mccartney born( 1942-06-12, Liverpool). #    Invocation of the template outside topic block born(mccartney. 1942-06-12. Liverpool) 7
  5. 1 Область применения Настоящий стандарт определяет текстовое отображение для представления экземпляров модели данных, определенной в ИСО/МЭК 13250-2. Настоящий стандарт также определяет сопоставление такого отображения с моделью данных. Синтаксис описан с помощью грамматики расширенной Бэкус-Науровой формы (РБНФ). 2    Нормативные ссылки В настоящем стандарте использованы нормативные ссылки на следующие стандарты: Официальные    названия    для наборов символов.    14    мая 2007 года,    доступно    на <http://www.iana.org/assignments/character-sets> (IANA-CHARSETS. CHARACTER SETS, Internet Assigned Numbers Authonty. 14 May 2007. available at <http://www.iana.org/assignments/character-sets>) ИСО/МЭК 13250-2:2012 Информационные технологии. Тематические карты. Часть2. Модель данных (ISO/IEC 13250-2:2006. Information technology — Topic Maps — Part 2: Data model) XSDT Схема XML Часть 2. Типы данных, второе издание, рекомендация W3C. 28 октября 2004 года, доступно по адресу: <http://www.w3.org/TR/xmlschema-2/> (XSDT. XML Schema Part 2: Datatypes Second    Edition.    W3C Recommendation.    28    October 2004,    available    at <http://www.w3.org/TR/xmlschema-2/>) IETF RFC 3986 Универсальный идентификатор ресурса (URI): общий синтаксис, спецификация интернет стандарты. январь 2005, доступно по адресу <http://www.ietf.org/rfc/rfc3986.txt> (IETF RFC 3986, Uniform Resource Identifier (URI): Genenc Syntax. Internet Standards Track Specification, January 2005. available at <http://www.ietf.org/rfc/rfc3986.txt>) IETF RFC 3987 Интернационализированные идентификаторы ресурсов (IRI), спецификация интернет стандарты, ноябрь 2005. доступно по адресу:    <http://www.ietf.org/rfc/rfc3987.txt> (IETF RFC 3987, Internationalized Resource Identifiers (IRIs), Internet Standards Track Specification, January 2005. available at <http://www.ietf.org/rfc/rfc3987.txt>) 3    Описание синтаксиса 3.1 О синтаксисе Аббревиатуру СТМ (Compact Topic Maps) часто используют для обозначения синтаксиса, определенного в настоящем стандарте. Данный раздел определяет СТМ синтаксис с помощью грамматики EBNF. основанной на отображении. описанном в XML 1.0. Он использует текстовое описание для сопоставления СТМ с ИСО/МЭК 13250-2. Полностью EBNF содержится в приложении А. Издание официальное 3.2    Десериализация Данный подраздел определяет, как экземпляры СТМ синтаксиса десериализуются в экземпляры модели данных, определенной в ИСО/МЭК 13250-2. Сериализация определена неявно, но имплементации должны производить СТМ сериализации, которые при десериализации в новый экземпляр модели данных будут производить такой экземпляр модели данных, который имеет канонизацию, аналогичную исходному экземпляру модели данных, согласно ИСО/МЭК 13250-4. Входными данными для процесса десериализации являются: —    опциональное наименование набора символов в соответствии с IANA-CHARSETS, что задает кодировку СТМ экземпляра; —    байтовый поток, который преобразуется в символьный поток с помощью следующих шагов: —    если опциональное входное название набора символов предоставлено, то кодировка устанавливается в указанное значение; —    если поток байтов начинается с EF ВВ BF (UTF-8 метка порядка байтов), то кодировка устанавливается как«ШТ-8»; —    если кодировка уже установлена в другое значение из-за опционального названия набор символов. то это является ошибкой; —    если последующие байты в потоке содержат последовательность 25 65 6Е 63 6F 64 69 6Е 67 (процентная кодировка ASCII), все последующие байты 09 или 20 пропускаются до первых считанных 22 байт. Следующая байтовая последовательность до следующего 22 байта (исключительно) интерпретируется как наименование набора символов в соответствии с IANA-CHARSETS; —    если кодировка уже установлена в другое значение, то это является ошибкой; —    если предыдущие действия не дают кодировку, она должна быть установлена как «UTF-8»; —    поток байтов преобразуется в зависимости от кодировки в Unicode так. что опциональная байтовая последовательность EF ВВ BF удаляется из начала байтового потока. Такой символьный поток обрабатывается согласно грамматике, указанной в настоящем стандарте: —    абсолютный IRI. Это ИРИ. из которого считывается поток байтов, известный как документ IRI. Такой IRI должен быть всегда предоставлен, так как это необходимо для того, чтобы назначить идентификаторы элементов тематических элементов, созданных во время десериализации. Если СТМ экземпляр не был считан из какого-либо конкретного IRI, приложение в ответе за предоставление подходящего IRI; —    абсолютный IRI, который будет использоваться для разрешения подстановочных знаков против 3.3.8; и который называется «wildcard-in». Если wildcard-iri не предоставлен, его значение берется из документа IRI; —    неотрицательное целое число, называемое «wildcard-counter». Если wildcard-counter не предоставлен. то он устанавливается в начальное значение, равное 0. Десериализация выполняется путем обработки каждого компонента СТМ источника в порядке документов. Компоненты определяются в виде текста, соответствующего синтаксической переменной EBNF. Для каждого встречающегося компонента выполняются операции, указанные в настоящем подразделе для соответствующей синтаксической переменной. Всякий раз. когда создается новый информационный элемент, все его свойства, которые имеют установленные значения, устанавливаются в начальное значение в виде пустого множества; все другие свойства инициализируются в NULL. 3.3    Распространенные синтаксические конструкции 3.3.1    Пробел Пробел (Whitespace) состоит из одного или более пробельных символов (#х20), разрывов строки, переводов строки или табуляции. Пробельный символ разрешен везде для разделения токенов (терминалов и не терминалов). 3.3.2    Комментарии Комментарии являются фрагментами потока символов, которые игнорируются СТМ процессором. Комментарии разрешены там, где разрешены пробельные символы. Многострочные комментарии разграничиваются с помощью #( и )# и могут быть вложенными. Однострочные комментарии начинаются со знака решетки (#) и продолжаются до конца текущей строки либо до конца символьного потока, в зависимости от того, что наступит раньше. 2 ГОСТ РИСО/МЭК 13250-6—2016 3.3.3    Создание IRI из строк Разделители < и > удаляются из iri-delimited; результирующая строка может представлять абсолютный или относительный IRI, который должен удовлетворять требованиям IETF RFC 3986 и IETF RFC 3987. Для создания IRI из строки следует заменить управляющую последовательность %НН на соответствующие символы и раскодировать получившуюся последовательность символов из UTF-8 в последовательность абстрактных символов Unicode. Получившаяся строка превращается в абсолютный IRI с помощью применения документа IRI. 3.3.4    Создание IRI из QName QName используются для сокращения IRI. Синтаксис QName следующий: QName вызывает создание локатора. Во время десериализации IRI, к которому привязан префикс, сцепляется с локальной частью. В результате такого процесса появляется абсолютный IRI. Если префикс не был привязан к IRI так. как указано в 3.16.1. то это является ошибкой. %prefix isbn urn:isbn: isbn:3-7026-4850-X isa book; — «Daskleme Ich bin Ich». 3.3.5    Ссылки IRI IRI ссылками являются либо QName либо IRI. Они взаимозаменяемы: везде, где IRI могут быть использованы. QName могут быть также использованы (при условии, что определен префикс). 3.3.6    Тематический идентификатор На темы ссылается идентификатор элемента, идентификатор субъекта или локатор субъекта. Во время десериализации для каждого topic-identity создается один тематический элемент. Если topic-identity является identifier, локатор создается путем сцепки документа IRI. символа # и значения identifier. Локатор добавляется к свойству (item identifiers! тематического элемента. Если topic-identity определяется идентификатором субъекта, локатор создается и добавляется к свойству (subject identifiers] тематического элемента. Если topic-identity определяется локатором субъекта, локатор создается (ведущий = не часть локатора) и добавляется к свойству (subject locators) тематического элемента. Если topic-identity определяется идентификатором элемента, локатор создается (ведущий А не часть локатора) и добавляется к свойству (item identifiers] тематического элемента. Если topic-identity определяется по wildcard, локатор, созданный в соответствии с процедурой, описанной в 3.3.8. добавляется к свойству (item identifiers] тематического элемента. Если тематический элемент, созданный через десериализацию topic-identity, равен другому тематическому элементу (см. ИСО/МЭК 13250-2. подраздел 5.3). два тематических элемента объединяются в соответствии с процедурой, приведенной в ИСО/МЭК 13250-2. Переменные должны появляться только внутри шаблонов. #    A topic referenced by the subject locator «http://www.isotopicmaps.org/» = http://www.isotopicmaps.org/. #    A topic referenced by a subject identifier http://psi.example.org/John Lennon. #    A topic with a unique item identifier. Within the CTM #    document it is not possible to reference this topic by item identifier. ? — «Atopic». #    A topic with a unique item identifier which may be #    referenced again within the topic map. ?foo — «А new. unique topic». #    Another reference to the same topic later in the document ?foo isa subject. 3.3.7    Тематические ссылки Если topic-ref определяется за счет topic-identity, то используется тематический элемент по 3.3.6. 3 Если topic-ref является embedded-topic, то создается тематический элемент. Локатор создается в соответствии с процедурой, описанной в 3.3.8, где «[» обрабатывается как anonymous-wildcard. Локатор добавляется к свойству (item identifiers] тематического элемента. Тематический элемент используется в качестве входных данных для процедуры topic-tail (3.9). 3.3.8    Создание локаторов из подстановочных знаков Если wildcard задается no anonymous-wildcard, значение счетчика подстановочных знаков увеличивается на 1. Локатор создается путем сцепки wildcard-iri, строки #$ и значения счетчика подстановочных знаков. Если wildcard задается по named-wildcard, и такой named-wildcard не был обработан до этого, значение счетчика подстановочных знаков увеличивается на 1. Локатора создается путем сцепки wildcard-iri, строки #$_, значения счетчика подстановочных знаков, символа «.» и части identifier у named-wildcard. Если named-wildcard был обработан до того, локатор, созданный в первый раз. используется повторно. 3.3.9    Область действия Конструкция область действия (scope) используется для закрепления области действия за информационным элементом. Во время десериализации каждый элемент topic-ref обрабатывается в соответствии с процедурой, описанной в 3.3.7. Такие тематические элементы собираются в набор, который присваивается в качестве значения свойства [scope] обрабатываемого заявления. 3.3.10    Материализатор Конструкция материализатор (reifier) используется, чтобы обратиться от заявления, в котором она появляется, к теме, материализующей конструкцию. Ссылкой является topic-ref. как описано в 3.3.7 Во время десериализации topic-ref превращается в тематический элемент, следуя процедуре по 3.3.7. Тематический элемент устанавливается в качестве значения свойства [reifier] обрабатываемого заявления. 3.3.11    Тип Конструкция тип (type) служит для присвоения типа информационному элементу, в котором она появляется. Тип всегда является темой, указанной с помощью topic-ref. Во время десериализации topic-ref создает тематический элемент, следуя процедуре из 3.3.7, который задается в качестве значения свойства [type] обрабатываемого информационного элемента. 3.4 Литералы 3.4.1 Общие сведения Литерал представляет собой строковое значение с опциональным типом данных. Для удобства настоящий стандарт поддерживает целые числа, десятичные дроби. IRI, даты и значения типа dateTime, которые должны быть действительными в соответствии с XSDT, напрямую. Следующие неявные типы данных связаны с вышеуказанными литералами: iri http://www.w3.Org/2001/XMLSchema#anyURI integer http://www.w3.Org/2001/XMLSchema#mteger decimal http://www.w3.Org/2001/XMLSchema#decimal ctm-integer http://psi.topicmaps.org/iso13250/ctm-mteger date http://www.w3.Org/2001/XMLSchema#date date-time http://www.w3.org/2001/XMLSchema#dateT ime string http://www.w3.Org/2001/XMLSchema#string Любой литерал может быть выражен за счет представления значения в виде строки и добавления квалификатора типа данных (АА). а также iri-ref. указывающего тип данных. 4 ГОСТ РИСО/МЭК 13250-6—2016 Если literal появляется внутри возникновения (3.10). свойство (value) возникновения устанавливается в значение литерала, а свойство [datatype] возникновения устанавливается как тип данных литерала. Если literal появляется внутри варианта (3.12). свойство (value) варианта устанавливается в значение литерала, а свойство (datatype) варианта устанавливается как тип данных литерала. Переменные должны появляться только внутри шаблонов. 42 # equivalent to 42AAxsd:integer 09-19AAxsd:gMonthDay 3.4.2 Управляющие последовательности в строках Строковые управляющие последовательности могут использоваться либо для избегания символов. которые имеют особое значение в грамматике (т. е.), либо для ввода символов, которых нет на клавиатуре. предоставляя их кодовые точки в Юникоде. СТМ процессор должен заменять двоичные последовательности, которые начинаются с обратной косой черты (\). на эквивалентные кодовые точки в Юникоде: \ становится U+005C, Установится U+0022. \п становится U+000A, \г становится U+000D и \t заменяется на U+0009. Последовательности, которые начинаются с \и и \U. представляют собой кодовые точки в Юникоде в виде шестнадцатеричного числа, где часть hexdigit ссылается на кодировку символов в Юникоде. Часть hexdigit должна быть декодирована в символ в Юникоде, который она представляет, и префиксы \и и \U и должны быть удалены из байтового потока. 3.5    Тематическая карта Компонент topicmap выступает в качестве контейнера для тематической карты и не имеет большего значения. Синтаксис выглядит следующим образом. Опциональная директива кодирования должна появиться в самом начале СТМ потока. Пробелы или какие-либо другие символы не допускаются в начале директивы кодирования (см. подробности в разделе 3). Директивы используются для определения среды для СТМ процессора. 3.6    Директива кодирования Директива кодирования определяет кодировку документа. Если декларации кодирования опущена, то должна быть использована кодировка UTF-8. если только метка порядка байтов не указывает другую кодировку (раздел 3). Наименование кодировки должно быть дано в виде строки в форме, рекомендованной IANA-CHARSETS. Разделители « не входят в наименование. Если кодировка представлена, то она должна появиться в самом начале потока символов (ни пробелы, ни какие-либо другие символы не разрешены в начале данной директивы). %encodmg «Shift-JIS» 3.7    Директива версии Директива версии указывает номер версии СТМ синтаксиса, в настоящее время — «1.0». Синтаксис выглядит следующим образом. Директива версии сообщает синтаксическому анализатору, какая версия СТМ синтаксиса будет использована во время десериализации. В настоящее время единственной допустимой версией является 1.0, как определено в настоящем стандарте. Ее использование рекомендовано для будущей совместимости. %version 1.0 3.8    Темы Конструкция тема (topic) используется для декларирования тематического элемента, присвоения ему идентификаторов и составления заявлений об этом, через присвоение имен и появлений, или вызов шаблонов, которые генерируют ассоциации (и/или дополнительные имена и появления). Она начинается с тематического идентификатора и оканчивается точкой. 5 Во время десериализации тематический элемент создается и присваивает идентификатор путем обработки topic-identity в соответствии с процедурой, описанной в 3.3.6. Если присутствует topic-tail, он обрабатывается в соответствии с процедурой, приведенной в 3.9, с созданным тематическим элементом в качестве входных данных. john-lennon. # a topic with an item identifier and nothing else lennon. mccartney. harrison. starr. # four topics on one line #    A topic defined by its subject locator = http://www.isotopicmaps.org/ —    «The ISO Topic Maps Web Site». #    A topic defined by a subject identifier http://psi.example.org/John_Lennon —    «John Lennon». #    A topic with a local identifier and a subject identifier john http://psi.example.org/John Lennon; —    «John Lennon». 3.9    Тематический хвост Тематический хвост (topic tail) используется для присвоения дополнительных идентификаторов к тематическому элементу и создания заявлений об этом. Он принимает тематический элемент в качестве входных данных. Для идентификатора субъекта, локатора субъекта или идентификатора элемента создается IRI в соответствии с процедурой, описанной в 3.3.6, и добавляется к свойству (subject identifiers], или (subject locators], или (item identifiers] тематического элемента. Если любая из этих процедур делает тему равной другому тематическому элементу (см. ИСО/МЭК 13250-2, подраздел 5.3). оба тематических элемента объединяются в соответствии с процедурой, приведенной в ИСО/МЭК 13250-2. Произведение instance-of создает отношения type-instance согласно ИСО/МЭК 13250-2, подраздел 7.2. где тема с правой стороны играет роль http://psi.topicmaps.org/iso13250/model/type. а входной тематический элемент играет роль http://psi.topicmaps.org/iso13250/model/instance. Произведение kind-of устанавливает отношения supertype-subtype согласно ИСО/МЭК 13250-2, подраздел 7.3, где входной тематический элемент играет роль http://psi.topicmaps.org/iso13250/model/ subtype, а тематический элемент с правой стороны играет роль http://psi.topicmaps.or9/iso13250/model/ supertype. 3.10    Возникновения Конструкция возникновение (occurrence) используется для добавления возникновений к тематическому элементу. Синтаксис выглядит следующим образом. Во время десериализации конструкция возникновение вызывает создание элемента возникновения и добавление его к свойству (occurrences] тематического элемента, созданного процедурой, описанной в 3.8. Paul_McCartney birthday: 1942-02-18: webpage: http://en.wikipedia.org/wiki/Paul_McCartney 3.11    Наименования Конструкция наименование (пате) используется для того, чтобы добавить наименование темы в тему. Синтаксис выглядит следующим образом. Во время десериализации конструкция наименование вызывает создание элемента наименования темы и добавление его к свойству (topic names] тематического элемента, созданного процедурой, описанной в 3.8. 6 ГОСТ Р ИСО/МЭК 13250-6—2016 Если type не указан, свойство (type] элемента наименования темы задается как тематический элемент, свойство (subject identifiers] которого содержит http://psi.topicmaps.org/iso13250/model/topic-name; если такого тематического элемента не существует, то он создается. john-lennon —    «John Lennon»;    #    Name with the default name type —    fullname: «John Winston Lennon». # Name of type fullname’ 3.12    Варианты Конструкция вариант (variant) используется для того, чтобы добавить наименование варианта в элемент наименования темы. Синтаксис выглядит следующим образом. Во время десериализации конструкция вариант вызывает создание элемента вариант и добавление его к свойству (variants] элемента наименования темы, созданного процедурой, описанной в 3.11. После того, как scope был обработан, темы в свойстве (scope] элемента наименования темы добавляются к свойству (scope] элемента наименования варианта. %prefix tm http://psi.topicmaps.org/iso13250/model/ #    a topic with a sort name variant john — «John Lennon» («lennon,john» @ trrvsort). 3.13    Ассоциации Конструкция ассоциация (association) используется для добавления ассоциаций к тематической карте. Синтаксис выглядит следующим образом. Во время десериализации элемент ассоциации создается для каждой ассоциации и добавляется к свойству (associations] элемента тематической карты. Во время десериализации элемент роли ассоциации создается для каждого role. Элемент роли добавляется к свойству (roles] элемента ассоциации. member_of(group: The_Beatles. member: JohnLennon) 3.14    Шаблоны Шаблоны являются контейнерами для произвольных тем и заявлений и предоставляют механизм для повторного использования заявлений в различных контекстах. Тело шаблона состоит из обычных тем и ассоциаций и позволяет тематическим ссылкам (3.3.7) и литералам (3.4) быть замененными на переменные. Синтаксис для шаблонов определяется следующим образом. В template-body переменные разрешены везде, где разрешены topic-refs или literals. Декларация шаблона не меняет тематическую карту до тех пор. пока шаблон не был вызван template-invocation (3.15). Если шаблон с таким же идентификатором и тем же количеством аргументов уже определен, это является ошибкой. #    Declaration of a template that sets the topic type to person’. creates an #    occurrence of type birthday’, and creates an association of type born-in’ def born($person. $date, $place) Sperson isa person; birthday: $date. born-in(person : Sperson. birthplace: Splace). end #    Invocation of the template inside a topic block mccartney born( 1942-06-12, Liverpool). #    Invocation of the template outside topic block born(mccartney. 1942-06-12. Liverpool) 7
  6. 2    Нормативные ссылки В настоящем стандарте использованы нормативные ссылки на следующие стандарты: Официальные    названия    для наборов символов.    14    мая 2007 года,    доступно    на <http://www.iana.org/assignments/character-sets> (IANA-CHARSETS. CHARACTER SETS, Internet Assigned Numbers Authonty. 14 May 2007. available at <http://www.iana.org/assignments/character-sets>) ИСО/МЭК 13250-2:2012 Информационные технологии. Тематические карты. Часть2. Модель данных (ISO/IEC 13250-2:2006. Information technology — Topic Maps — Part 2: Data model) XSDT Схема XML Часть 2. Типы данных, второе издание, рекомендация W3C. 28 октября 2004 года, доступно по адресу: <http://www.w3.org/TR/xmlschema-2/> (XSDT. XML Schema Part 2: Datatypes Second    Edition.    W3C Recommendation.    28    October 2004,    available    at <http://www.w3.org/TR/xmlschema-2/>) IETF RFC 3986 Универсальный идентификатор ресурса (URI): общий синтаксис, спецификация интернет стандарты. январь 2005, доступно по адресу <http://www.ietf.org/rfc/rfc3986.txt> (IETF RFC 3986, Uniform Resource Identifier (URI): Genenc Syntax. Internet Standards Track Specification, January 2005. available at <http://www.ietf.org/rfc/rfc3986.txt>) IETF RFC 3987 Интернационализированные идентификаторы ресурсов (IRI), спецификация интернет стандарты, ноябрь 2005. доступно по адресу:    <http://www.ietf.org/rfc/rfc3987.txt> (IETF RFC 3987, Internationalized Resource Identifiers (IRIs), Internet Standards Track Specification, January 2005. available at <http://www.ietf.org/rfc/rfc3987.txt>) 3    Описание синтаксиса 3.1 О синтаксисе Аббревиатуру СТМ (Compact Topic Maps) часто используют для обозначения синтаксиса, определенного в настоящем стандарте. Данный раздел определяет СТМ синтаксис с помощью грамматики EBNF. основанной на отображении. описанном в XML 1.0. Он использует текстовое описание для сопоставления СТМ с ИСО/МЭК 13250-2. Полностью EBNF содержится в приложении А. Издание официальное 3.2    Десериализация Данный подраздел определяет, как экземпляры СТМ синтаксиса десериализуются в экземпляры модели данных, определенной в ИСО/МЭК 13250-2. Сериализация определена неявно, но имплементации должны производить СТМ сериализации, которые при десериализации в новый экземпляр модели данных будут производить такой экземпляр модели данных, который имеет канонизацию, аналогичную исходному экземпляру модели данных, согласно ИСО/МЭК 13250-4. Входными данными для процесса десериализации являются: —    опциональное наименование набора символов в соответствии с IANA-CHARSETS, что задает кодировку СТМ экземпляра; —    байтовый поток, который преобразуется в символьный поток с помощью следующих шагов: —    если опциональное входное название набора символов предоставлено, то кодировка устанавливается в указанное значение; —    если поток байтов начинается с EF ВВ BF (UTF-8 метка порядка байтов), то кодировка устанавливается как«ШТ-8»; —    если кодировка уже установлена в другое значение из-за опционального названия набор символов. то это является ошибкой; —    если последующие байты в потоке содержат последовательность 25 65 6Е 63 6F 64 69 6Е 67 (процентная кодировка ASCII), все последующие байты 09 или 20 пропускаются до первых считанных 22 байт. Следующая байтовая последовательность до следующего 22 байта (исключительно) интерпретируется как наименование набора символов в соответствии с IANA-CHARSETS; —    если кодировка уже установлена в другое значение, то это является ошибкой; —    если предыдущие действия не дают кодировку, она должна быть установлена как «UTF-8»; —    поток байтов преобразуется в зависимости от кодировки в Unicode так. что опциональная байтовая последовательность EF ВВ BF удаляется из начала байтового потока. Такой символьный поток обрабатывается согласно грамматике, указанной в настоящем стандарте: —    абсолютный IRI. Это ИРИ. из которого считывается поток байтов, известный как документ IRI. Такой IRI должен быть всегда предоставлен, так как это необходимо для того, чтобы назначить идентификаторы элементов тематических элементов, созданных во время десериализации. Если СТМ экземпляр не был считан из какого-либо конкретного IRI, приложение в ответе за предоставление подходящего IRI; —    абсолютный IRI, который будет использоваться для разрешения подстановочных знаков против 3.3.8; и который называется «wildcard-in». Если wildcard-iri не предоставлен, его значение берется из документа IRI; —    неотрицательное целое число, называемое «wildcard-counter». Если wildcard-counter не предоставлен. то он устанавливается в начальное значение, равное 0. Десериализация выполняется путем обработки каждого компонента СТМ источника в порядке документов. Компоненты определяются в виде текста, соответствующего синтаксической переменной EBNF. Для каждого встречающегося компонента выполняются операции, указанные в настоящем подразделе для соответствующей синтаксической переменной. Всякий раз. когда создается новый информационный элемент, все его свойства, которые имеют установленные значения, устанавливаются в начальное значение в виде пустого множества; все другие свойства инициализируются в NULL. 3.3    Распространенные синтаксические конструкции 3.3.1    Пробел Пробел (Whitespace) состоит из одного или более пробельных символов (#х20), разрывов строки, переводов строки или табуляции. Пробельный символ разрешен везде для разделения токенов (терминалов и не терминалов). 3.3.2    Комментарии Комментарии являются фрагментами потока символов, которые игнорируются СТМ процессором. Комментарии разрешены там, где разрешены пробельные символы. Многострочные комментарии разграничиваются с помощью #( и )# и могут быть вложенными. Однострочные комментарии начинаются со знака решетки (#) и продолжаются до конца текущей строки либо до конца символьного потока, в зависимости от того, что наступит раньше. 2 ГОСТ РИСО/МЭК 13250-6—2016 3.3.3    Создание IRI из строк Разделители < и > удаляются из iri-delimited; результирующая строка может представлять абсолютный или относительный IRI, который должен удовлетворять требованиям IETF RFC 3986 и IETF RFC 3987. Для создания IRI из строки следует заменить управляющую последовательность %НН на соответствующие символы и раскодировать получившуюся последовательность символов из UTF-8 в последовательность абстрактных символов Unicode. Получившаяся строка превращается в абсолютный IRI с помощью применения документа IRI. 3.3.4    Создание IRI из QName QName используются для сокращения IRI. Синтаксис QName следующий: QName вызывает создание локатора. Во время десериализации IRI, к которому привязан префикс, сцепляется с локальной частью. В результате такого процесса появляется абсолютный IRI. Если префикс не был привязан к IRI так. как указано в 3.16.1. то это является ошибкой. %prefix isbn urn:isbn: isbn:3-7026-4850-X isa book; — «Daskleme Ich bin Ich». 3.3.5    Ссылки IRI IRI ссылками являются либо QName либо IRI. Они взаимозаменяемы: везде, где IRI могут быть использованы. QName могут быть также использованы (при условии, что определен префикс). 3.3.6    Тематический идентификатор На темы ссылается идентификатор элемента, идентификатор субъекта или локатор субъекта. Во время десериализации для каждого topic-identity создается один тематический элемент. Если topic-identity является identifier, локатор создается путем сцепки документа IRI. символа # и значения identifier. Локатор добавляется к свойству (item identifiers! тематического элемента. Если topic-identity определяется идентификатором субъекта, локатор создается и добавляется к свойству (subject identifiers] тематического элемента. Если topic-identity определяется локатором субъекта, локатор создается (ведущий = не часть локатора) и добавляется к свойству (subject locators) тематического элемента. Если topic-identity определяется идентификатором элемента, локатор создается (ведущий А не часть локатора) и добавляется к свойству (item identifiers] тематического элемента. Если topic-identity определяется по wildcard, локатор, созданный в соответствии с процедурой, описанной в 3.3.8. добавляется к свойству (item identifiers] тематического элемента. Если тематический элемент, созданный через десериализацию topic-identity, равен другому тематическому элементу (см. ИСО/МЭК 13250-2. подраздел 5.3). два тематических элемента объединяются в соответствии с процедурой, приведенной в ИСО/МЭК 13250-2. Переменные должны появляться только внутри шаблонов. #    A topic referenced by the subject locator «http://www.isotopicmaps.org/» = http://www.isotopicmaps.org/. #    A topic referenced by a subject identifier http://psi.example.org/John Lennon. #    A topic with a unique item identifier. Within the CTM #    document it is not possible to reference this topic by item identifier. ? — «Atopic». #    A topic with a unique item identifier which may be #    referenced again within the topic map. ?foo — «А new. unique topic». #    Another reference to the same topic later in the document ?foo isa subject. 3.3.7    Тематические ссылки Если topic-ref определяется за счет topic-identity, то используется тематический элемент по 3.3.6. 3 Если topic-ref является embedded-topic, то создается тематический элемент. Локатор создается в соответствии с процедурой, описанной в 3.3.8, где «[» обрабатывается как anonymous-wildcard. Локатор добавляется к свойству (item identifiers] тематического элемента. Тематический элемент используется в качестве входных данных для процедуры topic-tail (3.9). 3.3.8    Создание локаторов из подстановочных знаков Если wildcard задается no anonymous-wildcard, значение счетчика подстановочных знаков увеличивается на 1. Локатор создается путем сцепки wildcard-iri, строки #$ и значения счетчика подстановочных знаков. Если wildcard задается по named-wildcard, и такой named-wildcard не был обработан до этого, значение счетчика подстановочных знаков увеличивается на 1. Локатора создается путем сцепки wildcard-iri, строки #$_, значения счетчика подстановочных знаков, символа «.» и части identifier у named-wildcard. Если named-wildcard был обработан до того, локатор, созданный в первый раз. используется повторно. 3.3.9    Область действия Конструкция область действия (scope) используется для закрепления области действия за информационным элементом. Во время десериализации каждый элемент topic-ref обрабатывается в соответствии с процедурой, описанной в 3.3.7. Такие тематические элементы собираются в набор, который присваивается в качестве значения свойства [scope] обрабатываемого заявления. 3.3.10    Материализатор Конструкция материализатор (reifier) используется, чтобы обратиться от заявления, в котором она появляется, к теме, материализующей конструкцию. Ссылкой является topic-ref. как описано в 3.3.7 Во время десериализации topic-ref превращается в тематический элемент, следуя процедуре по 3.3.7. Тематический элемент устанавливается в качестве значения свойства [reifier] обрабатываемого заявления. 3.3.11    Тип Конструкция тип (type) служит для присвоения типа информационному элементу, в котором она появляется. Тип всегда является темой, указанной с помощью topic-ref. Во время десериализации topic-ref создает тематический элемент, следуя процедуре из 3.3.7, который задается в качестве значения свойства [type] обрабатываемого информационного элемента. 3.4 Литералы 3.4.1 Общие сведения Литерал представляет собой строковое значение с опциональным типом данных. Для удобства настоящий стандарт поддерживает целые числа, десятичные дроби. IRI, даты и значения типа dateTime, которые должны быть действительными в соответствии с XSDT, напрямую. Следующие неявные типы данных связаны с вышеуказанными литералами: iri http://www.w3.Org/2001/XMLSchema#anyURI integer http://www.w3.Org/2001/XMLSchema#mteger decimal http://www.w3.Org/2001/XMLSchema#decimal ctm-integer http://psi.topicmaps.org/iso13250/ctm-mteger date http://www.w3.Org/2001/XMLSchema#date date-time http://www.w3.org/2001/XMLSchema#dateT ime string http://www.w3.Org/2001/XMLSchema#string Любой литерал может быть выражен за счет представления значения в виде строки и добавления квалификатора типа данных (АА). а также iri-ref. указывающего тип данных. 4 ГОСТ РИСО/МЭК 13250-6—2016 Если literal появляется внутри возникновения (3.10). свойство (value) возникновения устанавливается в значение литерала, а свойство [datatype] возникновения устанавливается как тип данных литерала. Если literal появляется внутри варианта (3.12). свойство (value) варианта устанавливается в значение литерала, а свойство (datatype) варианта устанавливается как тип данных литерала. Переменные должны появляться только внутри шаблонов. 42 # equivalent to 42AAxsd:integer 09-19AAxsd:gMonthDay 3.4.2 Управляющие последовательности в строках Строковые управляющие последовательности могут использоваться либо для избегания символов. которые имеют особое значение в грамматике (т. е.), либо для ввода символов, которых нет на клавиатуре. предоставляя их кодовые точки в Юникоде. СТМ процессор должен заменять двоичные последовательности, которые начинаются с обратной косой черты (\). на эквивалентные кодовые точки в Юникоде: \ становится U+005C, Установится U+0022. \п становится U+000A, \г становится U+000D и \t заменяется на U+0009. Последовательности, которые начинаются с \и и \U. представляют собой кодовые точки в Юникоде в виде шестнадцатеричного числа, где часть hexdigit ссылается на кодировку символов в Юникоде. Часть hexdigit должна быть декодирована в символ в Юникоде, который она представляет, и префиксы \и и \U и должны быть удалены из байтового потока. 3.5    Тематическая карта Компонент topicmap выступает в качестве контейнера для тематической карты и не имеет большего значения. Синтаксис выглядит следующим образом. Опциональная директива кодирования должна появиться в самом начале СТМ потока. Пробелы или какие-либо другие символы не допускаются в начале директивы кодирования (см. подробности в разделе 3). Директивы используются для определения среды для СТМ процессора. 3.6    Директива кодирования Директива кодирования определяет кодировку документа. Если декларации кодирования опущена, то должна быть использована кодировка UTF-8. если только метка порядка байтов не указывает другую кодировку (раздел 3). Наименование кодировки должно быть дано в виде строки в форме, рекомендованной IANA-CHARSETS. Разделители « не входят в наименование. Если кодировка представлена, то она должна появиться в самом начале потока символов (ни пробелы, ни какие-либо другие символы не разрешены в начале данной директивы). %encodmg «Shift-JIS» 3.7    Директива версии Директива версии указывает номер версии СТМ синтаксиса, в настоящее время — «1.0». Синтаксис выглядит следующим образом. Директива версии сообщает синтаксическому анализатору, какая версия СТМ синтаксиса будет использована во время десериализации. В настоящее время единственной допустимой версией является 1.0, как определено в настоящем стандарте. Ее использование рекомендовано для будущей совместимости. %version 1.0 3.8    Темы Конструкция тема (topic) используется для декларирования тематического элемента, присвоения ему идентификаторов и составления заявлений об этом, через присвоение имен и появлений, или вызов шаблонов, которые генерируют ассоциации (и/или дополнительные имена и появления). Она начинается с тематического идентификатора и оканчивается точкой. 5 Во время десериализации тематический элемент создается и присваивает идентификатор путем обработки topic-identity в соответствии с процедурой, описанной в 3.3.6. Если присутствует topic-tail, он обрабатывается в соответствии с процедурой, приведенной в 3.9, с созданным тематическим элементом в качестве входных данных. john-lennon. # a topic with an item identifier and nothing else lennon. mccartney. harrison. starr. # four topics on one line #    A topic defined by its subject locator = http://www.isotopicmaps.org/ —    «The ISO Topic Maps Web Site». #    A topic defined by a subject identifier http://psi.example.org/John_Lennon —    «John Lennon». #    A topic with a local identifier and a subject identifier john http://psi.example.org/John Lennon; —    «John Lennon». 3.9    Тематический хвост Тематический хвост (topic tail) используется для присвоения дополнительных идентификаторов к тематическому элементу и создания заявлений об этом. Он принимает тематический элемент в качестве входных данных. Для идентификатора субъекта, локатора субъекта или идентификатора элемента создается IRI в соответствии с процедурой, описанной в 3.3.6, и добавляется к свойству (subject identifiers], или (subject locators], или (item identifiers] тематического элемента. Если любая из этих процедур делает тему равной другому тематическому элементу (см. ИСО/МЭК 13250-2, подраздел 5.3). оба тематических элемента объединяются в соответствии с процедурой, приведенной в ИСО/МЭК 13250-2. Произведение instance-of создает отношения type-instance согласно ИСО/МЭК 13250-2, подраздел 7.2. где тема с правой стороны играет роль http://psi.topicmaps.org/iso13250/model/type. а входной тематический элемент играет роль http://psi.topicmaps.org/iso13250/model/instance. Произведение kind-of устанавливает отношения supertype-subtype согласно ИСО/МЭК 13250-2, подраздел 7.3, где входной тематический элемент играет роль http://psi.topicmaps.org/iso13250/model/ subtype, а тематический элемент с правой стороны играет роль http://psi.topicmaps.or9/iso13250/model/ supertype. 3.10    Возникновения Конструкция возникновение (occurrence) используется для добавления возникновений к тематическому элементу. Синтаксис выглядит следующим образом. Во время десериализации конструкция возникновение вызывает создание элемента возникновения и добавление его к свойству (occurrences] тематического элемента, созданного процедурой, описанной в 3.8. Paul_McCartney birthday: 1942-02-18: webpage: http://en.wikipedia.org/wiki/Paul_McCartney 3.11    Наименования Конструкция наименование (пате) используется для того, чтобы добавить наименование темы в тему. Синтаксис выглядит следующим образом. Во время десериализации конструкция наименование вызывает создание элемента наименования темы и добавление его к свойству (topic names] тематического элемента, созданного процедурой, описанной в 3.8. 6 ГОСТ Р ИСО/МЭК 13250-6—2016 Если type не указан, свойство (type] элемента наименования темы задается как тематический элемент, свойство (subject identifiers] которого содержит http://psi.topicmaps.org/iso13250/model/topic-name; если такого тематического элемента не существует, то он создается. john-lennon —    «John Lennon»;    #    Name with the default name type —    fullname: «John Winston Lennon». # Name of type fullname’ 3.12    Варианты Конструкция вариант (variant) используется для того, чтобы добавить наименование варианта в элемент наименования темы. Синтаксис выглядит следующим образом. Во время десериализации конструкция вариант вызывает создание элемента вариант и добавление его к свойству (variants] элемента наименования темы, созданного процедурой, описанной в 3.11. После того, как scope был обработан, темы в свойстве (scope] элемента наименования темы добавляются к свойству (scope] элемента наименования варианта. %prefix tm http://psi.topicmaps.org/iso13250/model/ #    a topic with a sort name variant john — «John Lennon» («lennon,john» @ trrvsort). 3.13    Ассоциации Конструкция ассоциация (association) используется для добавления ассоциаций к тематической карте. Синтаксис выглядит следующим образом. Во время десериализации элемент ассоциации создается для каждой ассоциации и добавляется к свойству (associations] элемента тематической карты. Во время десериализации элемент роли ассоциации создается для каждого role. Элемент роли добавляется к свойству (roles] элемента ассоциации. member_of(group: The_Beatles. member: JohnLennon) 3.14    Шаблоны Шаблоны являются контейнерами для произвольных тем и заявлений и предоставляют механизм для повторного использования заявлений в различных контекстах. Тело шаблона состоит из обычных тем и ассоциаций и позволяет тематическим ссылкам (3.3.7) и литералам (3.4) быть замененными на переменные. Синтаксис для шаблонов определяется следующим образом. В template-body переменные разрешены везде, где разрешены topic-refs или literals. Декларация шаблона не меняет тематическую карту до тех пор. пока шаблон не был вызван template-invocation (3.15). Если шаблон с таким же идентификатором и тем же количеством аргументов уже определен, это является ошибкой. #    Declaration of a template that sets the topic type to person’. creates an #    occurrence of type birthday’, and creates an association of type born-in’ def born($person. $date, $place) Sperson isa person; birthday: $date. born-in(person : Sperson. birthplace: Splace). end #    Invocation of the template inside a topic block mccartney born( 1942-06-12, Liverpool). #    Invocation of the template outside topic block born(mccartney. 1942-06-12. Liverpool) 7
  7. 3    Описание синтаксиса 3.1 О синтаксисе Аббревиатуру СТМ (Compact Topic Maps) часто используют для обозначения синтаксиса, определенного в настоящем стандарте. Данный раздел определяет СТМ синтаксис с помощью грамматики EBNF. основанной на отображении. описанном в XML 1.0. Он использует текстовое описание для сопоставления СТМ с ИСО/МЭК 13250-2. Полностью EBNF содержится в приложении А. Издание официальное 3.2    Десериализация Данный подраздел определяет, как экземпляры СТМ синтаксиса десериализуются в экземпляры модели данных, определенной в ИСО/МЭК 13250-2. Сериализация определена неявно, но имплементации должны производить СТМ сериализации, которые при десериализации в новый экземпляр модели данных будут производить такой экземпляр модели данных, который имеет канонизацию, аналогичную исходному экземпляру модели данных, согласно ИСО/МЭК 13250-4. Входными данными для процесса десериализации являются: —    опциональное наименование набора символов в соответствии с IANA-CHARSETS, что задает кодировку СТМ экземпляра; —    байтовый поток, который преобразуется в символьный поток с помощью следующих шагов: —    если опциональное входное название набора символов предоставлено, то кодировка устанавливается в указанное значение; —    если поток байтов начинается с EF ВВ BF (UTF-8 метка порядка байтов), то кодировка устанавливается как«ШТ-8»; —    если кодировка уже установлена в другое значение из-за опционального названия набор символов. то это является ошибкой; —    если последующие байты в потоке содержат последовательность 25 65 6Е 63 6F 64 69 6Е 67 (процентная кодировка ASCII), все последующие байты 09 или 20 пропускаются до первых считанных 22 байт. Следующая байтовая последовательность до следующего 22 байта (исключительно) интерпретируется как наименование набора символов в соответствии с IANA-CHARSETS; —    если кодировка уже установлена в другое значение, то это является ошибкой; —    если предыдущие действия не дают кодировку, она должна быть установлена как «UTF-8»; —    поток байтов преобразуется в зависимости от кодировки в Unicode так. что опциональная байтовая последовательность EF ВВ BF удаляется из начала байтового потока. Такой символьный поток обрабатывается согласно грамматике, указанной в настоящем стандарте: —    абсолютный IRI. Это ИРИ. из которого считывается поток байтов, известный как документ IRI. Такой IRI должен быть всегда предоставлен, так как это необходимо для того, чтобы назначить идентификаторы элементов тематических элементов, созданных во время десериализации. Если СТМ экземпляр не был считан из какого-либо конкретного IRI, приложение в ответе за предоставление подходящего IRI; —    абсолютный IRI, который будет использоваться для разрешения подстановочных знаков против 3.3.8; и который называется «wildcard-in». Если wildcard-iri не предоставлен, его значение берется из документа IRI; —    неотрицательное целое число, называемое «wildcard-counter». Если wildcard-counter не предоставлен. то он устанавливается в начальное значение, равное 0. Десериализация выполняется путем обработки каждого компонента СТМ источника в порядке документов. Компоненты определяются в виде текста, соответствующего синтаксической переменной EBNF. Для каждого встречающегося компонента выполняются операции, указанные в настоящем подразделе для соответствующей синтаксической переменной. Всякий раз. когда создается новый информационный элемент, все его свойства, которые имеют установленные значения, устанавливаются в начальное значение в виде пустого множества; все другие свойства инициализируются в NULL. 3.3    Распространенные синтаксические конструкции 3.3.1    Пробел Пробел (Whitespace) состоит из одного или более пробельных символов (#х20), разрывов строки, переводов строки или табуляции. Пробельный символ разрешен везде для разделения токенов (терминалов и не терминалов). 3.3.2    Комментарии Комментарии являются фрагментами потока символов, которые игнорируются СТМ процессором. Комментарии разрешены там, где разрешены пробельные символы. Многострочные комментарии разграничиваются с помощью #( и )# и могут быть вложенными. Однострочные комментарии начинаются со знака решетки (#) и продолжаются до конца текущей строки либо до конца символьного потока, в зависимости от того, что наступит раньше. 2 ГОСТ РИСО/МЭК 13250-6—2016 3.3.3    Создание IRI из строк Разделители < и > удаляются из iri-delimited; результирующая строка может представлять абсолютный или относительный IRI, который должен удовлетворять требованиям IETF RFC 3986 и IETF RFC 3987. Для создания IRI из строки следует заменить управляющую последовательность %НН на соответствующие символы и раскодировать получившуюся последовательность символов из UTF-8 в последовательность абстрактных символов Unicode. Получившаяся строка превращается в абсолютный IRI с помощью применения документа IRI. 3.3.4    Создание IRI из QName QName используются для сокращения IRI. Синтаксис QName следующий: QName вызывает создание локатора. Во время десериализации IRI, к которому привязан префикс, сцепляется с локальной частью. В результате такого процесса появляется абсолютный IRI. Если префикс не был привязан к IRI так. как указано в 3.16.1. то это является ошибкой. %prefix isbn urn:isbn: isbn:3-7026-4850-X isa book; — «Daskleme Ich bin Ich». 3.3.5    Ссылки IRI IRI ссылками являются либо QName либо IRI. Они взаимозаменяемы: везде, где IRI могут быть использованы. QName могут быть также использованы (при условии, что определен префикс). 3.3.6    Тематический идентификатор На темы ссылается идентификатор элемента, идентификатор субъекта или локатор субъекта. Во время десериализации для каждого topic-identity создается один тематический элемент. Если topic-identity является identifier, локатор создается путем сцепки документа IRI. символа # и значения identifier. Локатор добавляется к свойству (item identifiers! тематического элемента. Если topic-identity определяется идентификатором субъекта, локатор создается и добавляется к свойству (subject identifiers] тематического элемента. Если topic-identity определяется локатором субъекта, локатор создается (ведущий = не часть локатора) и добавляется к свойству (subject locators) тематического элемента. Если topic-identity определяется идентификатором элемента, локатор создается (ведущий А не часть локатора) и добавляется к свойству (item identifiers] тематического элемента. Если topic-identity определяется по wildcard, локатор, созданный в соответствии с процедурой, описанной в 3.3.8. добавляется к свойству (item identifiers] тематического элемента. Если тематический элемент, созданный через десериализацию topic-identity, равен другому тематическому элементу (см. ИСО/МЭК 13250-2. подраздел 5.3). два тематических элемента объединяются в соответствии с процедурой, приведенной в ИСО/МЭК 13250-2. Переменные должны появляться только внутри шаблонов. #    A topic referenced by the subject locator «http://www.isotopicmaps.org/» = http://www.isotopicmaps.org/. #    A topic referenced by a subject identifier http://psi.example.org/John Lennon. #    A topic with a unique item identifier. Within the CTM #    document it is not possible to reference this topic by item identifier. ? — «Atopic». #    A topic with a unique item identifier which may be #    referenced again within the topic map. ?foo — «А new. unique topic». #    Another reference to the same topic later in the document ?foo isa subject. 3.3.7    Тематические ссылки Если topic-ref определяется за счет topic-identity, то используется тематический элемент по 3.3.6. 3 Если topic-ref является embedded-topic, то создается тематический элемент. Локатор создается в соответствии с процедурой, описанной в 3.3.8, где «[» обрабатывается как anonymous-wildcard. Локатор добавляется к свойству (item identifiers] тематического элемента. Тематический элемент используется в качестве входных данных для процедуры topic-tail (3.9). 3.3.8    Создание локаторов из подстановочных знаков Если wildcard задается no anonymous-wildcard, значение счетчика подстановочных знаков увеличивается на 1. Локатор создается путем сцепки wildcard-iri, строки #$ и значения счетчика подстановочных знаков. Если wildcard задается по named-wildcard, и такой named-wildcard не был обработан до этого, значение счетчика подстановочных знаков увеличивается на 1. Локатора создается путем сцепки wildcard-iri, строки #$_, значения счетчика подстановочных знаков, символа «.» и части identifier у named-wildcard. Если named-wildcard был обработан до того, локатор, созданный в первый раз. используется повторно. 3.3.9    Область действия Конструкция область действия (scope) используется для закрепления области действия за информационным элементом. Во время десериализации каждый элемент topic-ref обрабатывается в соответствии с процедурой, описанной в 3.3.7. Такие тематические элементы собираются в набор, который присваивается в качестве значения свойства [scope] обрабатываемого заявления. 3.3.10    Материализатор Конструкция материализатор (reifier) используется, чтобы обратиться от заявления, в котором она появляется, к теме, материализующей конструкцию. Ссылкой является topic-ref. как описано в 3.3.7 Во время десериализации topic-ref превращается в тематический элемент, следуя процедуре по 3.3.7. Тематический элемент устанавливается в качестве значения свойства [reifier] обрабатываемого заявления. 3.3.11    Тип Конструкция тип (type) служит для присвоения типа информационному элементу, в котором она появляется. Тип всегда является темой, указанной с помощью topic-ref. Во время десериализации topic-ref создает тематический элемент, следуя процедуре из 3.3.7, который задается в качестве значения свойства [type] обрабатываемого информационного элемента. 3.4 Литералы 3.4.1 Общие сведения Литерал представляет собой строковое значение с опциональным типом данных. Для удобства настоящий стандарт поддерживает целые числа, десятичные дроби. IRI, даты и значения типа dateTime, которые должны быть действительными в соответствии с XSDT, напрямую. Следующие неявные типы данных связаны с вышеуказанными литералами: iri http://www.w3.Org/2001/XMLSchema#anyURI integer http://www.w3.Org/2001/XMLSchema#mteger decimal http://www.w3.Org/2001/XMLSchema#decimal ctm-integer http://psi.topicmaps.org/iso13250/ctm-mteger date http://www.w3.Org/2001/XMLSchema#date date-time http://www.w3.org/2001/XMLSchema#dateT ime string http://www.w3.Org/2001/XMLSchema#string Любой литерал может быть выражен за счет представления значения в виде строки и добавления квалификатора типа данных (АА). а также iri-ref. указывающего тип данных. 4 ГОСТ РИСО/МЭК 13250-6—2016 Если literal появляется внутри возникновения (3.10). свойство (value) возникновения устанавливается в значение литерала, а свойство [datatype] возникновения устанавливается как тип данных литерала. Если literal появляется внутри варианта (3.12). свойство (value) варианта устанавливается в значение литерала, а свойство (datatype) варианта устанавливается как тип данных литерала. Переменные должны появляться только внутри шаблонов. 42 # equivalent to 42AAxsd:integer 09-19AAxsd:gMonthDay 3.4.2 Управляющие последовательности в строках Строковые управляющие последовательности могут использоваться либо для избегания символов. которые имеют особое значение в грамматике (т. е.), либо для ввода символов, которых нет на клавиатуре. предоставляя их кодовые точки в Юникоде. СТМ процессор должен заменять двоичные последовательности, которые начинаются с обратной косой черты (\). на эквивалентные кодовые точки в Юникоде: \ становится U+005C, Установится U+0022. \п становится U+000A, \г становится U+000D и \t заменяется на U+0009. Последовательности, которые начинаются с \и и \U. представляют собой кодовые точки в Юникоде в виде шестнадцатеричного числа, где часть hexdigit ссылается на кодировку символов в Юникоде. Часть hexdigit должна быть декодирована в символ в Юникоде, который она представляет, и префиксы \и и \U и должны быть удалены из байтового потока. 3.5    Тематическая карта Компонент topicmap выступает в качестве контейнера для тематической карты и не имеет большего значения. Синтаксис выглядит следующим образом. Опциональная директива кодирования должна появиться в самом начале СТМ потока. Пробелы или какие-либо другие символы не допускаются в начале директивы кодирования (см. подробности в разделе 3). Директивы используются для определения среды для СТМ процессора. 3.6    Директива кодирования Директива кодирования определяет кодировку документа. Если декларации кодирования опущена, то должна быть использована кодировка UTF-8. если только метка порядка байтов не указывает другую кодировку (раздел 3). Наименование кодировки должно быть дано в виде строки в форме, рекомендованной IANA-CHARSETS. Разделители « не входят в наименование. Если кодировка представлена, то она должна появиться в самом начале потока символов (ни пробелы, ни какие-либо другие символы не разрешены в начале данной директивы). %encodmg «Shift-JIS» 3.7    Директива версии Директива версии указывает номер версии СТМ синтаксиса, в настоящее время — «1.0». Синтаксис выглядит следующим образом. Директива версии сообщает синтаксическому анализатору, какая версия СТМ синтаксиса будет использована во время десериализации. В настоящее время единственной допустимой версией является 1.0, как определено в настоящем стандарте. Ее использование рекомендовано для будущей совместимости. %version 1.0 3.8    Темы Конструкция тема (topic) используется для декларирования тематического элемента, присвоения ему идентификаторов и составления заявлений об этом, через присвоение имен и появлений, или вызов шаблонов, которые генерируют ассоциации (и/или дополнительные имена и появления). Она начинается с тематического идентификатора и оканчивается точкой. 5 Во время десериализации тематический элемент создается и присваивает идентификатор путем обработки topic-identity в соответствии с процедурой, описанной в 3.3.6. Если присутствует topic-tail, он обрабатывается в соответствии с процедурой, приведенной в 3.9, с созданным тематическим элементом в качестве входных данных. john-lennon. # a topic with an item identifier and nothing else lennon. mccartney. harrison. starr. # four topics on one line #    A topic defined by its subject locator = http://www.isotopicmaps.org/ —    «The ISO Topic Maps Web Site». #    A topic defined by a subject identifier http://psi.example.org/John_Lennon —    «John Lennon». #    A topic with a local identifier and a subject identifier john http://psi.example.org/John Lennon; —    «John Lennon». 3.9    Тематический хвост Тематический хвост (topic tail) используется для присвоения дополнительных идентификаторов к тематическому элементу и создания заявлений об этом. Он принимает тематический элемент в качестве входных данных. Для идентификатора субъекта, локатора субъекта или идентификатора элемента создается IRI в соответствии с процедурой, описанной в 3.3.6, и добавляется к свойству (subject identifiers], или (subject locators], или (item identifiers] тематического элемента. Если любая из этих процедур делает тему равной другому тематическому элементу (см. ИСО/МЭК 13250-2, подраздел 5.3). оба тематических элемента объединяются в соответствии с процедурой, приведенной в ИСО/МЭК 13250-2. Произведение instance-of создает отношения type-instance согласно ИСО/МЭК 13250-2, подраздел 7.2. где тема с правой стороны играет роль http://psi.topicmaps.org/iso13250/model/type. а входной тематический элемент играет роль http://psi.topicmaps.org/iso13250/model/instance. Произведение kind-of устанавливает отношения supertype-subtype согласно ИСО/МЭК 13250-2, подраздел 7.3, где входной тематический элемент играет роль http://psi.topicmaps.org/iso13250/model/ subtype, а тематический элемент с правой стороны играет роль http://psi.topicmaps.or9/iso13250/model/ supertype. 3.10    Возникновения Конструкция возникновение (occurrence) используется для добавления возникновений к тематическому элементу. Синтаксис выглядит следующим образом. Во время десериализации конструкция возникновение вызывает создание элемента возникновения и добавление его к свойству (occurrences] тематического элемента, созданного процедурой, описанной в 3.8. Paul_McCartney birthday: 1942-02-18: webpage: http://en.wikipedia.org/wiki/Paul_McCartney 3.11    Наименования Конструкция наименование (пате) используется для того, чтобы добавить наименование темы в тему. Синтаксис выглядит следующим образом. Во время десериализации конструкция наименование вызывает создание элемента наименования темы и добавление его к свойству (topic names] тематического элемента, созданного процедурой, описанной в 3.8. 6 ГОСТ Р ИСО/МЭК 13250-6—2016 Если type не указан, свойство (type] элемента наименования темы задается как тематический элемент, свойство (subject identifiers] которого содержит http://psi.topicmaps.org/iso13250/model/topic-name; если такого тематического элемента не существует, то он создается. john-lennon —    «John Lennon»;    #    Name with the default name type —    fullname: «John Winston Lennon». # Name of type fullname’ 3.12    Варианты Конструкция вариант (variant) используется для того, чтобы добавить наименование варианта в элемент наименования темы. Синтаксис выглядит следующим образом. Во время десериализации конструкция вариант вызывает создание элемента вариант и добавление его к свойству (variants] элемента наименования темы, созданного процедурой, описанной в 3.11. После того, как scope был обработан, темы в свойстве (scope] элемента наименования темы добавляются к свойству (scope] элемента наименования варианта. %prefix tm http://psi.topicmaps.org/iso13250/model/ #    a topic with a sort name variant john — «John Lennon» («lennon,john» @ trrvsort). 3.13    Ассоциации Конструкция ассоциация (association) используется для добавления ассоциаций к тематической карте. Синтаксис выглядит следующим образом. Во время десериализации элемент ассоциации создается для каждой ассоциации и добавляется к свойству (associations] элемента тематической карты. Во время десериализации элемент роли ассоциации создается для каждого role. Элемент роли добавляется к свойству (roles] элемента ассоциации. member_of(group: The_Beatles. member: JohnLennon) 3.14    Шаблоны Шаблоны являются контейнерами для произвольных тем и заявлений и предоставляют механизм для повторного использования заявлений в различных контекстах. Тело шаблона состоит из обычных тем и ассоциаций и позволяет тематическим ссылкам (3.3.7) и литералам (3.4) быть замененными на переменные. Синтаксис для шаблонов определяется следующим образом. В template-body переменные разрешены везде, где разрешены topic-refs или literals. Декларация шаблона не меняет тематическую карту до тех пор. пока шаблон не был вызван template-invocation (3.15). Если шаблон с таким же идентификатором и тем же количеством аргументов уже определен, это является ошибкой. #    Declaration of a template that sets the topic type to person’. creates an #    occurrence of type birthday’, and creates an association of type born-in’ def born($person. $date, $place) Sperson isa person; birthday: $date. born-in(person : Sperson. birthplace: Splace). end #    Invocation of the template inside a topic block mccartney born( 1942-06-12, Liverpool). #    Invocation of the template outside topic block born(mccartney. 1942-06-12. Liverpool) 7

Информационная технология ТЕМАТИЧЕСКИЕ КАРТЫ

Часть 6

Компактный синтаксис

(ISO/IEC 13250-6:2010, ЮТ)

Издание официальное

Москва

Стандартинформ

2016

Предисловие

1    ПОДГОТОВЛЕН Федеральным государственным унитарным предприятием Государственный научно-исследовательский и конструкторско-технологический институт «ТЕСТ» (ФГУП ГосНИИ «ТЕСТ»), Обществом с ограниченной ответственностью «Информационно-аналитический центр» (ООО ИАВЦ) на основе собственного аутентичного перевода на русский язык англоязычной версии международного стандарта, указанного в пункте 4

2    ВНЕСЕН Техническим комитетом по стандартизации ТК 22 «Информационные технологии»

3    УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 1 ноября 2016 г. № 1546-ст

4    Настоящий стандарт идентичен международному стандарту ИСО/МЭК 13250-6:2010 «Информационная технология. Тематические карты. Часть 6. Компактный синтаксис» (ISO/IEC 13250-6:2010 «Information technology — Topic Maps — Part 6: Compact syntax», IDT).

При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов соответствующие им национальные стандарты Российской Федерации, сведения о которых приведены в дополнительном приложении ДА

5    ВВЕДЕН ВПЕРВЫЕ

Правипа применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. № 162—ФЗ «О стандартизации в Российской Федерации». Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе «Национальные стандарты», а официальный текст изменений и поправок — в ежемесячном информационном указателе «Национальные стандарты». В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому ругулированию и метрологии в сети Интернет (www.gost.ru)

©Стандартинформ. 2016

Настоящий стандарт не может быть полностью или частично воспроизведен, тиражирован и распространен в качестве официального издания без разрешения Федерального агентства по техническому регулированию и метрологии

# Both of the above have the same effect as the following mccartney isa person;

birthday: 1942-06-12. born-in(person: mccartney, birthplace: Liverpool)

Если named-wildcard используется внутри тела шаблона, он доступен только внутри шаблона. Каждый раз. когда шаблон вызывается, named-wildcard вызывает создание темы. Это должно быть обработано по-другому.

Наименования шаблонов и identifiers темы имеют разные пространства имен. Если существует шаблон с именем А, то все еще возможно задекларировать тему с идентификатором А.

3.15 Вызов шаблона

Для вызова шаблона необходимо выполнить следующие действия:

—    если в вызов шаблона происходит внутри topic-tail (3.9), следует вставить topic-identity темы, которая была использована в качестве первого аргумента входных данных;

—    осуществить поиск определения шаблона с template-name и количеством предоставленных arguments. Если такой шаблон не определен, то это является ошибкой;

—    привязать каждую переменную шаблона к аргументу согласно позиции аргумента (первая переменная связывается с первым аргументом и т. д.);

—    добавить каждое заявление тела шаблона к тематической карте так. чтобы любая переменная была заменена аргументом привязки.

Примечание — Внутри шаблонов можно сослаться на другие шаблоны, которые еще не были определены (ссылка вперед). Если шаблон вызывается, то шаблоны, на которые он ссылается, должны быть определены. Пример 1

U Template invocation within a topic declaration mccartney

plays-for(The_Beatles, piano); has-shoosize(42).

U Template invocation outsido of topic declarations plays-for(john, The_Boatlos, guitar) has-shoesizo(john, 45)

Пример 2 — Смысл iri-ref зависит от контекста

def wiki-entry(Siri. Sname)

Siri    tt    Used    as    subject identifier

Sname;

description: Siri. It Used as occurrence value end

wiki-entry(<http://en.wikipedia.org/wiki/John_Lennon>, «John Lennon»)

ft The following template invocation fails, because a subject locator is U provided which cannot be used as value of an occurrence.

wiki-entry(=<http j/en. wikipedia.org/wiki/Paul_McCartney>, «Sir Paul McCartney») It -> Error!

Пример 3 — Шаблоны могут использоваться для того, чтобы «украсить» другие шаблоны

dof is-boatlo(Sboatlo) is-mombor-of(Sboatlo. Tho-Boatlos) ond

dof is-mombor-of(Smembor, Sgroup) mombor-offmombor: Smombor, group: Sgroup) end

8

ГОСТ РИСО/МЭК 13250-6—2016

is-member-of(sting, The-Police) U Invoking the ‘raw’is-member-of template

is-beatle(john).

3.16 Директивы

3.16.1    Префикс директива

Префикс директива используется для ассоциации IRI с идентификатором. Синтаксис выглядит следующим образом.

Во время десериализации префикс компонент связывает identifier с IRI.

Если identifier уже связан, то это является ошибкой, если только identifier не привязан к одному и тому же reference.

Если сцепка iri и local части QName создает недопустимый IRI, то это является ошибкой.

%prefix wiki http://en.wikipedia.org/wiki/

wiki:John_Lennon    # QName used as a subject identifier

—    «John Lennon».

3.16.2    Директива включения

Директива include используется для того, чтобы включить другой СТМ источник в обрабатываемый СТМ экземпляр. В качестве ссылки на другой источник используется IRI.

IRI внешнего ресурса информационного, обозначенный с помощью in-ref. разрешается, и ресурс анализируется СТМ процессором по правилам, определенным настоящим стандартом, принимая предоставленный iri — ref в виде документа IRI в качестве входных данных. Далее происходит инициализация wildcard-iri СТМ процессора с документом IRI этого СТМ источника и счетчик подстановочных знаков устанавливается в начальное с текущим значением счетчика подстановочных знаков.

Если информационный ресурс не является допустимым СТМ ресурсом, то это является ошибкой.

Новый экземпляр модели данных (В) затем объединяется в текущий (А) путем:

—    итерации всех тематических элементов в свойстве В (topics] и выявления тех тем. которые содержат локаторы в их [item identifiers), значение строки которых начинается с документа IRI В.

Для каждого из этих идентификаторов элементов создается строка S путем вычитания значения строки документа IRI В из значения строки идентификатора элемента. Строка S разрешается относительно документа IRI А. Полученная строка добавляется к свойству (item identifiers] темы;

—    добавления всех тематических элементов свойства В [topics] к свойству A (topics);

—    добавления всех элементов ассоциаций свойства В [associations] к свойству A [associations].

Примечание — Добавление тем и ассоциаций кА может привести к дальнейшим слияниям, какописано в ИСО/М ЭК 13250-2.

Текущее значение счетчика подстановочных знаков устанавливается равным значению счетчика подстановочных знаков процессора, который был ответственен за создание экземпляра модели данных (В).

Все шаблоны импортируются и могут быть использованы текущим СТМ символьным потоком так. как они были объявлены при их включении.

3.16.3    Директива mergemap

Директива mergemap используется для того, чтобы объединить внешнюю тематическую карту в тематическую карту, произведенную путем десериализации СТМ тематической карты.

Синтаксис директивы mergemap выглядит следующим образом:

Настоящий стандарт предписывает, что каждый соответствующий требованиям СТМ процессор должен поддерживать следующие синтаксисы.

http://psi.topicmaps.org/iso13250/ctm

Идентификатор для Compact Topic Maps Syntax (СТМ). описанный в настоящем стандарте.

http://psi.topicmaps.org/iso13250/xtm

Идентификатор для XML Topic Maps Syntax (ХТМ), описанный в ИСО/МЭК13250-3.

9

Помимо нормативного синтаксиса, упомянутого выше. СТМ процессор может поддерживать и другие синтаксисы. Если notation не поддерживается СТМ процессором, то это является ошибкой.

Во время десериализации компонент mergemap вызывает немедленную десериализацию ссылочной тематической карты в экземпляр модели данных. Новый экземпляр модели данных (В) затем объединяется в текущий (А) путем:

—    добавления всех тематических элементов свойства В [topics] к свойству A [topics];

—    добавления всех элементов ассоциаций свойства В [associations] к свойству A [associations).

Примечание — Добавление тем и ассоциаций к А можег привести к дальнейшим слияниям, как описано в ИСО/МЭК 13250-2.

10

ГОСТ РИСО/МЭК 13250-6—2016

Приложение А (справочное)

Целое число СТМ

В настоящем приложении приведено описание XML схемы для ctirvinteger (http://psi.top»cmaps.orgfeo13250/ctm-integer).

«simpleType»

<union>

<simpleType>

«restriction base=’nonNegativelnteger’/>

</simpleType>

<simpleType>

«restriction base-string’»

«enumeration value=‘*7>

«/restriction»

«/simpleType»

«/union»

«/simpleType»

11

ГОСТ Р ИСО/МЭК 13250-6—2016

Приложение В (справочное)

Синтаксис

Синтаксис ядра и общий синтаксиса (commodity syntax) будет вставлен через XSLT.

12

ГОСТ РИСО/МЭК 13250-е—2016

Приложонио ДА (справочное)

Сведения о соответствии ссылочных международных стандартов национальным стандартам

Российской Федерации

Таблица ДА.1

Обозначение ссылочного международного стандарта

Степень соответствия

Обозначение и наименование соответствующего национального стандарта

ISO/IEC 13250-2:2006

ЮТ

ГОСТ Р ИСО/МЭК 13250-2—2012 «Информационная технология. Тематические карты. Часть 2. Модель данных»

Примечание — В настоящей таблице использовано следующее условное обозначение степени соответствия стандартов;

— ЮТ — идентичные стандарты.

13

ГОСТ РИСО/МЭК 13250-6—2016

Содержание

1    Область применения……………………………………………1

2    Нормативные ссылки…………………………………………..1

3    Описание синтаксиса…………………………………………..1

3.1    О синтаксисе……………………………………………..1

3.2    Десериализация……………………………………………2

3.3    Распространенные синтаксические конструкции………………………….2

3.4    Литералы……………………………………………….4

3.5    Тематическая карта………………………………………….5

3.6    Директива кодирования……………………………………….5

3.7    Директива версии…………………………………………..5

3.8    Темы………………………………………………….5

3.9    Тематический хвост………………………………………….6

3.10    Возникновения……………………………………………6

3.11    Наименования……………………………………………6

3.12    Варианты………………………………………………7

3.13    Ассоциации……………………………………………..7

3.14    Шаблоны……………………………………………….7

3.15    Вызов шаблона……………………………………………8

3.16    Директивы………………………………………………9

Приложение А (справочное)    Целое число СТМ……………………………..11

Приложение В (справочное)    Синтаксис…………………………………12

Приложение ДА (справочное) Сведения о соответствии ссылочных международных стандартов

национальным стандартам Российской Федерации…………………13

Библиография………………………………………………..14

III

НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

Информационная технология

ТЕМАТИЧЕСКИЕ КАРТЫ

Часть 6 Компактный синтаксис

Information technology. Topic maps. Part 6. Compact syntax

Дата введения — 2017—09—01

1 Область применения

Настоящий стандарт определяет текстовое отображение для представления экземпляров модели данных, определенной в ИСО/МЭК 13250-2. Настоящий стандарт также определяет сопоставление такого отображения с моделью данных. Синтаксис описан с помощью грамматики расширенной Бэкус-Науровой формы (РБНФ).

2    Нормативные ссылки

В настоящем стандарте использованы нормативные ссылки на следующие стандарты: Официальные    названия    для наборов символов.    14    мая 2007 года,    доступно    на

<http://www.iana.org/assignments/character-sets> (IANA-CHARSETS. CHARACTER SETS, Internet Assigned Numbers Authonty. 14 May 2007. available at <http://www.iana.org/assignments/character-sets>) ИСО/МЭК 13250-2:2012 Информационные технологии. Тематические карты. Часть2. Модель данных (ISO/IEC 13250-2:2006. Information technology — Topic Maps — Part 2: Data model)

XSDT Схема XML Часть 2. Типы данных, второе издание, рекомендация W3C. 28 октября 2004 года, доступно по адресу: <http://www.w3.org/TR/xmlschema-2/> (XSDT. XML Schema Part 2: Datatypes Second    Edition.    W3C Recommendation.    28    October 2004,    available    at

<http://www.w3.org/TR/xmlschema-2/>)

IETF RFC 3986 Универсальный идентификатор ресурса (URI): общий синтаксис, спецификация интернет стандарты. январь 2005, доступно по адресу <http://www.ietf.org/rfc/rfc3986.txt> (IETF RFC 3986, Uniform Resource Identifier (URI): Genenc Syntax. Internet Standards Track Specification, January 2005. available at <http://www.ietf.org/rfc/rfc3986.txt>)

IETF RFC 3987 Интернационализированные идентификаторы ресурсов (IRI), спецификация интернет стандарты, ноябрь 2005. доступно по адресу:    <http://www.ietf.org/rfc/rfc3987.txt>

(IETF RFC 3987, Internationalized Resource Identifiers (IRIs), Internet Standards Track Specification, January 2005. available at <http://www.ietf.org/rfc/rfc3987.txt>)

3    Описание синтаксиса

3.1 О синтаксисе

Аббревиатуру СТМ (Compact Topic Maps) часто используют для обозначения синтаксиса, определенного в настоящем стандарте.

Данный раздел определяет СТМ синтаксис с помощью грамматики EBNF. основанной на отображении. описанном в XML 1.0. Он использует текстовое описание для сопоставления СТМ с ИСО/МЭК 13250-2. Полностью EBNF содержится в приложении А.

Издание официальное

3.2    Десериализация

Данный подраздел определяет, как экземпляры СТМ синтаксиса десериализуются в экземпляры модели данных, определенной в ИСО/МЭК 13250-2. Сериализация определена неявно, но имплементации должны производить СТМ сериализации, которые при десериализации в новый экземпляр модели данных будут производить такой экземпляр модели данных, который имеет канонизацию, аналогичную исходному экземпляру модели данных, согласно ИСО/МЭК 13250-4.

Входными данными для процесса десериализации являются:

—    опциональное наименование набора символов в соответствии с IANA-CHARSETS, что задает кодировку СТМ экземпляра;

—    байтовый поток, который преобразуется в символьный поток с помощью следующих шагов:

—    если опциональное входное название набора символов предоставлено, то кодировка устанавливается в указанное значение;

—    если поток байтов начинается с EF ВВ BF (UTF-8 метка порядка байтов), то кодировка устанавливается как«ШТ-8»;

—    если кодировка уже установлена в другое значение из-за опционального названия набор символов. то это является ошибкой;

—    если последующие байты в потоке содержат последовательность 25 65 6Е 63 6F 64 69 6Е 67 (процентная кодировка ASCII), все последующие байты 09 или 20 пропускаются до первых считанных 22 байт. Следующая байтовая последовательность до следующего 22 байта (исключительно) интерпретируется как наименование набора символов в соответствии с IANA-CHARSETS;

—    если кодировка уже установлена в другое значение, то это является ошибкой;

—    если предыдущие действия не дают кодировку, она должна быть установлена как «UTF-8»;

—    поток байтов преобразуется в зависимости от кодировки в Unicode так. что опциональная байтовая последовательность EF ВВ BF удаляется из начала байтового потока.

Такой символьный поток обрабатывается согласно грамматике, указанной в настоящем стандарте:

—    абсолютный IRI. Это ИРИ. из которого считывается поток байтов, известный как документ IRI. Такой IRI должен быть всегда предоставлен, так как это необходимо для того, чтобы назначить идентификаторы элементов тематических элементов, созданных во время десериализации. Если СТМ экземпляр не был считан из какого-либо конкретного IRI, приложение в ответе за предоставление подходящего IRI;

—    абсолютный IRI, который будет использоваться для разрешения подстановочных знаков против 3.3.8; и который называется «wildcard-in». Если wildcard-iri не предоставлен, его значение берется из документа IRI;

—    неотрицательное целое число, называемое «wildcard-counter». Если wildcard-counter не предоставлен. то он устанавливается в начальное значение, равное 0.

Десериализация выполняется путем обработки каждого компонента СТМ источника в порядке документов. Компоненты определяются в виде текста, соответствующего синтаксической переменной EBNF. Для каждого встречающегося компонента выполняются операции, указанные в настоящем подразделе для соответствующей синтаксической переменной.

Всякий раз. когда создается новый информационный элемент, все его свойства, которые имеют установленные значения, устанавливаются в начальное значение в виде пустого множества; все другие свойства инициализируются в NULL.

3.3    Распространенные синтаксические конструкции

3.3.1    Пробел

Пробел (Whitespace) состоит из одного или более пробельных символов (#х20), разрывов строки, переводов строки или табуляции.

Пробельный символ разрешен везде для разделения токенов (терминалов и не терминалов).

3.3.2    Комментарии

Комментарии являются фрагментами потока символов, которые игнорируются СТМ процессором. Комментарии разрешены там, где разрешены пробельные символы.

Многострочные комментарии разграничиваются с помощью #( и )# и могут быть вложенными.

Однострочные комментарии начинаются со знака решетки (#) и продолжаются до конца текущей строки либо до конца символьного потока, в зависимости от того, что наступит раньше.

2

ГОСТ РИСО/МЭК 13250-6—2016

3.3.3    Создание IRI из строк

Разделители < и > удаляются из iri-delimited; результирующая строка может представлять абсолютный или относительный IRI, который должен удовлетворять требованиям IETF RFC 3986 и IETF RFC 3987.

Для создания IRI из строки следует заменить управляющую последовательность %НН на соответствующие символы и раскодировать получившуюся последовательность символов из UTF-8 в последовательность абстрактных символов Unicode. Получившаяся строка превращается в абсолютный IRI с помощью применения документа IRI.

3.3.4    Создание IRI из QName

QName используются для сокращения IRI. Синтаксис QName следующий:

QName вызывает создание локатора. Во время десериализации IRI, к которому привязан префикс, сцепляется с локальной частью. В результате такого процесса появляется абсолютный IRI.

Если префикс не был привязан к IRI так. как указано в 3.16.1. то это является ошибкой.

%prefix isbn urn:isbn: isbn:3-7026-4850-X isa book;

— «Daskleme Ich bin Ich».

3.3.5    Ссылки IRI

IRI ссылками являются либо QName либо IRI. Они взаимозаменяемы: везде, где IRI могут быть использованы. QName могут быть также использованы (при условии, что определен префикс).

3.3.6    Тематический идентификатор

На темы ссылается идентификатор элемента, идентификатор субъекта или локатор субъекта.

Во время десериализации для каждого topic-identity создается один тематический элемент.

Если topic-identity является identifier, локатор создается путем сцепки документа IRI. символа # и значения identifier. Локатор добавляется к свойству (item identifiers! тематического элемента.

Если topic-identity определяется идентификатором субъекта, локатор создается и добавляется к свойству (subject identifiers] тематического элемента.

Если topic-identity определяется локатором субъекта, локатор создается (ведущий = не часть локатора) и добавляется к свойству (subject locators) тематического элемента.

Если topic-identity определяется идентификатором элемента, локатор создается (ведущий А не часть локатора) и добавляется к свойству (item identifiers] тематического элемента.

Если topic-identity определяется по wildcard, локатор, созданный в соответствии с процедурой, описанной в 3.3.8. добавляется к свойству (item identifiers] тематического элемента.

Если тематический элемент, созданный через десериализацию topic-identity, равен другому тематическому элементу (см. ИСО/МЭК 13250-2. подраздел 5.3). два тематических элемента объединяются в соответствии с процедурой, приведенной в ИСО/МЭК 13250-2.

Переменные должны появляться только внутри шаблонов.

#    A topic referenced by the subject locator «http://www.isotopicmaps.org/»

= http://www.isotopicmaps.org/.

#    A topic referenced by a subject identifier http://psi.example.org/John Lennon.

#    A topic with a unique item identifier. Within the CTM

#    document it is not possible to reference this topic by item identifier.

? — «Atopic».

#    A topic with a unique item identifier which may be

#    referenced again within the topic map.

?foo — «А new. unique topic».

#    Another reference to the same topic later in the document ?foo isa subject.

3.3.7    Тематические ссылки

Если topic-ref определяется за счет topic-identity, то используется тематический элемент по 3.3.6.

3

Если topic-ref является embedded-topic, то создается тематический элемент. Локатор создается в соответствии с процедурой, описанной в 3.3.8, где «[» обрабатывается как anonymous-wildcard. Локатор добавляется к свойству (item identifiers] тематического элемента. Тематический элемент используется в качестве входных данных для процедуры topic-tail (3.9).

3.3.8    Создание локаторов из подстановочных знаков

Если wildcard задается no anonymous-wildcard, значение счетчика подстановочных знаков увеличивается на 1. Локатор создается путем сцепки wildcard-iri, строки #$ и значения счетчика подстановочных знаков.

Если wildcard задается по named-wildcard, и такой named-wildcard не был обработан до этого, значение счетчика подстановочных знаков увеличивается на 1. Локатора создается путем сцепки

wildcard-iri, строки #$_, значения счетчика подстановочных знаков, символа «.» и части identifier у

named-wildcard.

Если named-wildcard был обработан до того, локатор, созданный в первый раз. используется повторно.

3.3.9    Область действия

Конструкция область действия (scope) используется для закрепления области действия за информационным элементом.

Во время десериализации каждый элемент topic-ref обрабатывается в соответствии с процедурой, описанной в 3.3.7. Такие тематические элементы собираются в набор, который присваивается в качестве значения свойства [scope] обрабатываемого заявления.

3.3.10    Материализатор

Конструкция материализатор (reifier) используется, чтобы обратиться от заявления, в котором она появляется, к теме, материализующей конструкцию. Ссылкой является topic-ref. как описано в 3.3.7

Во время десериализации topic-ref превращается в тематический элемент, следуя процедуре по 3.3.7. Тематический элемент устанавливается в качестве значения свойства [reifier] обрабатываемого заявления.

3.3.11    Тип

Конструкция тип (type) служит для присвоения типа информационному элементу, в котором она появляется. Тип всегда является темой, указанной с помощью topic-ref.

Во время десериализации topic-ref создает тематический элемент, следуя процедуре из 3.3.7, который задается в качестве значения свойства [type] обрабатываемого информационного элемента.

3.4 Литералы 3.4.1 Общие сведения

Литерал представляет собой строковое значение с опциональным типом данных.

Для удобства настоящий стандарт поддерживает целые числа, десятичные дроби. IRI, даты и значения типа dateTime, которые должны быть действительными в соответствии с XSDT, напрямую. Следующие неявные типы данных связаны с вышеуказанными литералами:

iri

http://www.w3.Org/2001/XMLSchema#anyURI

integer

http://www.w3.Org/2001/XMLSchema#mteger

decimal

http://www.w3.Org/2001/XMLSchema#decimal

ctm-integer

http://psi.topicmaps.org/iso13250/ctm-mteger

date

http://www.w3.Org/2001/XMLSchema#date

date-time

http://www.w3.org/2001/XMLSchema#dateT ime string

http://www.w3.Org/2001/XMLSchema#string

Любой литерал может быть выражен за счет представления значения в виде строки и добавления квалификатора типа данных (АА). а также iri-ref. указывающего тип данных.

4

ГОСТ РИСО/МЭК 13250-6—2016

Если literal появляется внутри возникновения (3.10). свойство (value) возникновения устанавливается в значение литерала, а свойство [datatype] возникновения устанавливается как тип данных литерала.

Если literal появляется внутри варианта (3.12). свойство (value) варианта устанавливается в значение литерала, а свойство (datatype) варианта устанавливается как тип данных литерала.

Переменные должны появляться только внутри шаблонов.

42 # equivalent to 42AAxsd:integer

09-19AAxsd:gMonthDay

3.4.2 Управляющие последовательности в строках

Строковые управляющие последовательности могут использоваться либо для избегания символов. которые имеют особое значение в грамматике (т. е.), либо для ввода символов, которых нет на клавиатуре. предоставляя их кодовые точки в Юникоде.

СТМ процессор должен заменять двоичные последовательности, которые начинаются с обратной косой черты (\). на эквивалентные кодовые точки в Юникоде: \\ становится U+005C, Установится U+0022. \п становится U+000A, \г становится U+000D и \t заменяется на U+0009.

Последовательности, которые начинаются с \и и \U. представляют собой кодовые точки в Юникоде в виде шестнадцатеричного числа, где часть hexdigit ссылается на кодировку символов в Юникоде.

Часть hexdigit должна быть декодирована в символ в Юникоде, который она представляет, и префиксы \и и \U и должны быть удалены из байтового потока.

3.5    Тематическая карта

Компонент topicmap выступает в качестве контейнера для тематической карты и не имеет большего значения. Синтаксис выглядит следующим образом.

Опциональная директива кодирования должна появиться в самом начале СТМ потока. Пробелы или какие-либо другие символы не допускаются в начале директивы кодирования (см. подробности в разделе 3).

Директивы используются для определения среды для СТМ процессора.

3.6    Директива кодирования

Директива кодирования определяет кодировку документа.

Если декларации кодирования опущена, то должна быть использована кодировка UTF-8. если только метка порядка байтов не указывает другую кодировку (раздел 3).

Наименование кодировки должно быть дано в виде строки в форме, рекомендованной IANA-CHARSETS. Разделители « не входят в наименование.

Если кодировка представлена, то она должна появиться в самом начале потока символов (ни пробелы, ни какие-либо другие символы не разрешены в начале данной директивы).

%encodmg «Shift-JIS»

3.7    Директива версии

Директива версии указывает номер версии СТМ синтаксиса, в настоящее время — «1.0». Синтаксис выглядит следующим образом.

Директива версии сообщает синтаксическому анализатору, какая версия СТМ синтаксиса будет использована во время десериализации. В настоящее время единственной допустимой версией является 1.0, как определено в настоящем стандарте.

Ее использование рекомендовано для будущей совместимости.

%version 1.0

3.8    Темы

Конструкция тема (topic) используется для декларирования тематического элемента, присвоения ему идентификаторов и составления заявлений об этом, через присвоение имен и появлений, или вызов шаблонов, которые генерируют ассоциации (и/или дополнительные имена и появления). Она начинается с тематического идентификатора и оканчивается точкой.

5

Во время десериализации тематический элемент создается и присваивает идентификатор путем обработки topic-identity в соответствии с процедурой, описанной в 3.3.6.

Если присутствует topic-tail, он обрабатывается в соответствии с процедурой, приведенной в 3.9, с созданным тематическим элементом в качестве входных данных.

john-lennon. # a topic with an item identifier and nothing else

lennon. mccartney. harrison. starr. # four topics on one line

#    A topic defined by its subject locator = http://www.isotopicmaps.org/

—    «The ISO Topic Maps Web Site».

#    A topic defined by a subject identifier http://psi.example.org/John_Lennon

—    «John Lennon».

#    A topic with a local identifier and a subject identifier john http://psi.example.org/John Lennon;

—    «John Lennon».

3.9    Тематический хвост

Тематический хвост (topic tail) используется для присвоения дополнительных идентификаторов к тематическому элементу и создания заявлений об этом. Он принимает тематический элемент в качестве входных данных.

Для идентификатора субъекта, локатора субъекта или идентификатора элемента создается IRI в соответствии с процедурой, описанной в 3.3.6, и добавляется к свойству (subject identifiers], или (subject locators], или (item identifiers] тематического элемента.

Если любая из этих процедур делает тему равной другому тематическому элементу (см. ИСО/МЭК 13250-2, подраздел 5.3). оба тематических элемента объединяются в соответствии с процедурой, приведенной в ИСО/МЭК 13250-2.

Произведение instance-of создает отношения type-instance согласно ИСО/МЭК 13250-2, подраздел 7.2. где тема с правой стороны играет роль http://psi.topicmaps.org/iso13250/model/type. а входной тематический элемент играет роль http://psi.topicmaps.org/iso13250/model/instance.

Произведение kind-of устанавливает отношения supertype-subtype согласно ИСО/МЭК 13250-2, подраздел 7.3, где входной тематический элемент играет роль http://psi.topicmaps.org/iso13250/model/ subtype, а тематический элемент с правой стороны играет роль http://psi.topicmaps.or9/iso13250/model/ supertype.

3.10    Возникновения

Конструкция возникновение (occurrence) используется для добавления возникновений к тематическому элементу. Синтаксис выглядит следующим образом.

Во время десериализации конструкция возникновение вызывает создание элемента возникновения и добавление его к свойству (occurrences] тематического элемента, созданного процедурой, описанной в 3.8.

Paul_McCartney birthday: 1942-02-18:

webpage: http://en.wikipedia.org/wiki/Paul_McCartney

3.11    Наименования

Конструкция наименование (пате) используется для того, чтобы добавить наименование темы в тему. Синтаксис выглядит следующим образом.

Во время десериализации конструкция наименование вызывает создание элемента наименования темы и добавление его к свойству (topic names] тематического элемента, созданного процедурой, описанной в 3.8.

6

ГОСТ Р ИСО/МЭК 13250-6—2016

Если type не указан, свойство (type] элемента наименования темы задается как тематический элемент, свойство (subject identifiers] которого содержит http://psi.topicmaps.org/iso13250/model/topic-name; если такого тематического элемента не существует, то он создается.

john-lennon

—    «John Lennon»;    #    Name with the default name type

—    fullname: «John Winston Lennon». # Name of type fullname’

3.12    Варианты

Конструкция вариант (variant) используется для того, чтобы добавить наименование варианта в элемент наименования темы. Синтаксис выглядит следующим образом.

Во время десериализации конструкция вариант вызывает создание элемента вариант и добавление его к свойству (variants] элемента наименования темы, созданного процедурой, описанной в 3.11. После того, как scope был обработан, темы в свойстве (scope] элемента наименования темы добавляются к свойству (scope] элемента наименования варианта.

%prefix tm http://psi.topicmaps.org/iso13250/model/

#    a topic with a sort name variant john

— «John Lennon» («lennon,john» @ trrvsort).

3.13    Ассоциации

Конструкция ассоциация (association) используется для добавления ассоциаций к тематической карте. Синтаксис выглядит следующим образом.

Во время десериализации элемент ассоциации создается для каждой ассоциации и добавляется к свойству (associations] элемента тематической карты.

Во время десериализации элемент роли ассоциации создается для каждого role. Элемент роли добавляется к свойству (roles] элемента ассоциации.

member_of(group: The_Beatles. member: JohnLennon)

3.14    Шаблоны

Шаблоны являются контейнерами для произвольных тем и заявлений и предоставляют механизм для повторного использования заявлений в различных контекстах.

Тело шаблона состоит из обычных тем и ассоциаций и позволяет тематическим ссылкам (3.3.7) и литералам (3.4) быть замененными на переменные. Синтаксис для шаблонов определяется следующим образом.

В template-body переменные разрешены везде, где разрешены topic-refs или literals.

Декларация шаблона не меняет тематическую карту до тех пор. пока шаблон не был вызван template-invocation (3.15).

Если шаблон с таким же идентификатором и тем же количеством аргументов уже определен, это является ошибкой.

#    Declaration of a template that sets the topic type to person’. creates an

#    occurrence of type birthday’, and creates an association of type born-in’ def born($person. $date, $place)

Sperson isa person;

birthday: $date.

born-in(person : Sperson. birthplace: Splace). end

#    Invocation of the template inside a topic block mccartney

born( 1942-06-12, Liverpool).

#    Invocation of the template outside topic block born(mccartney. 1942-06-12. Liverpool)

7

Оцените статью
Комментарии читателей