ГОСТ Р 13250-6-2016 Информационная технология (ИТ). Тематические карты. Часть 6. Компактный синтаксис.

   

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

 

      

     

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

 

 

 

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

 

 

 

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

 

 

 

Часть 6

 

 

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

 

 

 

Information technology. Topic maps. Part 6. Compact syntax

     

     

ОКС 35.240.30

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

 

      

     

 

 Предисловие

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

 

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

 

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

 

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

________________

* Доступ к международным и зарубежным документам, упомянутым в тексте, можно получить, обратившись в Службу поддержки пользователей . - Примечание изготовителя базы данных.  

 

           

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

приложении ДА

 

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

 

6 ПЕРЕИЗДАНИЕ. Ноябрь 2018 г.

 

Правила применения настоящего стандарта установлены в

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

 

 

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

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

 

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

В настоящем стандарте использованы нормативные ссылки на следующие стандарты*:

_______________

* Таблицу соответствия национальных стандартов международным см. по

ссылке . - Примечание изготовителя базы данных.     

                

IANA-CHARSETS, CHARACTER SETS, Internet Assigned Numbers Authority, 14 May 2007, available at <http://www.iana.org/assignments/character-sets> (Официальные названия для наборов символов, 14 мая 2007 года, доступно на <http://www.iana.org/assignments/character-sets>)

 

ISO/IEC 13250-2:2006, Information technology - Topic Maps - Part 2: Data model (Информационные технологии. Тематические карты. Часть 2. Модель данных)

 

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

 

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

 

IETF RFC 3987, Internationalized Resource Identifiers (IRIs), Internet Standards Track Specification, January 2005, available at <http://www.ietf.org/rfc/rfc3987.txt> [Интернационализированные идентификаторы ресурсов (IRI), спецификация интернет-стандарты, ноябрь 2005, доступно по адресу: <http://www. ietf.org/rfc/rfc3987.txt>]

 

 

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

     

 

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

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

 

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

 

 

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

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

 

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

 

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

 

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

 

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

 

- если поток байтов начинается с EF BB BF (UTF-8 метка порядка байтов), то кодировка устанавливается как "UTF-8";

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

 

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

3.3.1 Пробел

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

Для создания IRI из строки следует заменить управляющую последовательность %HH на соответствующие символы и раскодировать получившуюся последовательность символов из 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;

 

- "Das kleine 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.      

? - "A topic".

 

# A topic with a unique item identifier which may be     

# referenced again within the topic map.      

?foo - "A 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.

 

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

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

 

Если wildcard задается по 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#integer

 

decimal

 

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

 

ctm-integer

 

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

 

date

 

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

 

date-time

 

http://www.w3.org/2001/XMLSchema#dateTime

 

string

 

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

 

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

 

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

 

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

 

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

 

42 # equivalent to 42^^xsd:integer

 

09-19^^xsd:gMonthDay

 

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

 

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

 

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

 

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

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

 

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

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

 

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

 

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

 

 

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

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

 

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

 

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

 

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

 

%encoding "Shift-JIS"

 

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

Директива версии указывает номер версии CTM-синтаксиса, в настоящее время - "1.0". Синтаксис выглядит следующим образом.

 

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

 

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

 

%version 1.0

 

 

      3.8 Темы

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

 

Во время десериализации тематический элемент создается и присваивает идентификатор путем обработки 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.org/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 Наименования

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

 

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

 

Если 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" @ tm:sort).

 

 

      3.13 Ассоциации

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

 

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

 

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

 

member_of(group: The_Beatles, member: John_Lennon)

 

 

      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)     

$person isa person;      

birthday: $date.     

born-in (person : $person, birthplace : $place).      

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)      

# 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 темы имеют разные пространства имен. Если существует шаблон с именем A, то все еще возможно задекларировать тему с идентификатором А.

 

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

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

 

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

 

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

 

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

 

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

 

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

 

Пример 1

 

# Template invocation within a topic declaration      

mccartney     

plays-for(The_Beatles, piano);      

has-shoesize(42).

# Template invocation outside of topic declarations      

plays-for(john, The_Beatles, guitar)      

has-shoesize(john, 45)

 

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

 

def wiki-entry($iri, $name)     

$iri #Used as subject identifier     

$name;     

description: $iri. # Used as occurrence value      

end

 

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

 

# The following template invocation fails, because a subject locator is     

# provided which cannot be used as value of an occurrence.

 

wiki-entry(=<http://en.wikipedia.org/wiki/Paul_McCartney>, "Sir Paul McCartney") # ->Error!

 

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

def is-beatle($beatle)     

is-member-of($beatle, The-Beatles)      

end

 

def is-member-of($member, $group)     

member-of(member: $member, group: $group)      

end

 

is-member-of(sting, The-Police) # 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 используется для того, чтобы включить другой CTM-источник в обрабатываемый CTM-экземпляр. В качестве ссылки на другой источник используется IRI.

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

3.16.3 Директива mergemap

 

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

 

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

 

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

 

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

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

 

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

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

 

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

 

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

 

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

 

- добавления всех элементов ассоциаций свойства B [associations] к свойству А [associations].

 

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

 

Приложение A

(справочное)

 

      

Целое число CTM

В настоящем приложении приведено описание XML-схемы для ctm:integer (http://psi.topicmaps.org/iso13250/ctm-integer).

<simpleType>      

<union>      

<simpleType>      

<restriction base=’nonNegativeInteger’/>      

</simpleType>      

<simpleType>     

<restriction base=’string’>      

<enumeration value=’*’/>      

</restriction>      

</simpleType>      

</union>      

</simpleType>

 

Приложение B

(справочное)

 

      

Синтаксис

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

________________

* Текст документа соответствует оригиналу. - Примечание изготовителя базы данных.     

 

Приложение ДА

(справочное)

 

      

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

Таблица ДА.1

 

 

 

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

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

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

ISO/IEC 13250-2:2006

IDT

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

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

 

 

- IDT - идентичные стандарты.

 

 

 

 

 

      

     

 

 Библиография

 

 

[1]

ISO/IEC 13250:2003, Information technology - SGML applications - Topic maps [ИСО/МЭК 13250:2003 Информационные технологии. Применение типового обобщенного языка разметки (SGML). Тематические планы]

[2]

ISO/IEC 13250-3:2007, Information technology - Topic Maps - Part 3: XML syntax (ИСО/МЭК 13250-3:2007 Информационные технологии. Тематические планы. Часть 3. Синтаксис XML)

[3]

XML 1.0, Extensible Markup Language (XML) 1.0, W3C Recommendation, 04 February 2004, available at <http://www.w3.org/TR/REC-xml/> [XML версии 1.0, Расширяемый язык разметки (XML) 1.0, рекомендация W3C, 4 февраля 2004 года, доступно по адресу: <http://www.w3.org/TR/REC-xml/>]

[4]

ISO/IEC 13250-4:2009, Information technology - Topic Maps - Part 4: Canonicalization (ИСО/МЭК 13250-4:2009 Информационные технологии. Тематические планы. Часть 4. Канонизация)

[5]

Unicode, The Unicode Standard, Version 5.0.0, The Unicode Consortium, Reading, Massachusetts, USA, Addison-Wesley Developer’s Press, 2007, ISBN 0-321-48091-0, available at <http://www.unicode.org/versions/Unicode5.0.0/> (Юникод, стандарт Unicode, версия 5.0.0, консорциум Unicode, чтение, Массачусетс, США, типография разработчиков Аддисон-Уэсли, 2007, ISBN 0-321-48091-0, доступно по адресу: <http://www.unicode.org/versions/Unicode5.0.0/>)

 

 

 

УДК 681.3:621.39:006.354

ОКС 35.240.30

 

Ключевые слова: информационные технологии, модель данных, тематические карты, синтаксис

 

     

     

     

Электронный текст документа

подготовлен АО "Кодекс" и сверен по:

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

М.: Стандартинформ, 2018

Вверх