ANSI/NISO Z39.50-1995

 

Information Retrieval:

Application Service Definition and Protocol Specification

 

 

Предисловие

 

(Это предисловие не является формальной частью американского государственного стандарта ANSI/NISO Z39.50-1995 и включено исключительно для сведения.)

 

ANSI/NISO Z39.50-1995, Спецификация протокола и определение прикладной службы поиска информации (Z39.50) представляет собой переработанную версию ANSI/NISO Z39.50-1992.

Примечание редакции: Черновые варианты этого стандарта фигурировали под названием Z39.50-1994. Это название в процессе утверждения и публикации было изменено на Z39.50-1995. Не существует утвержденной версии Z39.50 1994 года. Z39.50-1995 - это окончательная, утвержденная версия стандарта, различные черновые варианты которого фигурировали под названием Z39.50-1994. При внедрении следует иметь в виду, что ни один из более ранних вариантов, носящих название Z39.50-1994, не является последней версией этого стандарта.

Версия 1992 года представляла собой переработанный вариант стандарта Z39.50-1988, подготовленного комитетом NISO (National Information Standards Organization - Организация Государственных Стандартов по Информатике), который был распущен после утверждения стандарта Z39.50-1988. Вместо него в 1989 году было создано Агентство по обслуживанию Z39.50, администрация которого размещается в Библиотеке Конгресса.

Данный протокол первоначально (в 1984 г.) был предложен для использования в области библиотечной информации. Когда интерес к Z39.50 стал расширяться, была создана (в 1990 г.) Группа Внедрения Z39.50 (Z39.50 Implementors Group - ZIG). В нее входят производители, продавцы, консультанты, поставщики информации и университеты, желающие иметь или предоставлять доступ к различным типам информации, среди которых: библиотечная информация, тексты, изображения, финансовая, информация общественных служб, информация в области химии и новости. Членство в ZIG открыто для всех заинтересованных сторон.

При внедрении версии 1992 года предлагались различные усовершенствования для поддержки широкого спектра информационно-поисковой деятельности. Но эти функции были еще не полностью разработаны, и их включение в стандарт 1992 года привело бы к значительным задержкам. Перед Агентством по обслуживанию Z39.50 была поставлена приоритетная задача - переработать стандарт Z39.50-1988 для достижения побитовой совместимости (bit-compatibility) с международным стандартом ISO 10162/10163, Search and Retrieve, SR (поиск информации). (На смену Z39.50-1988 пришел стандарт Z39.50-1992, который шире стандарта SR и совместим с ним.) Таким образом, разработка предложенных новых функций была отложена, а организациям, занимающимся внедрением, было дано обязательство продолжать разработку необходимых функций, причем полученная таким образом следующая версия должна была быть шире стандарта 1992 года и совместимой с ним.

В 1992 году агентство по обслуживанию провело формальный опрос среди разработчиков Z39.50 с целью определить относительную значимость предложенных новых функций. Опрос должен был позволить сузить их список до разумных размеров, определить, адекватно ли формулируются и понимаются предложенные функции, и оценить их предполагаемую стоимость и сложность. Результаты опроса показали, что некоторые функции жизненно необходимы, а некоторые другие можно полностью исключить из рассмотрения. По некоторым функциям опрос не дал однозначного результата, и по ним решение было принято на основании консенсуса.

Разработка стандарта Z39.50-1995 началась в конце 1991 года. К каждому заседанию Группы внедрения, с декабря 1991 г. по апрель 1994 г., Агентство по обслуживанию Z39.50 подготавливало переработанный проект. Каждый проект внимательно рассматривался разработчиками и долго обсуждался по mail list Internet Группы внедрения и на заседаниях Группы. Замечания и результаты обсуждения по каждому проекту и соглашения, достигнутые на каждом заседании Группы внедрения включались в следующий проект. В апреле 1994 года Группа внедрения рекомендовала принять последний проект за окончательный.

Версия 1992 года стала известной под названием "версия 2", а версия 1995 года - как "версия 3". Но, хотя эти обозначения версий имеют определенное протокольное значение, они никак не связаны с версиями стандарта. Z39.50-1992 соответствует версии 2 протокола; Z39.50-1995 соответствует версиям 2 и 3 протокола.

Хотя стандарт Z39.50-1992 заменил Z39.50-1988 (а стандарт Z39.50-1988 устарел), отношение Z39.50-1995 к Z39.50-1992 совершенно иное: Z39.50-1995 шире  версии 1992 года и совместим с нею. В документе о Z39.50-1995 можно найти полную информацию о версии 2 и создать на ее основе систему, совместимую с Z39.50-1992.

В стандарте Z39.50-1995 отражен консенсус, достигнутый Группой внедрения, которая, по существу, выполняла совещательную роль по отношению к агентству по обслуживанию в ходе разработки  как стандарта Z39.50-1992, так и Z39.50-1995.

 

 

Основы протокола

 

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

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

Стандарт Z39.50-1992 обеспечивает следующие основные возможности, которые Z39.50-1995 также поддерживает. Клиент может запускать поиск, с указанием одной или нескольких баз данных, включая запрос и параметры, определяющие, следует ли пересылать отобранные записи как составную часть ответа на запрос. В ответ на запрос сервер передает количество отобранных записей и, возможно, некоторые или все отобранные записи. После этого клиент может затребовать отобранные записи. Клиент исходит из предположения, что отобранные при поиске записи образуют "множество результатов" (упорядоченное множество, порядок в котором определяется сервером), и что к записям можно обращаться по их порядковому номеру в этом множестве. Имеется ряд факультативных дополнительных возможностей, в том числе:

 

- В тех случаях, когда клиент не желает получать полные записи из базы данных, можно указать множество элементов, определяющее, какие элементы данных нужно возвращать. Например, клиент может указать: "Если будут отобраны 5 или меньше записей, передавать "полные" записи; если будут найдены больше 5 записей, передавать "сокращенные" записи".

- Клиент может указать предпочтительный синтаксис для записей, отвечающих запросу, например, USMARC.

- Клиент может дать имя множеству результатов для дальнейших ссылок.

- Клиент может удалить множество результатов с данным именем.

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

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

 

Формулировка запросов

 

Данный стандарт полностью описывает и объявляет обязательной поддержку запросов типа 1, выраженных индивидуальными поисковыми терминами, причем в каждом таком запросе имеется множество атрибутов, указывающих, например, тип термина (предмет (?), название и т.д.), является ли термин усеченным, какова его структура. Сервер отвечает за установление соответствия между атрибутами и логическим строением базы данных. Термины в запросе типа 1 могут сочетаться между собой при помощи булевских операторов. Термины и операторы выражены в Обратной Польской Нотации (Reverse Polish Notation).

 

Множество атрибутов

 

Атрибуты, связанные с каким-либо из поисковых терминов, принадлежать некоторому множеству атрибутов, определение которого зарегистрировано, то есть ему приписан уникальный и глобально признаваемый идентификатор множества атрибутов (attribute-set-id), - Идентификатор Объекта, - который входит в состав запроса.

В Приложении ATR определено и зарегистрировано множество атрибутов bib-1, в котором указаны различные атрибуты, использующиеся в библиографических запросах. Можно регистрировать и дополнительные множества атрибутов, выходящие за рамки данного стандарта. Множество атрибутов bib-1 было разработано библиографическими работниками; специалистам в других областях предлагается разрабатывать и регистрировать свои множества атрибутов по мере надобности.

 

Записи, отвечающие запросу

 

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

В Приложении REC зарегистрированы идентификаторы объекта для различных форматов MARC, в том числе: USMARC, UKMARC, Norway Marc и CANMARC; эти идентификаторы объекта сопровождают записи из базы данных, возвращаемые сервером. Определяются некоторые другие типы форматов записей и предусмотрена регистрация дополнительных форматов записей.

Диагностические записи также сопровождаются идентификатором объекта, в котором указан их формат. В Приложении ERR определены и зарегистрированы два формата диагностических записей (один из них был определен в Z39.50-1992), в которые входят различные диагностические коды, использующиеся в библиотечных прикладных программах. Можно регистрировать дополнительные форматы диагностических записей.

 

 

НОВЫЕ ВОЗМОЖНОСТИ

 

Ниже приводится обзор дополнительных функций стандарта Z39.50-1995. Обозначения "версия 2" и "версия 3" относятся к версиям протокола; "Z39.50-1992" и "Z39.50-1995" относятся к соответствующим стандартам. Так, если какая-то функция описывается как "новая функция стандарта Z39.50-1995", это обычно означает, что она может быть задействована в любой из версий протокола. Например, функция Scan: разработчик может добавить функцию Scan к существующей системе в стандарте Z39.50-1992, не задействуя никаких других новых функций.

Дополнительные возможности, описанные ниже, относятся к четырем категориям: поиск, извлечение, новые задачи и функции и разные дополнительные возможности.

 

ПОИСК

 

Атрибуты

 

Имеется несколько дополнительных возможностей, относящихся к атрибутам и множествам атрибутов. В версии 3 можно комбинировать атрибуты из разных множеств атрибутов в пределах одного запроса (даже в пределах одного поискового термина). Это дает два преимущества. Во-первых, это полезно при поиске по нескольким базам данных. (Хотя версия 2 поддерживает поиск по нескольким базам данных, все атрибуты в одном запросе должны принадлежать одному и тому же множеству атрибутов, что исключает возможность поиска по нескольким базам данных, если эти базы не однотипны.) Во-вторых, теперь можно будет избежать повторов при определении множеств атрибутов.

Версия 3 предоставляет еще две дополнительные возможности при определении множеств атрибутов. Во-первых, определяются новые типы данных для значений атрибутов (в версии 2 допускаются только числовые значения). Во-вторых, определение множества атрибутов теперь может включать список альтернативных наборов правил вычисления (например, разрешается ли серверу подставлять более подходящее, по его мнению, множество атрибутов), и при запросе может выбираться одна из этих альтернатив. В определении расширенного множества атрибутов bib-1 используется эта новая возможность.

Определение bib-1 в стандарте Z39.50-1995 включает также многие новые атрибуты (в дополнение ко всем атрибутам стандарта Z39.50-1992).

 

Расширенная модель множества результатов

 

Базовая модель множества результатов была разработана в стандарте Z39.50-1992; в версии 1995 года описана "расширенная модель множества результатов", которая поддерживает расширенный вариант поиска по близости.

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

 

Поисковый термин

 

В версии 3 поисковый термин для запроса может принимать значения, относящиеся к различным типам данных. (В версии 2 поисковые термины имеют двоичные значения, и потому не могут относиться ни к каким типам данных, так что тип часто определяется при помощи структурного атрибута.) Эта новая возможность упростит запросы (так же, как и определения множеств атрибутов), поскольку отпадет необходимость структурных атрибутов.

 

Промежуточные результаты

 

В стандарте Z39.50-1995 сервер может выдавать информацию по компоненту запроса (то есть по подзапросу, по базе данных) как составную часть ответа на Поиск (только версия 3), или как часть контроля ресурсов, когда сервер предоставляет отчет о том, как проходит поиск. Сервер может также создавать множества результатов для отдельных компонентов запроса и обеспечивать доступ к ним.

 

ИЗВЛЕЧЕНИЕ ЗАПИСЕЙ

 

Сегментация

 

В версии 2 ответ на запрос ограничен одним сообщением; сервер пытается уместить записи, найденные по запросу, в это сообщение, а если не может этого сделать, то просто помещает их столько, сколько поместится. Может быть, клиент хочет извлечь, например, десять тысяч записей, но знает, что не сможет получить их в одном сообщении. Обычно в этом случае клиент запрашивает  все десять тысяч записей, дожидается ответа на запрос, определяет, сколько извлечено записей, а затем посылает другой запрос на оставшиеся записи. Этот способ во многих средах работает хорошо, но недопустимо медленно для высокоскоростных сетей. Сервер должен дождаться запроса, прежде чем отправлять очередную порцию записей, а это приводит к задержкам; для обычных сетей этими задержками, может быть, можно пренебречь, но в высокоскоростных сетях с ними нельзя мириться. В версии 3 сервер может в ответ на запрос отправлять несколько последовательных ответных сообщений без промежуточных запросов.

Более серьезная проблема сегментации возникает в том случае, когда одна запись оказывается слишком большой и не помещается в одном сообщении. Поэтому в версии 3 введен второй уровень сегментации: отдельная запись может занимать несколько ответных сообщений. Клиент или сервер могут выбрать один из этих уровней сегментации или не использовать сегментацию (в этом случае действуют правила версии 2).

 

Сервис для извлечения записей

 

Группа ZIG в течение двух лет интенсивно работала над разработкой расширенной модели и сервисного набора для широкого спектра функций извлечения данных, способных поддерживать различные прикладные программы извлечения данных и, в частности, извлечения документов. Эта модель подробно описана в Приложении RET. В стандарте Z39.50-1995 описаны несколько новых классов объектов (схемы, наборы ярлыков, варианты) и определены конкретные объекты из этих и других классов. В Приложении RET подробно описана семантика этих объектов и рассказано, как они вместе могут обеспечить разнообразные возможности извлечения данных. Ниже следуют несколько примеров:

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

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

- Документ можно получать в самых разнообразных форматах (например, post Script, SGML), на разных языках, с разными параметрами представления (например, с разными длинами строк, с разным числом строк на страницу, столбцов) и с другими вариациями. Клиент может выяснить, какие варианты поддерживаются для данного документа, и получить информацию, связанную с конкретным вариантом формы: например, стоимостью извлечения документа по указанному варианту или его размер. Наконец, клиент может извлечь документ (или заданную часть документа) в соответствии с нужным вариантом.

- Для данного поиска с документом могут быть связаны "хиты" (hits): указатели на термины (в пределах документа), релевантные по отношению к этому поиску. Клиент может извлечь хиты вместе с документом, чтобы иметь возможность быстро определить местонахождение нужных кусков документа. Или клиент может извлечь только хиты (упорядоченные по их важности) и после этого извлечь только указанные куски документа, соответствующие запросу.

 

НОВЫЕ ФУНКЦИИ И ЗАДАЧИ

 

Scan и Sort

 

Scan и Sort (перебор и сортировка) - это новые функции в стандарте Z39.50-1995. Они используются, соответственно, для последовательного просмотра терминов в списке или указателе и для сортировки (упорядочения) множества результатов.

Scan - пока что единственная функция в задаче Browse (перелистывание) стандарта Z39.50, но предполагается, что в последующих версиях будут добавлены различные другие возможности просмотра.

 

Расширенные функции

 

Расширенные функции (Extended Services) - это новая задача стандарта Z39.50-1995. В нее входит новая задача функция Z39.50 - функция Расширенные Функции, которая используется для инициализации конкретного задания расширенной функции, выполняемого вне рабочего сеанса Z39.50, за ходом выполнения которого можно следить при помощи функций Z39.50. В число расширенных функций входят следующие функции: сохранить множество результатов, сохранить периодический график запросов, экспортировать документ, заказать документ и обновить базу данных.

 

Объяснение

 

Новая задача Объяснение (Explain) позволяет клиенту извлекать информацию о серверной системе: общие характеристики (описание, контактная информация, часы работы, ограничения, стоимость использования и т.д.), доступные для поиска базы данных, указатели, множества атрибутов, информация об атрибутах, схемы, синтаксис записей, возможности сортировки и расширенные функции. Сервер хранит информацию для функции Объяснение в специальной базе данных, доступ клиента к которой может осуществляться при помощи функций поиска и извлечения данных стандарта Z39.50. Формат информации функции Объяснение описан в данном стандарте.

Часть информации функции Объяснение прозрачна для клиента, предназначена для прямого просмотра клиентом-пользователем и обозначается соответственно (например, "общие характеристики"). Часть информации функции Объяснение предназначена для разделения между клиентом и пользователем. Например, клиент может извлечь список баз данных, в которых может проводиться поиск; для каждой базы данных из этого списка клиент может выводить на экран неформальное название, иконку и краткое описание. В то же время клиент может сохранить у себя реальное имя базы данных для использования в протокольных сообщениях, которые, вероятно, не будут выводиться на экран. Часть информации функции Объяснение может быть совершенно прозрачной для пользователя. Например, клиент может получить информацию об атрибутах, которые поддерживаются в той или иной базе данных, и впоследствии использовать эту информацию при формулировке запроса (при конвертировании запроса, предоставленного пользователем, в запрос типа type-1 стандарта Z39.50).

 

РАЗНЫЕ ДОПОЛНИТЕЛЬНЫЕ ФУНКЦИИ

 

Завершение и повторная инициализация

 

Версия 3 включает более гибкий подход к завершению сеанса работы в стандарте Z39.50, который позволяет, по сути, выполнять повторную инициализацию без отключения сетевой связи.

 

Одновременные операции

 

В версии 3 допускается одновременное выполнение нескольких операций. В версии 2 операции выполняются строго последовательно.

 

 

 

 

Диагностика

 

Большинство функций Z39.50 содержат возможность диагностики. В версии 2 диагностика должна соответствовать специальному формату, который определяется в рамках этого стандарта. В версии 3 форматы диагностики могут определяться и регистрироваться извне. Приводится определение одного такого (нового) стандарта вместе с полным набором диагностических сообщений.

 

Форматы контроля доступа

 

Стандарт Z39.50-1992 обеспечивает контроль доступа, но не определяет никаких форматов контроля доступа. Стандарт Z39.50-1995 определяет форматы записи нового клиента и его идентификации, а также еще один стандарт, который позволяет серверу запрашивать у клиента произвольную информацию.

 

Поддержка наборов символов

 

Для символьных строк введен новый тип данных: "International String". Определение этого типа предоставляет клиенту и серверу больше возможностей для того, чтобы договориться об использовании того или иного языка и одного или нескольких наборов символов в течение сеанса.

 

Единицы измерения

 

Для поддержки единиц измерения вводятся новые типы данных. Они позволяют использовать стандартные обозначения типов единиц и единиц измерения. Например, может быть тип единицы "масса" и единица измерения "килограмм".

 

Возможность расширения и переговоры

 

Версия 3 предлагает мощную специальную функцию, обеспечивающую возможность расширения. Каждое протокольное сообщение содержит одно поле, предназначенное для информации, формат которой определяется извне. Эти форматы, определенные извне, будут регистрироваться и поддерживаться Агентством по ведению Z39.50 в качестве временных расширений стандарта для экспериментального использования и, возможно, включения в дальнейшем в следующую версию.

В стандарте Z39.50-1995 вводится понятие "записи для переговоров". Клиент может включить в сообщение инициализации запись для переговоров с предложением о выполнении некоторого условия в течение сеанса работы (например, об использовании определенного языка и одного или нескольких наборов символов). Сервер может ответить на это, сообщив о том, что предложение принято, или выдвинув контр-предложение.

Запись для переговоров представляет собой приложение новой функции, обеспечивающей возможность расширения. Записи для переговоров будут определяться извне и их будет вести Агентство по ведению Z39.50.

 

Information Retrival: Application Service Definition and Portocol Specification

 

1. ВВЕДЕНИЕ

 

Данный стандарт - ANSI-NISO Z39.50-1995, Определение прикладной информационно-поисковой службы (Z39.50) и спецификация протокола, - это один из стандартов, созданных для облегчения взаимодействия между компьютерными системами. Он связан с другими, родственными ему стандартами, посредством базовой модели ссылок (ISO 7498) Взаимосвязи Открытых Систем (OSI, Open Systems Interconnection). Этот стандарт определяет протокол на уровне прикладных программ в модели ссылок, он посвящен, в особенности, поиску и извлечению информации в базах данных.

 

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

 

Данный стандарт описывает Прикладную информационно-поисковую службу (раздел 3) и определяет Протокол информационно-поисковой прикладной системы (раздел 4). Определение функций описывает функции, которые поддерживают те или иные возможности в рамках прикладной системы; эти функции, в свою очередь, поддерживаются протоколом Z39.50. В этом описании не определяется и никак не ограничивается способ компьютерной реализации этих функций. В спецификацию протокола входят: определение контрольной информации протокола, правила обмена этой информацией и требования к согласованию, которые должны выполняться для конкретной реализации этого протокола.

Этот стандарт предназначен для систем, поддерживающих информационно-поисковые функции, для организаций, таких как информационные центры, университеты, библиотеки и центры единой каталогизации (union catalogue centers). Он направлен на обмен информацией между программами, ориентированный на [сетевую] связь. Он не касается обмена информацией с терминалами или посредством других физических носителей.

 

1.2 Версия

 

Данный стандарт Z39.50-1995 описывает версии 2 и 3 для службы и протокола Z39.50.

Примечания:

1. Стандарт ANSI Z39.50-1992  описывает только версию 1.

2. Для совместимости с версией один Информационно-поискового протокола (ISO 10163-1991) предполагается, что версия 2 стандарта Z39.50  идентична версии 1 стандарта Z39.50; поэтому прикладные системы, поддерживающие версию 2 автоматически поддерживают версию 1. (Версию 1 стандарта ANSI Z39.50-1992 не следует путать со стандартом ANSI Z39.50-1988.)

 

Некоторые процедуры, указанные в стандарте, применимы только к версии 2 или к версии 3, это в каждом случае отмечено специально.

 

1.3. References

 

........................................

 

2. ОПРЕДЕЛЕНИЯ

 

 

 

А-связь -- см. Связь между прикладными программами.

 

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

 

Абстрактная структура записи -- Первичный элемент схемы базы данных. При применении абстрактной структуры записи к записи базы данных получается абстрактная запись базы данных.

 

Абстрактный синтаксис -- Описание конкретного типа данных с использованием абстрактной синтаксической нотации. На него может ссылаться OID (object identifier - идентификатор объекта).

 

Абстрактная синтаксическая нотация -- Язык, который позволяет давать типам данных обозначения, независимые от конкретной программной реализации. Примером может служить ASN.1.

 

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

 

Компонент пункта доступа -- Операнд запроса типа type-1 (неформальное название).

 

Совокупный ответ функции Представить -- Запросы типа Сегмент (если они имеются) вместе с ответом функции Представить, для операции Представить.

 

APDU -- См. Единица данных протокола прикладной программы (Application Protocol Data Unit).

 

Связь между прикладными программами -- Сеанс связи между пользователем базы данных и стороной, предоставляющей базу данных. Он может состоять из одной или нескольких последовательных сеансов Z-связи.

 

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

 

Единица данных протокола прикладной программы -- Единица информации, передаваемой при обмене между источником и адресатом, формат которой определяется протоколом Z39.50, состоящая из информации протокола прикладной программы и, возможно, данных пользователя прикладной программы.

 

Контрольная информация протокола прикладной программы -- Информация, передаваемая единицей данных протокола прикладной программы.

 

Применяемый Вариант (applied Variant) -- Один из трех возможных способов использования спецификации варианта. Применяемый Вариант - это та спецификация варианта, которую адресат применяет к элементу, входящему в извлекаемую запись. См. также Запрос на Вариант и Поддерживаемый Вариант.

 

ARS - см. Абстрактная структура записи (Abstract Record Structure).

 

ASN.1 -- Абстрактная синтаксическая нотация 1 (Abstract Syntax Notation One), описанная в ISO 8824  и ISO 8825.

 

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

 

Элементарный атрибут -- Атрибут, представленный в виде пары: тип атрибута и значение этого типа.

 

Список атрибутов -- Набор элементарных атрибутов  и идентификаторов множеств атрибутов, которым они принадлежат. Список атрибутов в сочетании с поисковым термином образует операнд запроса типа type-1. Обычно один из элементарных атрибутов из этого множества соответствует нормализованному пункту доступа, с которым сравнивается этот термин (определяемый остальными элементарными атрибутами).

 

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

 

Идентификатор множества атрибутов -- Идентификатор объекта, обозначающий множество атрибутов, которому принадлежит элементарный атрибут (из списка атрибутов).

 

Тип атрибута -- Одна из составляющих элементарного атрибута. В множестве атрибутов определяется один или несколько типов атрибутов и каждому из них приписывается целое число (здесь же определяются значения, свойственные каждому типу). Например, в множестве атрибутов bib-1 типу атрибута "Use" ("Использование") приписывается число 1.

 

Значение атрибута -- Одна из составляющих элементарного атрибута. В множестве атрибутов определяется одно или несколько значений для каждого типа атрибутов, определяемого в нем. Например, в множестве атрибутов bib-1 определяется значение атрибута "Use" - "Личное имя" ("personal name").

 

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

 

Система-клиент -- Система, в которой размещен клиент.

 

Спецификация композиции -- Спецификация, которая может быть включена в запрос Представить и которая определяет желаемую композицию (элементы и синтаксис записи) для извлекаемых записей. В нее входят идентификатор схемы, спецификация элементов и идентификатор синтаксиса записи.

 

Условно подтверждаемая функция -- Функция, которая может вызываться как подтверждаемая или как неподтверждаемая функция. Она определяется в терминах запроса (исходящего от источника или от адресата), за которым, возможно, следует ответ (от получателя запроса). Например, Контроль ресурсов - это условно подтверждаемая функция, которую инициирует адресат. См. также Неподтверждаемая функция и Подтверждаемая функция.

 

Подтверждаемая функция -- Функция, которая определяется в терминах запроса (исходящего от источника или от адресата), за которым следует ответ (от получателя запроса). Например, Поиск - это подтверждаемая функция, которую  инициирует источник; Контроль доступа - подтверждаемая функция, которую инициирует адресат. См. также Неподтверждаемая функция и Условно подтверждаемая функция.

 

База данных -- Собрание единиц информации, содержащих информацию, относящуюся к общей теме. Каждая единица представляет собой запись базы данных.

 

Запись базы данных -- Локальная структура данных, представляющая собой единицу информации в базе данных.

 

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

 

Элемент данных -- См. Элемент.

 

Элемент -- Единица информации, определяемая схемой.

 

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

 

Имя множества элементов -- Спецификация элемента в форме простого (primitive) имени.

 

Спецификация элемента -- Экземпляр формата спецификации элемента или имя множества элементов. Спецификация элемента преобразует абстрактную запись базы данных в другой экземпляр  абстрактной записи базы данных (это преобразование может быть нулевым). По спецификации элемента из абстрактной записи базы данных отбираются элементы, а также, возможно, указываются формы варианта для этих элементов.

 

Формат спецификации элемента -- Структура, которая используется для выражения спецификации элемента.

 

Идентификатор спецификации элемента -- Идентификатор объекта для формата спецификации элемента или имя множества элементов.

 

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

 

Задача -- Логическая группа функций Z39.50; в некоторых случаях - отдельная функция. Например, задача Извлечение состоит из функции Представить и функции Сегмент; задача Поиск состоит из функции Поиск. Может быть и по-другому, когда задача не состоит из функций, а использует функции других задач. Например, в задаче Объяснение не определяются никакие функции, но в ней используются функции Поиск и Представить.

 

Конечный фрагмент -- Фрагмент, конец которого совпадает с концом записи. См. Фрагмент.

 

Фрагмент -- Собственная подстрока записи. (Это определение имеет смысл только в контексте сегментации второго уровня, описанной в разделе 3.3.3; в этом разделе запись рассматривается как строка байтов.)

 

GRS (Generic Record Syntax) -- Родовой Синтаксис Записи.

 

Инициирующий запрос -- Запрос, который инициирует операцию.

 

Промежуточный фрагмент -- Фрагмент, начало которого не совпадает с началом записи, а конец - с концом. См. Фрагмент.

 

IR (Information Retrieval) -- Информационный поиск.

 

Элемент -- (1) Элемент множества результатов. (2) Библиографическая единица; см. ISO 10160.

 

Максимальный размер сегмента -- Самый большой допустимый сегмент совокупного ответа функции Представить (если задействована сегментация).

 

Имя -- Лингвистическая конструкция, выраженная на каком-либо языке, соответствующая некоторому объекту. Имя обозначает (т.е. идентифицирует) тот объект, с которым оно связано.

 

Неподтверждаемая функция -- Функция, которая определяется в терминах запроса (исходящего от источника или от адресата) и не требует никакого ответа. Например, Сегмент - это неподтверждаемая функция, которую инициирует адресат. См. также Подтверждаемая функция.

 

Идентификатор объекта -- Однозначный, имеющий глобальное значение зарегистрированный идентификатор объекта данных, который дается соответствующей инстанцией, занимающейся регистрацией.

 

OID -- См. Идентификатор объекта.

 

Операция -- Инициирующий запрос и соответствующий ему завершающий ответ, вместе с относящимися к ним промежуточными сообщениями. Например, операция Поиск всегда включает запрос на Поиск и ответ на Поиск, и может также включать сообщения по контролю доступа и контролю ресурсов. В пределах одной Z-связи могут происходить несколько операций одновременно.

 

Тип операции -- Имя инициирующего запроса. Например, запрос Поиск инициирует операцию типа "Поиск".

 

Источник -- Сторона, которая инициирует Z-связь и инициирует операции во время Z-связи.

 

Функциональный пользователь источника -- Та часть клиента, которая направляет запросы источнику. См. Функциональный пользователь.

 

OSI (Open Systems Interconnection) -- Взаимосвязь между открытыми системами.

 

П-контекст -- См. Контекст представления.

 

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

 

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

 

Примитив -- см. Примитив функции.

 

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

Примечание: примитивное имя никак не связано с примитивом.

 

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

 

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

 

Множество результатов -- Локальная структура данных, которая используется как механизм отбора для передачи записей, отобранных по запросу. Ее логическая структура представляет собой поименованный упорядоченный список элементов множества результатов и, возможно, информацию произвольного формата, которая может использоваться в качестве суррогата для задач поиска, в ходе которого было создано данное множество результатов.

 

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

 

Запись множества результатов -- Идиоматическое выражение, представляющее собой ссылку на запись в базе данных, которую представляет этот элемент множества результатов. См. Множество результатов.

 

Извлекаемая запись -- Экспортируемая структура, определяемая путем применения синтаксиса записи к абстрактной записи базы данных.

 

RPN-запрос -- Поисковый запрос, представленный в формате обратной польской нотации (RPN, reverse polish notation).

 

Схема -- См. Схема базы данных.

 

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

 

Сервер -- Прикладная система, в которую входит адресат; сторона, предоставляющая базу данных.

 

Система сервера -- Система, в которой расположен сервер.

 

Функция (служба) -- (1) Одна из функций Z39.50, как, например, функция "Поиск"; (2) расширенная функция, как, например, "расширенная функция сохраняющегося множества результатов"; (3) сторона, предоставляющая услуги.

 

Примитив функции -- Абстрактное, независимое от конкретной разработки представление взаимодействия между пользователем функции и стороной, предоставляющей услуги. Существует четыре типа примитива функции: Запрос, Указатель, Ответ и Подтверждение.

 

Сторона, предоставляющая услуги -- Абстрактное обозначение совокупности сторон (источника и адресата), обеспечивающих услуги пользователям функций, обратившимся к ним с запросом. Понятие стороны, предоставляющей услуги, используется для удобства спецификации протокольных процедур. Это понятие применяется только в разделе 4.2.2 для описания модели протокола.

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

 

Пользователь функции -- Пользователь функций источника или пользователь функций адресата. Та часть клиента или сервера, которая направляет запросы источнику или адресату, соответственно. Понятие пользователя функции используется для удобства спецификации протокольных процедур. Это понятие применяется только в разделе 4.2.2 для описания модели протокола.

Примечание: пользователь функции никак не связан с пользователем базы данных.

 

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

 

Начальный фрагмент -- Фрагмент, начало которого совпадает с началом записи. См. Фрагмент.

 

Поддерживаемый Вариант (supported Variant) -- Один из трех способов использования спецификации варианта. Поддерживаемый Вариант - это спецификация варианта, которую адресат вносит в список как поддерживаемую для конкретного элемента. См. также Запрос на Вариант и Применяемый Вариант.

 

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

 

Пометка (Tag) -- Идентификатор элемента (или узла Пути пометок, представляющего элемент). Он состоит из Типа пометки и Значения пометки.

 

Путь пометок (tagPath) -- Последовательность узлов, идущая от корня дерева до узла, представляемого этим Путем (когда элементы записи представлены иерархически, в виде дерева). Каждый узел Пути пометок представлен пометкой. Конечный узел может быть концом ветви дерева, при этом Путь пометок представляет элемент; в противном случае Путь пометок представляет поддерево, корнем которого является этот узел.

 

Множество пометок (tagSet) -- Значения пометок (и рекомендуемые типы данных) для некоторого множества элементов.

 

Идентификатор множества пометок (tagSetId) -- Идентификатор объекта, который служит сохраняющимся идентификатором для некоторого множества пометок.

 

Тип пометки (tagType) -- Краткий идентификатор (в виде целого числа) для некоторого Множества пометок. В определении схемы Тип пометки может присваиваться некоторому Идентификатору Множества пометок, чтобы идентифицировать это конкретное Множество пометок (в пределах контекста этого определения схемы).

 

Значение пометки (tagValue) -- Идентификатор элемента (или узла Пути пометок, представляющего элемент). Это может быть либо целое число, либо строка, в соответствии с Типом пометки.

 

Адресат -- Принимающая сторона Z-связи.

 

Пользователь функции адресата -- Та часть сервера, которая направляет запросы адресату. См. Пользователь функции.

 

Завершающий ответ -- Ответ, который завершает операцию.

 

Синтаксис передачи -- Синтаксис, который в сочетании с абстрактным синтаксисом образует синтаксис записи.

 

Тройка -- n-ка (то есть n-ка, для которой n=3).

 

Запрос типа type-1 -- См. RPN-запрос.

 

Вариант -- Одна из (возможно) нескольких форм, в которых элемент может быть доступен для извлечения. Источник может затребовать или адресат представить элемент по тому или иному конкретному варианту. Адресат может указывать, какие варианты возможны для данного элемента.

 

Список вариантов -- Предоставляемый адресатом список поддерживаемых Вариантов для конкретного элемента.

 

Запрос на Вариант -- Один из трех способов использования спецификации варианта. Запрос на Вариант - это спецификация варианта, находящаяся в запросе на элемент. См. также применяемый Вариант и поддерживаемый Вариант.

 

Множество вариантов -- Определение множества классов, для каждого класса - множества типов, а для каждого типа - множества значений. Спецификация варианта состоит из множества Спецификаторов вариантов из конкретного множества вариантов.

 

Идентификатор множества вариантов -- Идентификатор объекта, идентифицирующий некоторое множество вариантов.

 

Спецификация варианта -- Запрос на Вариант, применяемый Вариант или поддерживаемый Вариант. Спецификация варианта - это последовательность троек, каждая из которых представляет собой Спецификатор варианта.

 

Спецификатор варианта -- Один из компонентов спецификатора варианта. Он состоит из класса, типа, определенного для этого класса, и значения, определенного для этого типа.

 

Z-связь -- См. Z39.50-связь.

 

Z39.50-связь -- Сеанс, который в явном виде устанавливает источник и либо его в явном виде заканчивает источник или адресат, либо он заканчивается неявным образом при завершении А-связи. Сообщение между источником и адресатом происходит посредством Z39.50-связи в рамках связи между прикладными программами. В рамках одной А-связи могут происходить несколько последовательных сеансов Z39.50-связи.

 

 

3. Информационно-поисковая служба

 

Определение информационно-поисковой службы описывает совместную работу двух прикладных программ: программы, инициирующей работу, - клиента, - и отвечающей программы - сервера. Сервер связан с одной или несколькими базами данных.

Связь между клиентом и сервером осуществляет протокол Z39.50, который описан в разделе 4. Спецификация логически разделена на процедуры, относящиеся к клиенту, и процедуры, относящиеся к серверу. Разделы программы-клиента и программы-сервера, выполняющие процедуры протокола Z39.50, обозначаются как источник Z39.50 и адресат Z39.50, соответственно.

 

3.1 Модель и характеристики информационно-поисковой службы

 

Общение между источником и адресатом происходит через Z39.50-связь (Z-связь) в рамках связи прикладной программы (A-связи; см. раздел 4.2.1.2). Z-связь устанавливается источником в явном виде и может быть завершена указанием источника, или адресата, или указанием о завершении А-связи.

В рамках А-связи возможны многократные последовательные Z- связи, а также параллельные операции (см. 3.1.2).

Источник и адресат не могут меняться местами в рамках одной Z-связи. Z-связь нельзя возобновить, поэтому по завершении Z-связи не сохраняется никакая информация о статусе, кроме информации, сохраненной по специальному указанию в явном виде.

В определении службы описаны функции и операции; их модели описаны в разделах 3.1.1 и 3.1.2. Функции сгруппированы по задачам; задачи и функции Z39.50 определены в разделе 3.2.

 

3.1.1 Функции Z39.50

 

Функции Z39.50 осуществляются посредством обмена сообщениями между источником и адресатом. Сообщение представляет собой запрос или ответ на запрос. Функции определяются как подтвержденные, неподтвержденные или условно подтвержденные.

Подтвержденная функция определяется в терминах запроса (исходящего от источника или от адресата), за которым следует ответ ( от получателя запроса). Например, Поиск  - это подтвержденная функция, которую инициирует источник; она определяется в терминах поискового запроса, исходящего от источника, за которым следует ответ на поисковой запрос со стороны адресата. Контроль доступа - пример подтвержденной функции, которую инициирует адресат.

Неподтвержденная функция определяется в терминах запроса, исходящего от источника или адресата, за которым не следует соответствующий ответ. Например, Trigger Resource Control (Включение контроля ресурсов) - это неподтвержденная функция, инициируемая источником; Segment (Сегмент) - это неподтвержденная функция, инициируемая адресатом.

Условно подтвержденная функция - это функция, которая может действовать либо как подтвержденная, либо как неподтвержденная функция. Она определяется в терминах запроса (исходящего от источника или от адресата), за которой, возможно, следует ответ (от получателя запроса). Например, Контроль ресурсов - это условно подтвержденная функция, инициируемая адресатом.

 

3.1.2 Операции Z39.50

 

Этот стандарт описывает восемь типов операций: Инициализация, Поиск, Текущий, Удаление, Перебор, Сортировка, Отчет о ресурсах и Расширенные функции (Init, Search, Present, Delete, Scan, Sort, Resource-report и Extended-services).

Исходящий от источника запрос на операцию определенного типа инициирует операцию этого типа (например, запрос на Поиск инициирует операцию типа Поиск), которая завершается соответствующим ответом со стороны адресата. Инициировать операцию может только источник, причем не все запросы источника могут делать это (см. 3.4).

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

 

3.1.3 Модель базы данных

 

Цель этого стандарта - облегчить открытую связь между клиентами и серверами для прикладных систем, в которых клиент проводит поиск и извлекает записи из баз данных сервера. Базы данных могут иметь самую разную реализацию; в разных системах по-разному описывается хранение данных и у них бывают разные способы доступа. Поэтому при описании баз данных используется общая, абстрактная модель базы данных, которой каждая отдельная система может поставить в соответствие свою реализацию. Это позволяет разным системам при общении использовать стандартные и общепонятные термины для задач поиска и извлечения информации из базы данных. Модели поиска и извлечения информации описаны в разделах 3.1.4 и 3.1.5.

Термин база данных, как он используется в данном стандарте, обозначает собрание записей. Каждая запись представляет собой собрание взаимосвязанных данных, с которым следует обращаться как с единым целым. Термин запись в базе данных обозначает локальную структуру данных, представляющую информацию в конкретной записи. С базой данных связаны одно или более множеств пунктов доступа, которые могут быть указаны при поиске записей в базе данных (см. 3.1.4), и одно или более множеств элементов, которые могут извлекаться из записи в базе данных (см. 3.1.5). Пункт доступа - это уникальный или не уникальный ключ, который может быть указан отдельно или в сочетании с другими пунктами доступа при поиске записей. Пункт доступа может, но не обязан быть связанным с некоторым элементом; он может быть эквивалентен элементу, может быть производным от некоторого множества, состоящего из одного или нескольких элементов, или может не быть связанным ни с какими элементами.

 

3.1.4 Поиск в базе данных

 

В базу данных направляется запрос с указанием значений, которым должны соответствовать пункты доступа базы данных. Подмножество записей, образовавшееся после выполнения запроса, называется множеством результатов (см. 3.1.6). К множеству результатов тоже может быть обращен следующий запрос, после выполнения которого из этого множества будет выделено новое множество результатов.

Поиск указывает одну или несколько баз данных и содержит запрос. Запрос типа 1, определенный в этом стандарте (см. 3.7), состоит из одного или нескольких условий на пункты доступа, связанных логическими операторами. Например:

 

"В базе данных под именем "Книги" найти все записи, для которых пункт доступа "Заглавие" содержит значение "еванджелина" И пункт доступа "автор" содержит значение "лонгфелло".

 

Каждое условие на пункт доступа состоит из поискового термина и атрибутов. Атрибуты детализируют термин; обычно один из атрибутов соответствует нормализованному пункту доступа, с которым должен сравниваться термин (детализированный другими атрибутами). Каждый атрибут представляет собой пару, отражающую тип атрибута и значение этого типа (например, может быть тип "пункт доступа" и значение "автор"; или тип "усечение" и значение "слева").

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

 

3.1.5 Извлечение записей из базы данных

 

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

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

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

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

 

3.1.6 Модель множества результатов

 

Вообще говоря, предполагается, что обработка запроса не обязательно требует физического доступа к записям; поэтому предполагается, что множество результатов идентифицирует (например, содержит указатели на) записи, отобранные по запросу, а не содержит сами эти записи. (Не предполагается блокировка записей в базе данных. Данный стандарт не касается методов контроля одновременности, предотвращающего изменение или удаление записей из множества результатов.) Множество результатов может использоваться как механизм отбора для пересылки записей из одной системы в другую; само по себе множество результатов рассматривается как чисто локальная структура данных и не передается (то есть передаются записи, но не локальные указатели на эти записи).

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

(а) порядковый номер, соответствующий положению триады в списке,

(b)  имя базы данных и

(c) уникальный идентификатор (имеющий исключительно локальное значение) записи внутри базы данных, поименованной в элементе (b).

Обращение к пунктам множества результатов происходит по их позиции в множестве результатов, то есть по (a).

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

- Базовая модель - Множество пар, из которых каждая состоит из элементов (b) и (c) вышеописанной модели для извлечения.

- Расширенная модель - Множество триад, из которых каждая состоит из элементов (b) и (c) модели для извлечения и добавочной не уточняемой здесь информации, приписываемой каждой записи, которая может использоваться как суррогат для поиска, в результате которого было создано данное множество результатов.

Примечание: В спецификации запроса может быть указано, что должна использоваться базовая модель, или при каких условиях должна быть использована расширенная модель, и указывается характер дополнительной информации. Для запросов типа 1 в случае действия версии 2 применяется базовая модель.

 

3.1.7. Модель с расширенными функциями

 

В семейство функций стандарта Z39.50 входит функция Расширенные функции, РФ (ES, Extended Service). Под "Расширенными функциями" подразумевается класс функций, признаваемых данным стандартом, но не являющихся функциями стандарта Z39.50 (описанными в разделе 3.1.1). Функция РФ является функцией стандарта Z39.50, и в результате операции типа РФ инициируется задача расширенных функций. Эта задача не рассматривается как часть операции типа РФ стандарта Z39.50.

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

Примеры расширенных функций: сохранение множества результатов или поискового предписания и экспорт или вызов документа.

Каждая задача РФ представлена записью базы данных, которая называется пакет задачи и поддерживается адресатом в специальной базе данных, "базе расширенных функций". При использовании источником запроса РФ в базе данных РФ создается пакет задачи. В этой базе данных можно проводить поиск и извлекать из нее записи при помощи задач Поиск и Извлечение стандарта Z39.50. Источник может проводить поиск пакетов определенного типа, или созданных определенным пользователем, или имеющих определенный статус (например, "ожидание", "выполнение" или "завершено"), или по каким-либо другим критериям. В частности, направив запрос РФ, источник может затем провести в базе (во время того же самого или последующего сеанса Z-связи) поиск соответствующего пакета, чтобы получить информацию о статусе, связанную с этим запросом, например, чтобы определить, начато ли выполнение задачи.

 

3.1.8. Объяснение

 

Источник может получить подробную информацию о программном воплощении адресата, в том числе о поддерживаемых им базах данных, множествах атрибутов, диагностических множествах, синтаксисе записей и спецификациях элементов. Источник получает эту информацию при помощи задачи Объяснение стандарта Z39.50. Адресат хранит эту информацию в базе данных, к которой источник может обращаться через посредство задач Поиск и Представить стандарта Z39.50.

Эта база данных "Объяснение" представляется источнику точно так же, как и любая другая база данных, поддерживаемая адресатом, но у нее хорошо известное имя и предопределенный синтаксис записи. Кроме того, некоторые поисковые термины, соответствующие категориям информации, также определяются заранее, чтобы можно было добиться совместимости на семантическом уровне. Каждой категории информации соответствует своя структура записи,  и все они входят в синтаксис "Объяснения".

 

 

3.2 Задачи информационно-поисковой службы

 

В разделах 3.2.1 - 3.2.11 описываются одиннадцать задач информационно-поисковой службы. Большинство их состоит из логических групп функций; в некоторых случаях задача состоит из одной функции. В будущих версиях данного стандарта к каждой из задач могут быть добавлены дополнительные функции. Ниже следует краткое описание этих одиннадцати задач.

Задача Инициализация -- Функция Инициализация: подтверждаемая функция, инициализируемая источником для инициализации операции Инициализация.

Задача Поиск -- Функция Поиск: подтверждаемая функция, инициализируемая источником для инициализации операции Поиск.

Задача Извлечение -- Задача Извлечение состоит из двух функций:

- Функция Представить: подтверждаемая функция, инициализируемая источником для инициализации операции Представить.

- Функция Сегмент -- неподтверждаемая функция, инициализируемая адресатом во время выполнения операции Представить. Примечание: таким образом, операция Представить состоит из запроса типа Представить, за которым следуют ноль или более запросов типа Сегмент, за которыми следует ответ на запрос типа Представить.

Задача Удалить-множество-результатов -- Функция Удалить: подтверждаемая функция, инициализируемая источником для инициализации операции Удаление.

Задача Просмотр -- Функция Сканирование: подтверждаемая функция, инициализируемая источником для инициализации операции Сканирование.

Задача Сортировка -- Функция Сортировка: подтверждаемая функция, инициализируемая источником для инициализации операции Сортировка.

Задача Контроль доступа -- Функция Контроль доступа: подтверждаемая функция, инициализируемая адресатом. Она не инициализирует никакой операции и может являться или не являться частью активной операции.

Задача Контроль счетов/ресурсов -- Задача Контроль счетов/ресурсов состоит из трех функций:

- Функция Контроль-ресурсов: условно-подтверждаемая функция, инициализируемая адресатом. Она не инициализирует никакой операции и может являться или не являться частью активной операции.

- Функция Экстренный контроль ресурсов: неподтверждаемая функция, инициализируемая источником во время выполнения некоторой операции.

- Функция Отчет-о-ресурсах: потдверждаемая функция, инициализируемая источником для инициализации операции Отчет-о-ресурсах.

Задача Объяснение -- Задача Объяснение не содержит никаких функций, но она использует функции задач Поиск и Извлечение.

Задача Расширенные функции -- Функция Расширенные-функции: подтверждаемая функция, инициализируемая источником для инициализации операции Расширенные функции.

Задача Завершение -- Функция Выход: подтверждаемая функция, инициализируемая источником или адресатом. Она не инициализирует и не является частью никакой операции. Она позволяет источнику или адресату внезапно завершить все активные операции и инициализировать завершение Z-связи. (После завершения Z-связи источник может попытаться инициализировать новую Z-связь при помощи функции Инициализация.)

 

3.2.1 ЗАДАЧА ИНИЦИАЛИЗАЦИЯ

 

Задача Инициализация состоит из одной функции - Инициализация.

 

3.2.1.1 Функция Инициализация

Функция Инициализация позволяет источнику установить Z-связь. В запроса на инициализацию источник предлагает свои значения для параметров инициализации. В ответе на запрос об инициализации адресат сообщает значения параметров инициализации; эти значения, которые могут отличаться от предложенных источником значений, будут действовать для этой Z-связи.

Если адресат дает утвердительный ответ (Result = 'accept'), значит, Z-связь установлена. Если после этого источник не желает принять значения, содержащиеся в ответе адресата, он может завершить Z-связь при помощи функции Выход (и может вслед за этим попытаться снова провести инициализацию). Если адресат дает отрицательный ответ, источник может попытаться еще раз провести инициализацию.

 

Параметр

Запрос источника

Ответ адресата

Версия

х

х

Идентификатор/проверка уровня доступа

х (не обязат.)

 

Опции

х

х

Предпочтительный размер сообщений

х

х

Исключительный размер записи

х

х

Результат

 

х

Идентификатор  прикладной системы

х (не обязат.)

х (не обязат.)

Имя прикладной системы

х (не обязат.)

х (не обязат.)

Версия прикладной системы

х (не обязат.)

х (не обязат.)

Поле пользовательской информации

х (не обязат.)

х (не обязат.)

Другая информация

х (не обязат.)

х (не обязат.)

Идентификатор ссылки

х (не обязат.)

х (если применимо)

 

3.2.1.1.1 Версия

Как источник, так и адресат указывают все поддерживаемые ими версии. Для совместного использования выбирается максимальная общая версия и о ней говорят, что она "в силе" для данной Z-связи. Если общих версий нет, адресат должен указать значение 'reject' ("отказать") для параметра Результат.

Примечания:

1. Номера версий выше максимальной известной версии должны игнорироваться.

2. Версии 1 и 2 идентичны. Системы, поддерживающие версию 2, должны также указывать поддержку версии 1 для совместимости операций с системами, указывающими поддержку только версии 1 (например, прикладных систем стандарта ISO 10163 -1991).

 

3.2.1.1.2 Идентификатор/проверка уровня доступа

 

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

 

3.2.1.1.3 Опции

 

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

- поиск

- представить

- удалить

- отчет о ресурсах

- сканирование

- сортировка

- расширенные функции

- экстренный контроль ресурсов

- сегментация уровня 1

- сегментация уровня 2

- параллельное выполнение операций

- именованные множества результатов

- контроль ресурсов

- контроль доступа

 

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

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

Параметр Опции состоит из строки булевых флагов, каждый из которых соответствует одной из возможностей. Может случиться, что источник установит флаг "задействовано" для функции, неизвестной адресату. В этом случае рекомендуется, чтобы адресат в своем ответе установил для соответствующего флага значение "не задействовано". Но, если источник установил значение флага "не задействовано", а адресат установил для соответствующего флага значение "задействовано", и если источнику неизвестно, что за функцию представляет этот флаг, рекомендуется, чтобы источник  завершил Z-связь.

 

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

Примечания:

1. Сообщение адресата, что он готов обрабатывать операции типа Отчет-о-ресурсах не означает, что адресат включит отчет о ресурсах в свой ответ.

2. Любой из вышеперечисленных типов операций может обсуждаться для любой версии. В частности, типы операций Сканирование, Сортировка и Расширенные функции могут обсуждаться при действующей версии 2, хотя они и не определены в стандарте ANSI Z39.50-1992.

 

экстренный контроль ресурсов -- Источник может заявить о своем намерении задавать запросы типа Экстренный контроль ресурсов; в этом случае адресат указывает, будет ли он принимать запросы типа Экстренный контроль ресурсов. Если источник заявляет значение "не задействовано", адресат тоже должен указать значение "не задействовано".

Примечания:

1. Если адресат указывает для типа Экстренный контроль ресурсов значение "задействовано", а для типа Контроль ресурсов - значение "не задействовано", то источник может использовать только функцию Отмена из раздела Экстренный контроль ресурсов.

2. Адресат может заявить о своей неготовности принимать запросы типа Экстренный контроль ресурсов, даже если для типа Контроль ресурсов он указал значение "задействовано".

3. Если адресат заявляет о своей готовности принимать запросы типа Экстренный контроль ресурсов, это не подразумевает, что адресат будет предпринимать какие-либо действия по результатам запроса типа Экстренный контроль ресурсов.

 

сегментация уровня 1 и уровня 2 -- Источник предлагает один из следующих вариантов:

- "без сегментации", значения "не задействовано" для сегментации уровня 1 и уровня 2;

- "сегментация уровня 1", значение "задействовано" для сегментации уровня 1 и "не задействовано" для сегментации уровня 2; или

- "сегментация уровня 2", значение "задействовано" для сегментации уровня 2.

Примечания:

1. Если источник предлагает значение "задействовано" для сегментации уровня 2, он может также указать значение "не задействовано" для сегментации уровня 1, указывая тем самым, что если адресат не в состоянии поддерживать сегментацию уровня 2, источник хочет, чтобы была задействована сегментация уровня 1.

2. Говорят, что "сегментация задействована", если задействована либо сегментация уровня 1, либо сегментация уровня 2.

3. Сегментация может быть задействована только в случае действующей версии 3.

 

Адресат в своем ответе указывает, какую (или никакой) форму сегментации он будет выполнять.

- Если адресат не указывает ни уровень1, ни уровень 2, действует вариант "без сегментации", вне зависимости от того, что указывал источник.

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

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

 

Когда действует вариант "без сегментации", ответ адресата на запрос Представить должен состоять из одного сообщения (одного "сегмента", то есть только из ответа типа Представить, без промежуточных запросов типа Сегмент), состоящего из целого числа записей. Когда действует вариант "сегментация уровня 1", адресат может в ответ на запрос типа Представить дать несколько сегментов (то есть, ответ типа Представить, возможно, с одним или несколькими промежуточными запросами типа Сегмент); каждый должен содержать целое число записей. Когда действует вариант "сегментация уровня 2", адресат может в ответ на запрос типа Представить дать несколько сегментов, причем одна отдельная запись может занимать несколько сегментов. Процедуры сегментации подробно описаны в разделе 3.3.

 

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

 

именованные множества результатов -- Источник может предложить использовать именованные множества результатов (имеется в виду возможность давать множествам результатов имена, отличные от "принимаемых по умолчанию" в качестве значения переменной Result-set-name в рамках запроса Поиск); в этом случае адресат указывает, будет ли он поддерживать именованные множества результатов. Если источник предлагает значение "не задействовано", адресат тоже должен указать "не задействовано".

 

контроль ресурсов и контроль доступа -- Источник указывает, желает ли он, чтобы адресат активизировал контроль ресурсов и/или контроль доступа (т.е. посылал запросы функций Контроль ресурсов и Контроль доступа). Адресат сообщает, намерен ли он активизировать контроль ресурсов и контроль доступа.

Примечания:

1. Если адресат указывает значение "не задействовано" для опции Контроль ресурсов (или Контроль доступа), это значит, что он не будет активизировать контроль ресурсов (или контроль доступа), даже если источник предложил значение "задействовано".

2. Если источник предложил значение "не задействовано" для опции Контроль ресурсов, а адресат указал значение "задействовано" для этой опции, показывая, что не намерен подавлять запросы на контроль ресурсов, и если источник все-таки никак не может принять запросы на контроль ресурсов, то источнику следует завершить сеанс Z-связи.

3. Если источник предлагает значение "не задействовано" для опции Контроль доступа, и в то же время система защиты адресата  требует, чтобы эти меры контроля (помимо тех, которые обеспечиваются параметром Идентификатор/проверка уровня доступа) активизировались с момента установления Z-связи, то адресат должен отвергнуть данную Z-связь (установив для параметра Результат значение "отвергнуть" и указав для опции Контроль доступа значение "задействовано").

Тем не менее, защита может быть активизирована на разных уровнях. В дополнение к проверке уровня доступа при установлении Z-связи, могут активизироваться функции защиты для контроля доступа к определенной базе данных, записи, множеству результатов, формату отчета о ресурсах или при использовании той или иной операции. Таким образом, если источник предлагает значение "не задействовано" для опции Контроль доступа, а адресат, как правило, активизирует функции защиты (но не на уровне Z-связи), то адресат не обязательно должен отвергнуть данную Z-связь.

Адресат может пожелать активизировать запрос для проверки уровня доступа во время операции Инициализация, чтобы определить, имеет ли источник право пользоваться той функцией, которую он вызывает. Если источник предложил значение "не задействовано" для опции Контроль доступа, адресат может просто отказать ему в использовании этой конкретной операции через параметр Опции.

Если источник предлагает значение "не задействовано" для опции Контроль доступа, а адресат принимает решение принять данную Z-связь, и если впоследствии источник инициализирует некоторую операцию, которая требует запроса на контроль доступа (например, если источник хочет выполнить функцию Поиск, связанную с  базой данных, свое право на использование которой он пока еще не подтвердил), то адресат должен подавить этот запрос на контроль доступа и вместо него отправить сообщение об ошибке, в котором указать, что запрос на проверку уровня доступа был необходим, но не мог быть выполнен.

 

3.2.1.1.4 Предпочтительный размер сообщений и исключительный размер записи

 

Запрос Инициализация содержит предлагаемые источником значения параметров Предпочтительный размер сообщений и Исключительный размер записи, указанные в байтах. Ответ на запрос Инициализация содержит значения параметров Предпочтительный размер сообщений и Исключительный размер записи, которые будет использовать адресат; они могут отличаться от значений, предложенных источником, и будут использоваться вместо них. Как в случае запроса, так и в случае ответа значение параметра Предпочтительный размер сообщений не должен превышать значение параметра Исключительный размер записи.

Параметр Исключительный размер записи имеет смысл во время выполнения операции Представить и только в одном особом случае, когда отдельная, исключительно большая запись (размер которой больше параметра Предпочтительный размер сообщений) оказывается затребованной в запросе Представить. В этом особом случае предпочтительный размер сообщений может подавляться (для данной операции), так что может быть представлена отдельная запись размером вплоть до значения параметра Исключительный размер записи. Тот факт, что затребована отдельная запись, служит сигналом адресату подавить параметр Предпочтительный размер сообщений. В случае равенства значений параметр Исключительный размер записи не имеет смысла (это говорит о том, что во время данного сеанса Z-связи не будет особых случаев).

Использование этих параметров подробно описано в разделе 3.3.

Примечание: Параметр Исключительный размер записи имеет тот же смысл, что и  параметр Максимальный размер записи, определенный в стандарте Z39.50-1992. Имя параметра было изменено для большей ясности.

 

3.2.1.1.5 Результат

 

Адресат сообщает, принимает ли он данную Z-связь, указывая значение "принять" или "отвергнуть" для параметра Результат. (Если указано значение "отвергнуть", источник может послать еще один запрос Инициализация.)

 

3.2.1.1.6 Идентификатор прикладной системы, имя прикладной системы, версия прикладной системы

 

Запрос или ответ могут (но не обязаны) включать любой из этих трех параметров. Они представляют собой, соответственно, идентификатор (уникальный в пределах системы клиента или сервера), описательное имя и описательную версию для прикладной системы источника или адресата. Эти три параметра прикладной системы предоставляются исключительно для удобства разработчиков, чтобы можно было различать разные прикладные системы.

 

3.2.1.1.7 Поле пользовательской информации

 

Этот параметр может использоваться источником или адресатом для дополнительной информации, выходящей за рамки данного стандарта.

 

3.2.1.1.8 Другая информация

 

Этот параметр может использоваться источником или адресатом для дополнительной информации, выходящей за рамки данного стандарта. Этот параметр может использоваться только в версии 3.

Примечание: Источнику следует использовать этот параметр с осторожностью; источник не может убедиться в том, что используется именно версия 3, пока не выполнит запрос Инициализация.

 

3.2.1.1.9 Идентификатор ссылки

 

См. раздел 3.4.

 

3.2.2 Задача Поиск

 

Задача Поиск состоит из одной функции Поиск.

 

 

 

 

3.2.2.1 Функция Поиск

 

Функция Поиск позволяет источнику проводить поиск в базах данных системы-адресата и получать информацию о результатах поиска.

Запрос функции Поиск позволяет источнику потребовать, чтобы адресат провел поиск среди указанных в запросе баз данных адресата, в соответствии с параметрами, заданными в запросе. Адресат создает множество результатов, представляющее множество записей, найденных при поиске, и сохраняет это множество результатов у себя для дальнейших задач поиска.

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

 

Параметр

Запрос источника

Ответ адресата

Тип запроса

х

 

Запрос

х

 

Имена баз данных

х

 

Имя множества результатов

х

 

Индикатор замены

х

 

Имена множеств элементов для маленького множества

х (не обязат.)

 

Имена множеств элементов для множества среднего размера

х (не обязат.)

 

Предпочтительный синтаксис записи

х (не обязат.)

 

Верхняя граница маленького множеств

х

 

Нижняя граница большого множества

х

 

Число представления для множества среднего размера

х

 

Записи ответа

х (если применимо)

 

Счетчик результата

х

 

Число возвращаемых записей

х

 

Следующая позиция множества результатов

х

 

Статус поиска

х

 

Статус множества результатов

 

х (если применимо)

Статус представления

 

х (если применимо)

Дополнительная информация поиска

х (не обязат.)

х (не обязат.)

Другая информация

х (не обязат.)

х (не обязат.)

Идентификатор ссылки

х (не обязат.)

х (если применимо)

 

3.2.2.1.1 Тип запроса и запрос

 

Параметр Тип запроса идентифицирует тип запроса, то есть синтаксис параметра Запрос. Всего определено шесть типов:

 

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

- Тип-1 - это запрос в Обратной Польской Нотации (Reverse Polish Notation, RPN), определенный в разделе 3.7.

- Тип-2 - это запрос типа ISO8777, определенный в стандарте ISO8777.

- Тип-100 - это запрос типа Z39.58, определенный в стандарте ANSI Z39.58.

- Тип-101 - это запрос в расширенной Обратной Польской Нотации (extended Reverse Polish Notation, ERPN), представляет собой запрос типа 1, расширенный таким образом, чтобы допускать поиск по близости и ограничение множества результатов по атрибутам.  Этот тип запроса определен в разделе 3.7.

Примечания: Запрос типа 101 идентичен запросу типа 1, за одним исключением: для типа1 близость и ограничение допускаются только в случае версии 3. Для типа 101 близость и ограничение допускаются как для версии 3, так и для версии 2. (Определение запроса типа 101 не зависит от версии.)

- Тип-102 - это запрос Упорядоченного списка, который будет определен в одной из будущих версии данного стандарта.

 

3.2.2.1.2 Имена баз данных

 

Источник указывает множество баз данных, к которым относится запрос.

Примечания:

1. Адресат сообщает (посредством службы Объяснить или посредством какого-либо механизма, выходящего за рамки данного стандарта), какие базы данных можно указывать в запросе функции Поиск, и в каких сочетаниях. Например, адресат может указать, что поиск в базах данных А, В и С может проводиться по отдельности, и что может проводиться поиск по сочетанию баз А и В (но не А и С и не В и С).

2. Каждое имя базы данных, указанное адресатом, представляет собой символьную строку, в которой строчные и заглавные буквы не различаются. Таким образом, для каждого буквенного символа в имени базы адресат может использовать либо строчную, либо заглавную букву, вне зависимости от того, как это имя было указано адресатом.

 

3.2.2.1.3 Имя множества результатов и индикатора замены

 

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

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

- Если параметр Индикатор замены имеет значение "вкл.", то после обработки запроса предыдущее множество результатов с именем, указанным в параметре Имя множества результатов, будет удалено и будет создано новое множество результатов с тем же именем. Если поиск не удастся завершить, это множество будет пустым.

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

Если же не существует множества результатов с именем, указанным в параметре Имя множества результатов,  адресат создает множество результатов с этим именем, а параметр Индикатор замены игнорируется. Первоначально множество результатов пусто. Если при поиске не будет найдено ни одной записи, множество результатов останется пустым.

Вообще говоря, адресат не обязан поддерживать возможность присваивания источником имени множеству результатов. Однако, адресат должен как минимум поддерживать множество результатов с именем, "принимаемым по умолчанию". Если источник указывает для параметра Имя множества результатов значение "по умолчанию", то параметр Индикатор замены должен иметь значение "вкл.".

На множество результатов, созданное запросом функции Поиск (с именем, указанным в параметре Имя множества результатов) можно впоследствии ссылаться в запросе функции Представить или использовать его имя в качестве операнда в новом запросе функции Поиск (например, в запросе типа 1). Если было создано множество результатов с именем, "принимаемым по умолчанию", на него можно ссылаться с момента его создания и до конца сеанса Z-связи, во время которого оно было создано, или же до одного из следующих моментов:

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

- пока данное множество результатов не будет уничтожено или удалено адресатом в одностороннем порядке.

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

- при помощи операции Удалить

- неявно, из-за того, что в некотором запросе функции Поиск было указано то же самое имя и параметр Индикатор замены получил значение "вкл."

- уничтожено адресатом в одностороннем порядке (это может произойти в любой момент)

- при завершении Z-связи.

 

3.2.2.1.4 Имени, множества, элементы для маленького множества и Имена множеств элементов для множества среднего размера

 

Эти параметры описывают предпочтительный состав записей, ожидаемых в ответе функции Поиск. Если результат запроса представляет собой маленькое множество (см. 3.2.2.1.6), то принимается во внимание параметр Имена множества элементов для маленького множества. Если результат запроса представляет собой множество среднего размера, то принимается во внимание параметр Имена множеств элементов для множества среднего размера. Эти два параметра описаны в разделе 3.6.2.

 

3.2.2.1.5 Предпочтительный синтаксис записи

 

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

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

 

3.2.2.1.6 Верхняя граница маленького множества, Нижняя граница большого множества и Число представления для множества среднего размера

 

Множество результатов считается "маленьким множеством", "множеством среднего размера" или "большим множеством", в зависимости от значения параметров Верхняя граница маленького множества Нижняя граница множества среднего размера в запросе функции Поиск и параметра Счетчик результатов ответа функции Поиск (см. раздел 3.2.2.1.8).

Множество результатов является "маленьким множеством", если Счетчик результатов не превышает значение параметра Верхняя граница маленького множества. Множество результатов является "большим множеством", если Счетчик результатов больше или равен значению параметра Нижняя граница множества среднего размера. В остальных случаях множество результатов является "множеством среднего размера". Если результатом поиска является маленькое множество, источнику должны быть возвращены все записи базы данных, определяемые множеством результатов (с учетом возможных ограничений размера сообщения). Если результатом поиска является большое множество, записи не возвращаются. Если результатом поиска является множество среднего размера, максимальное число возвращаемых записей определяется значением параметра Число представления для множества среднего размера.

 

Примечания:

1. Множество результатов может быть множеством среднего размера только в том случае, если Счетчик результатов больше значения параметра Верхняя граница маленького множества и меньше значения параметра Нижняя граница большого множества, а это возможно, только если Нижняя граница большого множества хотя бы на 2 больше, чем Верхняя граница маленького множества; то есть, множество результатов не может быть множеством среднего размера, если Нижняя граница большого множества на единицу больше, чем Верхняя граница маленького множества. Например, если Нижняя граница большого множества равна 11, а Верхняя граница маленького множества равна 10, это означает следующее: "если найдены 10 или меньше записей базы данных, возвращать записи ответа для них всех, иначе совсем не возвращать записей", а параметр Число представления для множества среднего размера не будет приниматься во внимание.

2. Верхняя граница маленького множества может быть равна нулю. Нижняя граница большого множества должна быть больше, чем Верхняя граница маленького множества.

3. Если источник не хочет получать никаких записей ответа вне зависимости от значения параметра Счетчик результата, следует установить для параметра Нижняя граница большого множества значение 1, а для параметра Верхняя граница маленького множества значение 0.

 

3.2.2.1.7 Записи ответа

 

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

После завершения поиска адресат пытается для включения в ответ функции Поиск создать извлекаемые записи, соответствующие первым N записям базы данных из числа идентифицируемых множеством результатов (здесь N зависит от параметров запроса и Счетчика результатов, как описано в разделе 3.2.2.1.6). Для каждой записи базы данных, для которой оказалось невозможным включить в ответ соответствующую извлекаемую запись, вместо этой последней в ответ включается сообщение об ошибке.

Термин Запись ответа обозначает извлекаемую запись или заменяющее ее сообщение об ошибке. Параметр  Записи ответа может представлять собой одно из следующих множеств:

- N записей ответа;

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

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

Примечание: В случае версии 2 адресат возвращает только одно не заменяющее записи сообщение об ошибке. В случае версии 3 таких сообщений может быть несколько.

Порядок появления записей ответа внутри параметра Записи ответа соответствует тому, в каком порядке они идентифицируются множеством результатов. Каждая из этих записей может (но не обязана) сопровождаться именем базы данных, в которой она хранится. Имя базы данных в обязательном порядке должно сопровождать возвращаемую первую запись ответа и обязательно должно сопровождать любую запись, взятую не из той же базы данных, что и непосредственно предшествующая ей запись.

 

3.2.2.1.8 Счетчик результатов и Число возвращаемых записей

 

Параметр Счетчик результатов представляет собой число записей базы данных, идентифицируемых множеством результатов. Если множество результатов пусто, счетчик результатов равен нулю. Параметр Число возвращаемых записей - это общее число записей, возвращаемых в составе ответа функции Поиск.

 

3.2.2.1.9 Следующая позиция множества результатов

 

Параметр Следующая позиция множества результатов принимает значение М+1, где М - позиция элемента множества результатов, идентифицирующего запись базы данных, соответствующую последней из возвращаемых записей ответа; или 0, если М=Счетчик результатов.

 

3.2.2.1.10 Статус поиска

 

Параметр Статус поиска, возвращаемый в составе ответа, принимает одно из следующих двух значений:

"успешно" - поиск завершен успешно.

"неуспешно" - поиск не завершен успешно.

Значение "успешно" не означает, что ожидаемые записи ответа будут возвращены в составе ответа (см. раздел "Статус представления", 3.2.2.1.11). Заметьте также, что значение "успешно" не означает, что при поиске были найдены какие-либо записи базы данных. Значение "неуспешно" не означает, что ни одна из ожидаемых записей ответа не будет возвращена. В последнем случае адресат возвращает одно или несколько сообщений об ошибках (см. примечание), указывающих, что поиск не может быть выполнен.

Примечание: В случае версии 2 адресат возвращает только одно сообщение об ошибке, не заменяющее записи ответа. В случае версии 3 таких сообщений может быть несколько.

 

3.2.2.1.11 Статус множества результатов и Статус представления

 

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

Параметр Статус множества результатов появляется в том и только в том случае, если параметр Статус поиска имеет значение "неуспешно", и принимает одно из следующих значений:

"успешно" - Все ожидаемые записи ответа доступны.

"частично-1" - Не все ожидаемые записи ответа могут быть возвращены, потому что выполнение запроса было завершено через функцию Контроль доступа.

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

"частично-3" - Не все ожидаемые записи ответа могут быть возвращены, потому что выполнение запроса было завершено через функцию Контроль ресурсов, по требованию источника.

"частично-4" - Не все ожидаемые записи ответа могут быть возвращены, потому что выполнение запроса было завершено через функцию Контроль ресурсов, по требованию адресата.

"неуспешно" - Ни одна из ожидаемых записей ответа не может быть возвращена. Будут возвращены одно или несколько сообщений об ошибке, не заменяющих записи (см. примечание к разделу 3.2.2.1.7).

 

3.2.2.1.12 Дополнительная информация поиска

 

Адресат может использовать в ответе этот параметр для передачи информации, являющейся побочным результатом процесса поиска, например, промежуточные счетчики результатов, причины, почему те или иные записи не могут быть возвращены, или почему тот или иной атрибут был использован для поиска в базе данных. Источник может использовать этот параметр в запросе для того, чтобы указать предпочтительный формат или содержание этой информации. Формат пользовательской информации, Ответ поиска - 1 (SearchResponse-1) определен в Приложении 8 USR. Этот параметр можно использовать только в случае Версии 3.

 

 

3.2.2.1.13 Другая информация

 

Как источник, так и адресат могут использовать этот параметр для дополнительной информации, выходящей за рамки данного стандарта. Этот параметр можно использовать только в случае версии 3.

 

3.2.2.1.14 Идентификатор ссылки

 

См. раздел 3.4.

 

 

3.2.3 ЗАДАЧА ИЗВЛЕЧЕНИЕ

 

 

Задача Извлечение состоит из двух функций: Представить и Сегмент.

Источник посылает запрос функции Представить, чтобы затребовать записи ответа, соответствующие позиции адресата в множестве результатов. Адресат в ответ на это посылает ответ функции Представить, содержащий требуемые записи ответа. Или же, если действует сегментация и требуемое количество записей ответа не помещается в ответное сообщение функции Представить, адресат может сегментировать свой ответ, посылая один или несколько запросов функции Сегмент перед ответом функции Представить. Порядок работы в случае сегментации описан в разделе 3.3.

Запросы функции Сегмент (если они имеются) вместе с ответом функции Представить называют Составным ответом функции Представить. Каждый запрос функции Сегмент так же, как ответ функции Представить, называют сегментом ответа функции Представить. Если составной ответ функции Представить состоит из одного сегмента (то есть только из ответа функции Представить), его называют Простым ответом функции Представить.

 

 

3.2.3.1 ФУНКЦИЯ ПРЕДСТАВИТЬ

 

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

Примечание: В случае версии 3 в одном запросе может содержаться несколько диапазонов.

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

Примечание: В этом разделе выражение "запись N" означает "запись ответа, соответствующая записи базы данных, идентифицируемой элементом множества результатов позиции N".

 

Параметр

Запрашивается источником

Запрашивается адресатом

Число запрашиваемых записей

х

 

Начальная позиция множества результатов

х

 

Дополнительные диапазоны

х (не обязат.)

 

Идентификатор множества результатов

х

 

Имена множеств элементов

х (не обязат.)

 

Предпочтительный синтаксис записей

х (не обязат.)

 

Спецификация структуры

х (не обязат.)

 

Максимальное число сегментов

х (не обязат.)

 

Максимальный размер сегмента

х (не обязат.)

 

Максимальный размер записи

х (не обязат.)

 

Записи ответа

 

х (если применимо)

Число возвращаемых записей

 

х

Следующая позиция множества результатов

 

х

Статус представления

 

х

Другая информация

х (не обязат.)

х (не обязат.)

Идентификатор ссылки

х (не обязат.)

х (не обязат.)

 

3.2.3.1.1 Число запрашиваемых записей и Начальная позиция множества результатов

 

Источник запрашивает записи в определенном диапазоне: N записей, начиная с записи М, где М= Начальная позиция множества результатов, N= Число запрашиваемых записей, и N не превышает числа (Счетчик результатов)+1.

 

3.2.3.1.2 Дополнительные диапазоны

 

Источник может запрашивать дополнительные диапазоны записей при помощи этого параметра, который состоит из одной или нескольких пар (М,N), где М и N - такие, как описано в разделе 3.2.3.1.1. Для первой пары (М,N) М должно быть больше или равно сумме значений параметров Начальная позиция множества результатов и Число запрашиваемых записей. Если пара (М1,N1) следует непосредственно за парой (М2,N2), то М1+N1 должно быть меньше, чем М2. Этот параметр можно использовать только в случае версии 3.

 

3.2.3.1.3 Идентификатор множества результатов

 

Источник указывает имя временного множества результатов, созданного во время текущего сеанса Z-связи, из которого должны извлекаться записи.

 

3.2.3.1.4 Имена множеств элементов

 

Источник может указывать желательную структуру извлекаемых записей. См. раздел 3.6.2.

 

3.2.3.1.5 Предпочтительный синтаксис записи

 

См. раздел 3.2.2.1.5.

 

3.2.3.1.6 Спецификация структуры

 

Этот параметр может использоваться только в том случае, если параметр Имена множеств элементов не используется, и только в случае версии 3. Параметр Спецификация структуры в случае его использования служит альтернативным средством указать желательную структуру извлекаемых записей. См. раздел 3.6.

 

3.2.3.1.7 Максимальное число сегментов. Максимальный размер сегмента. Максимальный размер записи.

Эти три параметра можно использовать только в случае версии 3.

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

Параметры Максимальный размер сегмента и/или Максимальный размер записи могут использоваться только в том случае, если действует сегментация уровня 2. Максимальный размер сегмента - это наибольший допустимый сегмент; если этот параметр используется, он имеет приоритет перед параметром Предпочтительный размер сообщения (только для данной операции Представить); если он не задан, то он принимает значение параметра Предпочтительный размер сообщения. Максимальный размер записи - это наибольшая допустимая извлекаемая запись в составе составного ответа функции Представить; если этот параметр используется, он должен быть не меньше значения параметра Максимальный размер сегмента.

Эти три параметра подробно описаны ниже, в разделе 3.3.3.2.

 

3.2.3.1.8 Записи ответа

Этот параметр состоит из последовательности записей ответа или, может быть, если действует сегментация уровня 2, из одного конечного фрагмента (см. раздел 3.3.3), за которым следуют ноль или более записей ответа. Или же (если в данной операции отсутствуют запросы функции Сегмент) этот параметр состоит из одного или нескольких сообщений об ошибке, - не заменяющих записи, - которые сообщают, что данный запрос не может быть выполнен и почему он не может быть выполнен (см. примечание ниже).

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

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

Когда источник получит составной ответ функции Представить, результат (если собрать вместе все сегменты и снова составить сегментированные записи) может быть одним из трех:

- N записей ответа, где N - Число затребованных записей,

- некоторое число записей ответа, которое оказывается меньше N (причину указывает параметр Статус представления) или

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

Примечание: В случае версии 2 адресат возвращает только одно сообщение об ошибке, не заменяющее записи. В случае версии 3 адресат возвращает одно или несколько таких сообщений.

 

3.2.3.1.9 Число возвращаемых записей и следующая позиция множества результатов

 

Параметр Число возвращаемых записей представляет собой общее число записей в составном ответе функции Представить. Значение параметра Следующая позиция множества результатов - это число М+1, где М - позиция элемента множества результатов, соответствующая последней записи из включенных в ответ, или 0, если М - позиция последнего элемента множества результатов.

 

3.2.3.1.10 Статус представления

 

Параметр Статус представления обязателен для ответа функции Представить, он может принимать те же значения, какие описаны для параметра Статус представления в разделе 3.2.2.1.11. Параметр Статус представления относится к составному ответу функции Представить.

 

 

 

 

 

3.2.3.1.11 Другая информация

 

Источник или адресат могут использовать этот параметр для дополнительной информации, выходящей за рамки данного стандарта. Этот параметр можно использовать только в случае версии 3.

 

3.2.3.1.12 Идентификатор ссылки

 

См. раздел 3.4.

 

 

3.2.3.2 ФУНКЦИЯ СЕГМЕНТ

 

 

Если записи, затребованные в запросе функции Представить, не помещаются в одном сегменте и если действует сегментация, адресат возвращает несколько сегментов, каждый из которых содержит часть записей. Все они, кроме последнего сегмента, будут возвращены в виде запросов функции Сегмент (последний сегмент будет возвращен как ответ функции Представить).

Примечания:

1. Функция Сегмент оформлена как запрос, хотя, по логике вещей, адресат не делает никакого запроса. Причина в том, что (для задач определения абстрактной функции и основанной на этом спецификации протокола) всякое сообщение является либо запросом, либо ответом, каждому ответу должен предшествовать запрос того же типа и на каждый запрос может быть не более одного ответа. Из-за этих организационных ограничений: функцию Сегмент невозможно организовать в виде ответа (потому что в этом случае она обязательно должны была бы отвечать на некоторый запрос функции Сегмент, а это - неподтверждаемая функция), а операция Представить не может быть организована как запрос функции Представить, за которым следует несколько ответов функции Представить.

2. Эта функция может использоваться только в случае версии 3.

3. Если сегментация не задействована, адресат не посылает никаких запросов функции Сегмент, и составной ответ функции Представить состоит из простого ответа функции Представить. Если запрашиваемые записи помещаются в одном сегменте (вне зависимости от того, задействована сегментация или нет), адресат не посылает запросов функции Сегмент и составной ответ функции Представить состоит из простого ответа функции Представить.

 

Параметр

Запрос адресата

Записи сегмента

х

Число возвращаемых записей

х

Другая информация

х (не обязат.)

Идентификатор ссылки

х (если применио)

 

3.2.3.2.1 Записи сегмента

 

Если действует сегментация уровня 1, параметр Записи сегмента  состоит из последовательности записей ответа.

Если действует сегментация уровня 2, параметр Записи сегмента может включать как записи ответа, так и фрагменты (см. раздел 3.3.3). Он может состоять из конечного фрагмента (кроме первого сегмента составного ответа функции Представить), за которым следуют ноль или более записей ответа, а за ними - некоторый начальный фрагмент. Ни начальный, ни конечный фрагменты не обязательны, но, если они оба отсутствуют, должна присутствовать по крайней мере одна запись ответа. (Заметьте, что фрагменты относятся только к извлекаемым записям, сообщения об ошибке не сегментируются.)

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

 

3.2.3.2.2 Число возвращаемых записей

 

Это - общее число записей ответа и начальных фрагментов в данном сегменте.

 

3.2.3.2.3 Другая информация

 

Адресат может использовать этот параметр для дополнительной информации, выходящей за рамки данного стандарта.

 

3.2.3.2.4 Идентификатор ссылки

 

См. раздел 3.4.

 

3.2.4 ЗАДАЧА УДАЛИТЬ-МНОЖЕСТВО-РЕЗУЛЬТАТОВ

 

Задача Удалить-множество-результатов состоит из одной функции: Удалить.

 

3.2.4.1 ФУНКЦИЯ УДАЛИТЬ

 

Функция Удалить позволяет источнику потребовать, чтобы адресат удалил указанные множества результатов или все множества результатов, созданные в течение данного сеанса Z-связи. В ответ адресат сообщает информацию, относящуюся к результату этой операции.

 

Параметр

Запрашивается источником

Сообщается адресатом

Функция удаления

х

 

Список множеств результатов

х (если применимо)

 

Статус операции Удалить

 

х

Статусы списка на удалене

 

х (если применимо)

Число неудаленных множеств

 

х (если применимо)

Общие статусы

 

х (если применимо)

Сообщение об удалении

 

х (не обязат.)

Другая информация

х (не обязат.)

х (не обязат.)

Идентификатор для ссылок

х (не обязат.)

х (если применимо)

 

3.2.4.1.1 Функция удаления

 

Источник указывает одно из двух значений:

по списку - удалить множества результатов, указанные в списке (см. 3.2.4.1.2), или

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

 

3.2.4.1.2 Список множеств результатов

 

Этот параметр используется только в том случае, если параметр Функция удаления принимает значение "по списку". Содержит список множеств результатов (созданных в течение данного сеанса Z-связи), которые следует удалить.

 

 

3.2.4.1.3 Статус операции Удалить

 

Статус операции Удалить - это статус запроса на удаление. Принимает значение "успешно" или одно из значений от "не удалось выполнить 3" до "не удалось выполнить 9" из таблицы, приведенной ниже.

 

3.2.4.1.4 Статусы списка на удаление

 

Статусы списка на удаление присутствуют в ответе функции Удалить, если значение параметра "Функция удаления" в запросе было "по списку". Параметр Статусы списка на удаление содержит тот же список множеств результатов, что и параметр Список множеств результатов запроса функции Удалить, где каждому множеству результатов соответствует его статус. Статусы могут принимать значения "успешно", одно из значений от "выполнить не удалось 1" до "выполнить не удалось 6", или значение "выполнить не удалось 10".

 

Статус

Описание

успешно

Множество (-а) результатов удалено.

выполнить не удалось 1

Множество результатов отсутствовало.

выполнить не удалось 2

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

выполнить не удалось 3

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

выполнить не удалось 4

Препятствия со стороны контроля доступа: в связи с запросом на удаление адресат направил запрос функции Контроль доступа, которому источник не удовлетворяет, или же источник не смог принять запрос функции Контроль доступа.

выполнить не удалось 5

Функция Контроль ресурсов прервала выполнение операции по требованию источника.

выполнить не удалось 6

Адресат прервал выполнение операции в связи с ограничениями ресурсов.

выполнить не удалось 7

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

выполнить не удалось 8

Не все множества результатов удалены (в случае запроса на общее удаление) (см. 3.2.4.1.5).

выполнить не удалось 9

Не все указанные множества результатов удалены (в случае запроса на удаление по списку).

выполнить не удалось 10

Множество результатов находится в работе.

 

Примечания:

1. Значения "выполнить не удалось 7" и "выполнить не удалось 8" могут иметь место только в том случае, если параметр Функция удаления принимает значение "общее".

2. Значение "выполнить не удалось 10" может использоваться только в случае версии 3.

 

3.2.4.1.5 Число не удаленных множеств и Общие статусы

 

Эти два параметра могут использоваться только в том случае, если параметр Функция удаления принимает значение "общее", а параметр Статус операции Удалить - значение "выполнить не удалось 8". Параметр Число не удаленных множеств показывает, сколько множеств результатов не удалось удалить, а параметр Общие статусы содержит статусы всех не удаленных множеств.

При этом следует отметить, что адресат не обязан предоставлять статус каждого множества результатов, не удаленного в ходе общего удаления. Например, адресат может прервать общее удаление после первой же неудачной попытки удаления одного из множеств результатов; в этом случае в параметре Общие статусы может оказаться только один статус.

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

 

3.2.4.1.6 Сообщение об удалении

 

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

 

3.2.4.1.7 Другая информация

 

Этот параметр может использоваться адресатом или источником для передачи дополнительной информации, не предусмотренной данным стандартом. Этот параметр может использоваться только в случае версии 3.

 

3.2.4.1.8 Идентификатор ссылки

 

См. п. 3.4.

 

3.2.5 ЗАДАЧА КОНТРОЛЬ ДОСТУПА

 

Задача Контроль доступа состоит из одной функции: Контроль доступа.

 

3.2.5.1 Функция Контроль доступа

 

Функция Контроль доступа позволяет адресату проверить полномочия источника. Проверка может относиться к отдельной операции или ко всему сеансу Z-связи. Механизм запроса/ответа функции Контроль доступа можно использовать для проверки уровня доступа или идентификации, включая проверку пароля, public key criptosystem и алгоритмическую проверку уровня доступа.

Если задействована функция Контроль ресурсов, источник должен быть готов принимать от адресата запросы контроля ресурсов и отвечать на них. Адресат может направлять источнику запрос функции Контроль ресурсов, либо входящий в состав конкретной (активной) операции, либо относящийся к данному сеансу Z-связи.

- Если задействована опция Параллельное выполнение операций, то:

   -- Если запрос функции Контроль доступа включает в себя Идентификатор ссылки: указанный Идентификатор ссылки должен соответствовать активной операции; в этом случае данный запрос функции Контроль доступа является частью этой операции. Ответ функции Контроль ресурсов тоже должен содержать этот Идентификатор ссылки.

   -- Если запрос функции Контроль доступа не включает в себя Идентификатор ссылки: запрос и ответ функции Контроль доступа не являются частью никакой операции, они относятся к данному сеансу Z-связи в целом.

- Если действует опция Последовательное выполнение операций: адресат может направлять источнику запрос функции Контроль доступа только при условии наличия активной операции; запрос и последующий ответ функции Контроль доступа являются частью этой операции и должны содержать Идентификатор ссылки для этой операции (если Идентификатор отсутствует в инициализирующем запросе, его значение считается равным "null").

Контроль доступа по отношению к операции происходит следующим образом:

1. Направив адресату запрос на инициализацию операции, источник должен быть готов к тому, чтобы получить от адресата запрос функции Контроль доступа (для этой операции), ответить на этот запрос, послав ответ функции Контроль доступа, затем получить еще один запрос функции Контроль доступа, и т.д., пока, наконец, не получит завершающий ответ операции. Адресат может приостановить обработку операции с момента отправки запроса функции Контроль доступа до получения ответа функции Контроль доступа. Выполнение других операций при этом не прекращается. Если ответ источника удовлетворяет адресата, выполнение операции продолжается, как если бы никакой проверки не происходило. Если же источник не может правильно ответить на запрос функции Контроль доступа, то в завершающем ответе операции адресат может указать, что операция завершена в связи с отказом функции Контроль доступа.

2. Если источник не может правильно ответить на запрос функции Контроль доступа во время операции Инициализация, адресат может отвергнуть данный сеанс Z-связи (установив для параметра Результат значение "отвергнуть" и, возможно, добавив необязательное сообщение в поле Информация пользователя ответа функции Инициализация). Но адресат не обязательно отвергает сеанс Z-связи. Например, адресат может во время выполнения операции Инициализация провести проверку уровня доступа источника, чтобы определить, имеет ли право источник использовать определенную затребованную им функцию. Если источник не может дать удовлетворительного ответа, адресат можно просто отказать ему в выполнении этой конкретной операции (посредством параметра Опции).

3. При выполнении операции Поиск или Представить, во время подготовки адресатом записей для представления, адресат может направить источнику запрос функции Контроль доступа, относящийся к отдельной записи. Если источник не может дать правильного ответа, адресат может вместо этой записи послать ему диагностическое сообщение: "контрольная проверка не прошла, запись исключена из ответа".

Контроль доступа по отношению к сеансу Z-связи в целом происходит следующим образом:

1. Если действует опция Параллельное выполнение операций, то после инициализации источник может в любой момент в продолжение всего сеанса получить запрос функции Контроль доступа, независимо наличия активных операций. Он должен ответить на этот запрос, после чего может последовать еще один запрос функции Контроль доступа, и т.д.

2. Адресат может приостановить выполнение некоторых или всех активных операций, начиная с момента отправки запроса функции Контроль доступа до получения ответа функции Контроль доступа. Если ответ источника удовлетворяет адресата, выполнение приостановленных операций продолжается, как если бы никакой проверки не происходило.

3. Если источник не может правильно ответить на запрос функции Контроль доступа, адресат может завершить одну или несколько операций, но при этом может не прекращать сеанс Z-связи. В этом случае в завершающем ответе операции адресат может указать, что выполнение операции завершено в связи с отказом функции Контроль доступа. Адресат может также завершить сеанс Z-связи.

 

Параметр

Запрашивается адресатом

Сообщается источником

Проверка уровня доступа

х

 

Ответ проверки уровня доступа

 

х

Другая информация

х (не обязат.)

х (не обязат.)

Идентификатор ссылки

х (если применимо)

х (если применимо)

 

3.2.5.1.1 Проверка уровня доступа и Ответ проверки уровня доступа

 

Определения формата и содержания проверки и ответа подлежат регистрации. Несколько определений определены и зарегистрированы в Приложении 7 ACC. Содержимое этих двух параметров может также устанавливаться по предварительному соглашению между конкретными источником и адресатом.

 

3.2.5.1.2 Другая информация

 

Этот параметр может использоваться как источником, так и адресатом для передачи дополнительной информации, не оговоренной в данном стандарте. Этот параметр может использоваться только в случае версии 3.

 

 

 

3.2.5.1.3 Идентификатор ссылки

 

Если задействована опция последовательного выполнения операций или если задействована опция параллельного выполнения операций, но данная проверка относится только к одной конкретной операции, то параметр Идентификатор ссылки используется, как сказано в разделе 3.4. Если действует опция "параллельное выполнение операций", а проверка относится ко всему сеансу Z-связи, то Идентификатор ссылки не должен присутствовать ни в контрольном запросе, ни в ответе.

 

3.2.6 ЗАДАЧА КОНТРОЛЬ СЧЕТОВ/РЕСУРСОВ

 

Задача Контроль счетов/ресурсов состоит из трех функций:

- функция Контроль ресурсов, вызывается адресатом, либо как составная часть активной операции (любого типа), либо по отношению ко всему сеансу Z-связи;

- функция Экстренный контроль ресурсов, вызывается источником как составная часть активной операции (любого типа, кроме операции Инициализация), и

- функция Отчет о ресурсах, вызывается источником для инициализации операции Отчет о ресурсах.

 

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

Функция Экстренный контроль ресурсов позволяет источнику потребовать, чтобы адресат инициализировал функцию Контроль ресурсов либо отменил операцию.

Функция Отчет о ресурсах позволяет источнику потребовать, чтобы адресат передал ему Отчет о ресурсах, относящийся к завершенной операции или ко всему сеансу Z-связи.

 

3.2.6.1 Функция Контроль ресурсов

 

Источник должен быть готов принимать от адресата запросы функции Контроль ресурсов и отвечать на них, если задействован контроль ресурсов. Адресат может направлять источнику запрос функции Контроль ресурсов либо в рамках некоторой (активной) операции, либо по отношению ко всему сеансу Z-связи.

 

- Если задействована опция "параллельное выполнение операций":

   -- Если запрос функции Контроль ресурсов содержит Идентификатор ссылки: указанный Идентификатор ссылки должен соответствовать активной операции; запрос функции Контроль ресурсов является составной частью этой операции. Ответ функции Контроль ресурсов (в случае его наличия) тоже должен содержать этот Идентификатор ссылки.

   -- Если запрос функции Контроль ресурсов не содержит Идентификатора ссылки: Запрос и ответ функции Контроль ресурсов не входят в состав ни одной операции и относятся ко всему сеансу Z-связи.

- Если задействована опция "последовательное выполнение операций": адресат может направлять источнику запрос функции Контроль ресурсов только при наличии активной операции; запрос функции Контроль ресурсов и (возможный) ответ на этот запрос являются частью этой операции и обязательно должны содержать Идентификатор ссылки этой операции (если в запросе он отсутствовал, его значение принимается равным "null").

В запросе функции Контроль ресурсов должно быть указано, требуется ли ответ:

- Если требуется, источник должен направить адресату ответ функции Контроль ресурсов. Если запрос функции Контроль ресурсов был частью некоторой операции, ответ будет частью этой же операции; адресат ожидает ответа функции Контроль ресурсов, а получив его, направляет источнику завершающий ответ после завершения обработки операции.

- Если не требуется, источник не должен направлять адресату ответ функции Контроль ресурсов. Если запрос функции Контроль ресурсов был частью некоторой операции, адресат направляет источнику завершающий ответ после завершения обработки операции.

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

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

 

Параметр

Запрашивается адресатом

Сообщается источником

Отчет о ресурсах

х (не обязат.)

 

Можно получить частичный результат

х (если применимо)

 

Флаг приостановки операции

х (если применимо)

 

Требуется ответ

х

 

Флаг экстренного запроса

х (не обязат.)

 

Флаг продолжения

 

х

Требуется множество результатов

 

х (если применимо)

Другая информация

х (не обязат.)

х (не обязат.)

Идентификатор ссылки

х (если применимо)

х (если применимо)

 

3.2.6.1.1 Отчет о ресурсах

 

Этот параметр может использоваться для передачи информации о текущем и прогнозируемом расходе ресурсов на сервере. Форматы отчета-1 и отчета-2 параметра Отчет о ресурсах определены в Приложении 6 RSC.

 

3.2.6.1.2 Можно получить частичный результат

 

Адресат сообщает статус множества результатов посредством флага "Можно получить частичный результат", который может принимать одно из следующих значений:

подмножество -

можно получить частичные, достоверные результаты.

промежуточный результат -

можно получить частичные результаты, не обязательно достоверные.

никаких результатов -

нельзя получить никаких результатов.

 

Этот параметр имеет смысл только как часть операции поиска. Если он принимает значение "подмножество" или "промежуточный результат", вслед за этим адресат принимает от источника запрос функции Представить по отношению к данному множеству результатов, если источник указывает (посредством флага продолжения), что операцию следует завершить, и если параметр "Требуется множество результатов" принимает значение "да".

Если параметр "Можно получить частичный результат" принимает значение "никаких результатов", адресат не обязан принимать от источника запрос функции Представить, если источник укажет (посредством флага продолжения), что операцию следует завершить.

Заметьте, что если флаг приостановки операции принимает значение "нет", ситуация с возможностью получения частичного результата может измениться, потому что обработка операции Поиск может продолжаться. В любом случае, значения параметров Статус поиска и Статус множества результатов следует воспринимать как руководящие указания.

 

3.2.6.1.3 Флаг приостановки операции

 

Этот параметр имеет смысл только в том случае, когда запрос относится к конкретной операции. Адресат указывает, было ли выполнение этой операции приостановлено вплоть до получения ответа функции Контроль ресурсов. Этот флаг имеет место, если и только если параметр Требуется ответ принимает значение "да".

 

3.2.6.1.4 Требуется ответ

 

Адресат указывает, требуется ли ответ (от источника) на данный запрос.

 

3.2.6.1.5 Флаг экстренного запроса

 

Этот параметр имеет смысл, только если запрос относится к операции. Адресат может (но не обязан) указать, является ли данный запрос результатом запроса функции Экстренный контроль ресурсов, со стороны источника.

 

3.2.6.1.6 Флаг продолжения

 

Этот параметр имеет смысл, только если запрос относится к операции. Источник сообщает адресату, нужно ли продолжать обработку операции.

 

3.2.6.1.7 Требуется множество результатов

 

Этот флаг имеет смысл только:

- во время выполнения операции Поиск,

- в случае, если параметр "Можно получить частичный результат" принимает значение "подмножество" или "промежуточный результат", и

- когда параметр Флаг продолжения принимает значение "не продолжать".

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

 

3.2.6.1.8 Другая информация

 

Этот параметр может использоваться как источником, так и адресатом для передачи дополнительной информации, не оговоренной в данном стандарте. Этот параметр может использоваться только в случае версии 3.

 

3.2.6.1.9 Идентификатор ссылки

 

См. раздел 3.4.

 

3.2.6.2 ФУНКЦИЯ ЭКСТРЕННЫЙ КОНТРОЛЬ РЕСУРСОВ

 

Источник может направлять адресату запросы функции Экстренный контроль ресурсов во время выполнения любой операции (кроме операции Инициализация) как часть этой операции. Такой запрос сообщает адресату, что источник рекомендует ему: а) просто передать ему Отчет о ресурсах, то есть направить ему запрос функции Контроль ресурсов, причем параметр Требуется ответ должен иметь значение "нет";

б) провести полный контроль ресурсов, то есть направить источнику запрос функции Контроль ресурсов, причем параметр Требуется ответ должен принимать значение "да"; или

в) отменить операцию.

Адресат не обязан выполнять те или иные действия при получении запроса функции Экстренный контроль ресурсов. Запрос не предусматривает ответа; если адресат пожелает инициализировать функцию Контроль ресурсов, он делает это в одностороннем порядке. (Если источник направляет адресату запрос функции Экстренный контроль ресурсов, а затем получает запрос функции Контроль ресурсов в рамках той же операции, он не всегда может определить, является ли этот последний запрос результатом запроса фунцкии Экстренный контроль ресурсов. Но адресат может сообщить об этом, включив в запрос функции Контроль ресурсов параметр Флаг экстренного контроля.)

Если источник направляет адресату запрос функции Экстренный контроль ресурсов с просьбой отменить операцию, и если адресат сочтет нужным выполнить эту просьбу, источник может ожидать, что он получит завершающий ответ с сообщением о том, что выполнение операции было завершено по требованию источника.

Хотя источник может направить адресату запрос функции Экстренный контроль ресурсов в рамках некоторой активной операции, к тому времени, когда адресат его получит, операция может уже оказаться выполнена. В этом случае  адресат проигнорирует запрос функции Экстренный контроль ресурсов. Кроме того, запрос функции Экстренный контроль ресурсов может поступить к адресату в то время, когда он уже инициализировал функцию Контроль ресурсов для данной операции и ожидает ответа на этот запрос. В этом случае адресат также проигнорирует запрос функции Экстренный контроль ресурсов. (Заметьте, что, вообще говоря, адресат может проигнорировать любой запрос функции Экстренный контроль ресурсов.)

 

Параметр

Запрашивается источником

Требуемое действие

х

Предпочтительный формат отчета о ресурсах

х (если применимо)

Требуется множество результатов

х (если применимо)

Другая информация

х (не обязат.)

Идентификатор ссылки

х (если применимо)

 

3.2.6.2.1 Требуемое действие

 

Источник указывает одно из следующих значений:

отчет о ресурсах - направить источнику запрос функции Контроль ресурсов и установить для параметра Требуется ответ значение "нет".

контроль ресурсов - направить источнику запрос функции Контроль ресурсов и установить для параметра Требуется ответ значение "да".

отменить - завершить операцию.

 

3.2.6.2.2 Предпочтительный формат отчета о ресурсах

 

Источник может указать, в каком формате он предпочитает получить отчет о ресурсах.

 

3.2.6.2.3 Требуется множество результатов

 

Этот флаг имеет смысл только для операции Поиск, причем параметр Требуемое действие должен принимать значение "отменить". Если флаг принимает значение "да", это значит, что источник требует, чтобы адресат сохранил множество результатов (возможно, частичное) для последующих операций Представить. См. пункт 3.2.6.1.7.

 

 

 

 

3.2.6.2.4 Другая информация

 

Этот параметр может использоваться как источником, так и адресатом для передачи дополнительной информации, не оговоренной в данном стандарте. Этот параметр может использоваться только в случае версии 3.

 

3.2.6.2.5 Идентификатор ссылки

 

См. раздел 3.4.

 

3.2.6.3 Функция Отчет о ресурсах

 

Функция Отчет о ресурсах позволяет источнику затребовать у адресата Отчет о ресурсах, относящийся к некоторой выполненной операции или ко всему сеансу Z-связи.

Примечание: Функция Отчет о ресурсах имеет следующее отличие от функции Экстренный контроль ресурсов: функция Экстренный контроль ресурсов - неподтверждаемая; у нее есть запрос, но нет ответа. Запрос является частью операции, но не инициализирует никакой операции; он запрашивает отчет, относящийся именно к этой активной операции. А функция Отчет о ресурсах, напротив, - подтверждаемая; она содержит запрос и ответ (адресат обязан ответить, хотя и не обязан включать в ответ отчет о ресурсах). И запрос, и ответ инициализируют и завершают каждый свою операцию; в запросе указывается некоторая уже выполненная операция и запрашивает отчет, относящийся к этой операции (или же он может запросить отчет, относящийся ко всему сеансу Z-связи).

 

Параметр

Запрашивается источником

Сообщается адресатом

Предпочтительный формат отчета о ресурсах

х (не обязат.)

 

Идентификатор операции

х (не обязат.)

 

Статус отчета о ресурсах

 

х

Отчет о ресурсах

 

х (не обязат.)

Другая информация

х (не обязат.)

х (не обязат.)

Идентификатор ссылки

х (не обязат.)

х (если применимо)

 

3.2.6.3.1 Предпочтительный формат отчета о ресурсах

 

Источник может указать, в каком формате он предпочитает получить отчет о ресурсах.

 

3.2.6.3.2 Идентификатор операции

 

Источник может передать адресату этот параметр, чтобы сообщить, для какой выполненной операции он хочет получить отчет о ресурсах. Этот параметр может использоваться только в случае версии 3.

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

Примечания:

1. После завершения операции, если источник собирается направить запрос операции Контроль ресурсов по отношению к этой операции, он должен сам позаботиться о том, чтобы до этого не выполнялись другие операции с тем же Идентификатором ссылки.

2. Источник может (но не обязан) использовать для операции Контроль ресурсов тот же Идентификатор ссылки, который указан в параметре Идентификатор операции, но и в этом случае Идентификатор операции должен будет относиться к уже завершенной операции. Но все-таки не рекомендуется источнику указывать для параметра Идентификатор операции то же значение, что и значение параметра Идентификатор ссылки, используемое для некоторой активной операции, кроме данной операции Отчет о ресурсах. В противном случае адресат может (хотя и не обязательно) счесть данный запрос ошибочным (см. значение "не удалось выполнить 6" параметра Статус отчета о ресурсах).

3. Если источник хочет получить информацию о ресурсах для какой-либо активной операции, ему следует воспользоваться не операцией Контроль ресурсов, а функцией Экстренный контроль ресурсов в рамках интересующей его операции. Если выполнение операции будет завершено прежде, чем адресат получит запрос функции Экстренный контроль ресурсов, источник получит завершающий ответ операции и после этого может направить адресату запрос операции Контроль ресурсов по отношению к этой (выполненной) операции.

- Если параметр Идентификатор операции отсутствует, это значит, что источник запрашивает отчет о ресурсах, относящийся ко всему сеансу Z-связи.

 

3.2.6.3.3 Статус отчета о ресурсах

 

Адресат сообщает источнику одно из следующих значений статуса:

 

выполнено успешно -

В ответе содержится отчет о ресурсах (в предпочтительном формате, если в запросе содержался параметр Предпочтительный формат отчета о ресурсах).

выполнено частично -

В ответе содержится отчет о ресурсах, но не в предпочтительном формате (применимо только в том случае, если в запросе содержался параметр Предпочтительный формат отчета о ресурсах).

выполнить не удалось 1 -

Адресат не может предоставить источнику отчет о ресурсах.

выполнить не удалось 2 -

Адресат завершил операцию в связи с ограничениями ресурсов.

выполнить не удалось 3 -

Отказ функции Контроль доступа.

выполнить не удалось 4 -

Операция не выполнена по неуказанным причинам.

выполнить не удалось 5 -

Неизвестна операция с указанным идентификатором.

выполнить не удалось 6 -

Имеется активная операция с указанным идентификатором.

 

Примечание: Значения "выполнить не удалось 5" и "выполнить не удалось 6" применимы только в случае версии 3.

 

3.2.6.3.4 Отчет о ресурсах

 

См. пункт 3.2.6.1.1.

 

3.2.6.3.5. Другая информация

 

Этот параметр может использоваться как источником, так и адресатом для передачи дополнительной информации, не оговоренной в данном стандарте. Этот параметр может использоваться только в случае версии 3.

 

3.2.6.3.6 Идентификатор ссылки

 

См. раздел 3.4.

 

 

3.2.7 ЗАДАЧА СОРТИРОВКА

 

 

Задача Сортировка состоит из одной функции - Сортировка.

 

 

 

3.2.7.1 Функция Сортировка

 

Функция Сортировка позволяет источнику потребовать, чтобы адресат переупорядочил некоторое множество результатов (или соединил несколько множеств результатов и затем переупорядочил их). Источник указывает, как нужно упорядочить множество результатов. Множество результатов упорядочивается, как указано, и в дальнейшем, получая запросы с указанием позиций по этому множеству результатов, адресат будет обрабатывать их в соответствии с этим порядком.

 

Параметр

Запрашивается источником

Сообщается адресатом

Исходные множества результатов

х

 

Переупорядоченное множество результатов

х

 

Последовательность сортировки

х

 

Статус сортировки

 

х

Статус множества результатов

 

х (если применимо)

Диагностика

 

х (если применимо)

Другая информация

х (не обязат.)

х (не обязат.)

Идентификатор ссылки

х (не обязат.)

х (если применимо)

 

3.2.7.1.1 Исходные множества результатов

 

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

 

3.2.7.1.2 Переупорядоченное множество результатов

 

Этот параметр представляет собой имя переупорядоченного множества результатов. Это может быть имя одного из уже имеющихся множеств результатов (в том числе, одно из имен, включенных в параметр Исходные множества результатов); в этом случае при обработке операции Сортировка прежнее множество результатов уничтожается и создается новое множество результатов с тем же именем, содержимое которого представляет собой результат сортировки. Если параметр Переупорядоченное множество результатов не является именем уж существующего множества результатов и если операция Сортировка была выполнена, адресат создает множество результатов с указанным именем, содержимое которого представляет собой результат сортировки; при этом содержимое Исходных множеств результатов остается без изменений. И в том и в другом случае, если операция Сортировка не была выполнена, окончательное содержание Переупорядоченного множества результатов будет таким, как указано в параметре Статус множества результатов.

 

3.2.7.1.3 Последовательность сортировки

 

Параметр Последовательность сортировки содержит перечень элементов, по которым будет проводится сортировка, а также как должно происходить упорядочение - по возрастанию или по убыванию, следует ли учитывать отдельно заглавные буквы (если это применимо), и как должен поступать адресат, если в записи из сортируемого множества результат отсутствует один из элементов. Каждый элемент сортировки представляет собой набор атрибутов, наименование поля сортировки или спецификацию элемента, которая (см. ниже) объявляется адресатом для использования в качестве ключа сортировки.

Примечание: Адресат объявляет эту информацию посредством задачи Объяснение или посредством какого-либо иного механизма, выходящего за рамки данного стандарта.

 

 

 

3.2.7.1.4 Статус сортировки

 

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

 

Выполнено успешно -

Сортировка была выполнена успешно.

Выполнено  частично 1 -

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

Выполнить не удалось -

Сортировка не была выполнена. Адресат приводит одно или несколько диагностических сообщений  в параметре Диагностика.

 

3.2.7.1.5 Статус множества результатов

 

Адресат передает этот параметр, если и только если параметр Статус сортировки принимает значение "выполнить не удалось". Этот параметр относится к содержимому Переупорядоченного множества результатов и может принимать одно из следующих значений:

 

пусто -

Множество результатов пусто.

промежуточное -

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

без изменений -

Содержимое множества результатов осталось без изменений (применимо только в том случае, если Переупорядоченное множество результатов является одним из Исходных множеств результатов).

никакого -

Множество результатов не было создано (применимо только в том случае, если Переупорядоченное множество результатов не является одним из Исходных множеств результатов).

 

3.2.7.1.6 Диагностика

 

Адресат передает этот параметр, если параметр Статус сортировки принимает значение "не удалось выполнить". Параметр содержит одну или несколько диагностических записей.

 

3.2.7.1.7 Другая информация

 

Этот параметр может использоваться как источником, так и адресатом для передачи дополнительной информации, не оговоренной в данном стандарте.

 

3.2.7.1.8 Идентификатор ссылки

 

См. раздел 3.4.

 

 

3.2.8 ЗАДАЧА ПРОСМОТР

 

 

Задача Просмотр состоит из одной функции - Сканирование.

 

3.2.8.1 ФУНКЦИЯ СКАНИРОВАНИЕ

 

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

 

Параметр

Запрашивается источником

Сообщается адресатом

Имена баз данных

х

 

Список терминов и начальная позиция

х

 

Размер шага

х (не обязат.)

х (если применимо)

Число пунктов

х

х

Позиция в ответе

х (не обязат.)

х (не обязат.)

Статус сканирования

 

х

Пункты ответа

 

х (не обязат.)

Другая информация

х (не обязат.)

х (не обязат.)

Идентификатор ссылки

х (не обязат.)

х (если применимо)

 

3.2.8.1.1 Имена баз данных

 

Параметр Имена баз данных определяет набор баз данных, к которым относится список терминов (указанный в параметре Список терминов и начальная позиция).

 

3.2.8.1.2 Список терминов и начальная позиция

 

Источник передает адресату список атрибутов и термин. В списке атрибутов содержатся атрибуты, указывающие, какой список терминов следует сканировать. Термин, заданный этими атрибутами, показывает, где нужно начинать сканирование; предположительно, это будет один из пунктов списка терминов. Если соответствующего пункта в списке не окажется, за начальную позицию будет принят первый пункт списка, значение которого превышает указанное значение.

Например, пусть мы хотим сканировать список личных имен; список атрибутов может состоять из одного-единственного атрибута, тип которого - "использование", а значение - "личное имя"; термин будет задавать некоторое имя, а идентификатор базы данных будет идентифицировать одну или несколько баз данных, к которым относится список личных имен.

 

3.2.8.1.3 Размер шага

 

Источник может указать, сколько должно помещаться пунктов списка терминов между двумя соседними пунктами ответа. Значение "ноль" означает: "ничего не пропускать". Если адресат не может поддерживать заданный размер шага, он устанавливает для параметра Статус сканирования значение "выполнить не удалось" и передает не суррогатную диагностику, такую как "поддерживается только нулевой шаг" или "указанный шаг не поддерживается". Если источник не указывает размер шага, его определяет адресат и включает выбранный размер шага в свой ответ.

 

3.2.8.1.4 Число пунктов

 

Источник указывает, сколько пунктов ответа он желает получить. Адресат указывает, сколько реально пунктов содержится в ответе. Если реального число пунктов меньше предложенного, причина этого объясняется в параметре Статус сканирования.

 

3.2.8.1.5 Позиция в ответе

 

Источник может (не обязательно) указать, какую позицию в ответе должно занимать указанное им начальное значение. Если этот параметр принимает значение 1, это должен быть первый пункт ответа. Значение 0 подразумевает, что ответ должен начинаться с термина, непосредственно следующего за начальным термином. Значение Число-пунктов + 1 означает, что источнику нужны термины, расположенные непосредственно перед начальным термином.

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

Пример: Если для параметров Число пунктов и Позиция в ответе были заданы значения 10 и 3, соответственно, - значит, источнику нужны два термина, расположенные непосредственно перед начальным значением, затем само начальное значение, и затем семь значений, следующих непосредственно за ним.

Примечание: Если в ответе параметр Позиция в ответе оказывается меньше значения, заданного в запросе, источник может сделать вывод, что в начале списка терминов оказалось меньше терминов, чем ожидалось. Но если параметр Позиция в ответе имеет в ответе такое же значение, какое предлагалось в запросе, а Число пунктов в ответе меньше числа, предложенного в запросе, источник не может заключить из этого, что в конце списка терминов оказалось меньше терминов, чем ожидалось, - если только Статус сканирования не имеет значения "Выполнено частично 5". Причина, по которой в ответе оказалось меньше терминов, чем предполагалось, должна быть указана в параметре Статус сканирования.

 

3.2.8.1.6 Статус сканирования

 

Адресат сообщает результат операции. Для этого параметра определены следующие значения:

 

выполнено успешно -

В ответе содержится столько пунктов (пунктов списка терминов или суррогатной диагностики), сколько требовалось.

выполнено частично 1 -

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

выполнено частично 2 -

В ответ не удалось включить столько терминов, сколько ожидалось, потому что они не поместились в ответное сообщение.

выполнено частично 3 -

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

выполнено частично 4 -

В ответ не удалось включить столько терминов, сколько ожидалось, потому что адресат завершил операцию в связи с контролем ресурсов.

выполнено частично 5 -

В ответ не удалось включить столько терминов, сколько ожидалось, потому что в списке терминов оказалось меньше пунктов (либо в начале, либо в конце, либо с обоих концов списка терминов), чем было указано в запросе.

выполнить не удалось -

В ответ не удалось включить ни одного термина. Источнику передается одно или несколько сообщений несуррогатной диагностики.

 

3.2.8.1.7 Пункты ответа

 

Параметр Пункты ответа, возвращаемый адресатом:

- Содержит одно из следующих значений:

   -- N пунктов, где каждый пункт представляет собой один из пунктов списка терминов или суррогатное диагностическое сообщение, и где N = Число пунктов, указанное в запросе.

   -- Некоторое число пунктов, меньшее N, которое может быть равно нулю (причина этого объясняется в параметре Статус сканирования).

- Может также содержать:

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

 

Каждый пункт списка терминов содержит термин (встречающийся в одной из баз данных, указанных в параметре Имена баз данных) и, возможно, одно из следующих значений:

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

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

- Предлагаемый альтернативный термин.

- Информация о встречаемости; здесь может содержаться число записей, в которых встречается этот термин. Здесь может быть также приведена статистика для определенных атрибутов, возможно, с разбивкой по базам данных. Или в пункте списка терминов могут быть перечислены базы данных, в которых встречается этот термин, в том числе с определенными атрибутами, но без численной статистики.

- Другая информация: дополнительная информация в связи с данным пунктом.

 

3.2.8.1.8 Другая информация

 

Этот параметр может использоваться как источником, так и адресатом для передачи дополнительной информации, не оговоренной в данном стандарте.

 

3.2.8.1.9 Идентификатор ссылки

 

См. раздел 3.4.

 

 

3.2.9 ЗАДАЧА РАСШИРЕННЫЕ ФУНКЦИИ

 

 

Задача Расширенные функции состоит из одной функции - Расширенные функции.

 

3.2.9.1 Функция Расширенные функции

 

Функция Расширенные функции (РФ) позволяет источнику создавать, редактировать или удалять пакеты заданий, размещенные в системе адресата. Адресат хранит пакеты заданий в специальной базе данных, которая описана в разделе 3.2.9.2. Каждый пакет относится к некоторому заданию РФ.

Расширенная функция - это тип задания, связанный с извлечением информации, но не определенный в числе функций стандарта Z39.50. Выполнение задания адресатом не регламентируется данным стандартом. Расширенные функции, определенные в этом стандарте, перечислены в разделе 3.2.9.1.2. Определения этих функций содержатся в Приложении 8 EXT.

Источник передает адресату запрос функции РФ с требованием выполнить некоторое задание. В запрос входят параметры, которые используются адресатом для построения пакета задания. Адресат проверяет, корректен ли запрос, не нарушает ли он уровня доступа пользователя; могут проверяться и другие ограничения, зависящие от адресата. Адресат передает источнику ответ функции РФ с сообщением о том, что запрос принят, или о том, по какой причине запрос отвергнут.

Функция РФ - подтверждаемая функция, инициализируемая источником. Операция РФ состоит из запроса источника и ответа адресата, между которыми могут проходить сообщения функций Контроль доступа и Контроль ресурсов. Но, хотя в результате запроса может быть инициализировано выполнение некоторого задания, само это задание не считается частью операции РФ стандарта Z39.50. Ответ адресата, завершающий операцию РФ, не обязательно совпадает с завершением задания. Срок жизни задания может быть больше одного сеанса Z-связи.

Результатом выполнения операции РФ становится создание пакета задания, представленного в виде записи в базе данных РФ.

Например, когда адресат создает пакет задания типа Устойчивое множество результатов (PersistentResultSet), создается некоторое (устойчивое) множество результатов, представленное созданным пакетом задания, в виде записи в базе данных расширенных функций. Когда впоследствии источник извлекает этот пакет во время того же самого или другого сеанса Z-связи, в этом сеансе то самое устойчивое множество результатов становится доступным, как множество результатов стандарта Z39.50 (то есть, как недолговечное множество результатов; имя этого множества результатов, которое будет использоваться в течение сеанса Z-связи, содержится в пакете задания). Когда адресат удаляет пакет задания, устойчивое множество результатов уничтожается.

В пакете задания содержатся параметры, некоторые из которых одинаковы для всех пакетов, вне зависимости от типа пакета, а другие могут быть специфическими для конкретных расширенных функций. Некоторые из общих параметров (в таблице, приведенной ниже, они перечислены в правом столбце под заголовком "параметр пакета задания") предоставляются источником как параметры запроса функции РФ и используются адресатом при формировании пакета задания; некоторые из параметров, предоставленных источником, адресат может отменить. Остальные общие параметры предоставляются адресатом. Специфические параметры определяются на основе параметра "Специфические параметры задания" запроса функции РФ (см. Приложение 8 EXT).

Примечание: Упомянутый ниже параметр ответа Пакет задания относится к реально созданному пакету задания. Если он имеется, то включает в себя некоторые или все (в зависимости от параметра Элементы) параметры, перечисленные в столбце "Параметр пакета задания".

 

Параметр

Запрашивается источником

Сообщается адресатом

Параметр

пакета

задания

Функция

 

 

   х

Тип пакета

 

 

   х

Имя пакета

х (не обязат.)

 

х (не обязат.)

Идентификатор пользователя

х (не обязат.)

 

х (не обязат.)

Срок хранения

х (не обязат.)

 

х (не обязат.)

Разрешения

х (не обязат.)

 

х (не обязат.)

Описание

х (не обязат.)

 

х (не обязат.)

Ссылка адресата

 

??

х (не обязат.)

Дата/время создания

 

 

х (не обязат.)

Статус задания

 

 

   х

Диагностика пакета

 

 

х (не обязат.)

Специфические параметры задания

   х

 

(см. примеч.)

Ожидать выполнения

   х

 

 

Элементы

х (если применимо)

 

 

Статус операции

 

   х

 

Диагностика операции

 

   х

 

Пакет задания

 

х (если применимо)

 

Другая информация

х (не обязат.)

х (не обязат.)

 

Идентификатор ссылки

х (не обязат.)

х (если применимо)

 

               

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

 

3.2.9.1.1 Функция

 

Источник указывает одно из значений: Создать, Удалить или Отредактировать.

Если выбрана функция Создать, - значит, адресат должен создать пакет задания и присвоить ему имя, указанное в параметре Имя пакета, если этот параметр имеется.

Если выбрана одна из функций Удалить или Отредактировать, адресат должен удалить или отредактировать пакет задания, указанный в параметре Имя пакета. Если адресат поддерживает функции удаления или редактирования, он может, тем не менее, отказать в выполнении запроса, - например, потому что задание уже выполняется или пакет находится в работе.

Если выбрана функция Удалить, источник требует, если выполнение указанного задания не начато, чтобы оно не начиналось; если выполнение задания уже идет, адресат должен либо завершить выполнение задания, либо сообщить об отказе в выполнении запроса.

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

 

3.2.9.1.2 Тип пакета

 

Параметр Тип пакета определяет, какая именно расширенная функция должна быть вызвана. В данном стандарте определяются следующие расширенные функции (см. Приложение 8 EXT):

- Сохранить множество результатов для дальнейшего использования

- Сохранить Запрос для дальнейшего использования

- Определить расписание периодического поиска

- Упорядочить некоторый объект

- Обновить базу данных

- Создать спецификацию для экспорта

- Вызвать определенную ранее спецификацию для экспорта

 

3.2.9.1.3 Имя пакета

 

Источник может (но не обязан) сообщить имя для создаваемого пакета задания. В этом случае тройка (Тип пакета, Идентификатор пользователя, Имя пакета) должна быть уникальной (то есть не должно существовать другого пакета того же типа у того же пользователя с тем же именем, иначе запрос будет считаться ошибочным). Эта тройка в дальнейшем будет служить идентификатором данного пакета задания. Если источник собирается ссылаться на этот пакет, он должен задать Имя пакета.

 

3.2.9.1.4 Идентификатор пользователя

 

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

 

3.2.9.1.5 Срок хранения

 

Источник может (но не обязан) задать срок хранения (например: 2 часа, 3 дня, 1 неделя), который адресат может отменить. По прошествии срока хранения адресат может уничтожить хранящийся у него пакет задания. Если срок хранения равен нулю, это значит, что пакет не нужно хранить после завершения выполнения задания.

 

3.2.9.1.6 Разрешения

 

Источник может указать, кому будет разрешен доступ к данному пакету задания. Если источник не задал этот параметр, его может задать только создающий пользователь. См. раздел 3.2.9.3.

 

 

 

3.2.9.1.7 Описание

 

Источник может среди прочих параметров включить некоторое описание. Это может быть, например, описание множества результатов, в случае расширенной функции Устойчивое множество результатов, или запроса, в случае расширенной функции Устойчивый запрос.

 

3.2.9.1.8 Ссылка адресата

 

Адресат может добавить свой уникальный идентификатор пакета задания.

 

3.2.9.1.9 Дата/время создания

 

Адресат указывает дату и время создания пакета задания.

 

3.2.9.1.10 Статус задания

 

Адресат указывает статус задания. Этот параметр может принимать значения "ожидание", "активно", "завершено" и "прервано".

 

3.2.9.1.11 Диагностика пакета

 

Адресат может включить в пакет одно или несколько диагностических сообщений.

 

3.2.9.1.12 Специфические параметры задания

 

Дополнительные параметры, определенные для конкретной расширенной функции.

 

3.2.9.1.13 Ожидать выполнения

 

Источник указывает, должен ли (может ли) адресат включить пакет задания в ответ функции РФ. Этот механизм немедленного ответа иногда позволяет обойтись без последующего использования операций Поиск и Представить и, вообще, дает возможность доступа к пакету задания через базу данных расширенных функций (см. раздел 3.2.9.2).

Этот параметр может принимать одно из четырех значений:

- ждать: адресат должен выполнить задание, прежде чем передавать ответ функции РФ (кроме тех случаев, когда операция оказывается прервана; см. раздел 3.2.9.4). Если адресат не хочет выполнять задание, прежде чем посылать ответ, он должен отвергнуть запрос, передав статус "выполнить не удалось" и соответствующую диагностику. Если адресат принимает запрос, он включает в свой ответ параметр Пакет задания.

- ждать, если возможно: источник просит, чтобы адресат, если возможно, выполнил задание, прежде чем посылать ответ функции РФ, и включил в ответ параметр Пакет задания. Если это оказывается невозможным, адресат должен действовать так, как если бы параметр имел значение "не ждать".

- не ждать: источник не требует, чтобы адресат попытался выполнить задание, прежде чем посылать ответ функции РФ. Но если адресат все-таки выполнит задание, прежде чем послать ответ, он может включить в ответ параметр Пакет задания.

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

 

3.2.9.1.14 Элементы

 

Источник может (но не обязан) включить этот параметр, если параметр Ожидать выполнения принимает значение, отличное от "не посылать пакет задания". Значение этого параметра - это имя множества элементов для пакета задания, в случае, если параметр Пакет задания включен в ответ.

 

3.2.9.1.15 Статус операции

 

Статус операции РФ. Может принимать одно из следующих значений:

 

выполнено

Запрос принят, задание выполнено и результаты включены в Пакет задания.

принято

Запрос принят, задание поставлено в очередь на выполнение или находится в процессе выполнения.

выполнить не удалось

Запрос отвергнут. Адресат передает источнику одно или несколько диагностических сообщений (в параметре Диагностика операции).

 

3.2.9.1.16 Диагностика операции

 

Адресат может передать дополнительную информацию диагностического характера, в случае, если параметр Статус операции принимает значение "выполнить не удалось".

 

3.2.9.1.17 Пакет задания

 

Если параметр Статус операции принимает значение "выполнено", адресат включает в свой ответ пакет задания. Какая часть пакета задания будет реально включена в ответ, зависит от значения параметра Элементы.

 

3.2.9.1.18 Другая информация

 

Этот параметр может использоваться как источником, так и адресатом для передачи дополнительной информации, не оговоренной в данном стандарте.

 

3.2.9.1.19 Идентификатор ссылки

 

См. раздел 3.4.

 

3.2.9.2 БАЗА ДАННЫХ РАСШИРЕННЫХ ФУНКЦИЙ

 

Если адресат поддерживает задачу Расширенные функции, он предоставляет доступ к базе данных с именем IR-Extend-1 (ее называют "база данных расширенных функций" или "база данных РФ"). Записи базы данных расширенных функций представляют собой пакеты заданий, полученные из параметра "Запросить пакет параметров" запроса функции РФ (адресат может начать выполнять задание в любой момент после принятия запроса, это может быть и до того, как пакет задания будет записан в базу данных). Адресат может (но не обязан) хранить пакет задания до тех пор, пока задание не будет выполнено; может хранить пакет задания, пока источник не попросит удалить его. Адресат может в любой момент удалить пакет задания из базы данных РФ в одностороннем порядке.

Примечание: На практике это означает, что адресат не обязательно должен создавать пакет задания, особенно в тех случаях, когда задание выполняется немедленно. Все же, рекомендуется, чтобы для заданий, статус которых имеет значение "ожидание", "активно" или "прервано", существовал пакет задания.

Когда адресат получает от источника запрос РФ, он может сразу же создать пакет задания со статусом "ожидание", прежде чем окончательно принять запрос к выполнению. Поэтому источник может проводить поиск созданного пакета задания в базе данных РФ в любой момент после передачи запроса (в течение того же самого сеанса или одного из последующих сеансов Z-связи). В частности, если выполнение некоторой операции РФ было прервано (см. п. 3.2.9.4), источник, возможно, сможет узнать, что запрос на эту операцию был получен.

База данных РФ может быть упомянута в базе данных Объяснение системы-адресата, вместе со списком расширенных функций, которые поддерживает адресат, допустимых адресов экспорта, опций, которые может указывать источник для экспортных заданий и т.д.

База данных расширенных функций воспринимается источником точно так же, как любая другая база данных, поддерживаемая адресатом (можно проводить поиск и извлечение записей посредством функций Поиск и Извлечение стандарта Z39.50; обработка поиска локально определяется адресатом; адресат может проводить контроль доступа или исключать из ответа те записи, доступ к которым для источника не разрешен). Но некоторые поисковые термины определены заранее, чтобы обеспечить возможность взаимодействия на семантическом уровне. Множество атрибутов, используемое при поиске в этой базе данных, определено и зарегистрировано в Приложении 3 ATR. Структуры пакетов заданий определены и зарегистрированы в Приложении 8 EXT.

База данных РФ может предоставлять следующие специальные множества элементов (в дополнение к "F"):

- Identification (Идентификация): содержит идентификатор создающего пользователя, имя пакета задания (задается пользователем) и, возможно, разрешение на доступ к данному запросу для других пользователей. Здесь же может содержаться и другая информация, относящаяся к идентификации, например, время создания.

- UniqueName (Уникальное имя): идентификатор создающего пользователя и имя пакета задания.

- Permissions (Разрешения): содержимое множества элементов UniqueName плюс перечень разрешений на доступ к данному пакету задания. Адресат может сообщать полный список разрешений только пользователю, создавшему данный пакет задания, а другим пользователям сообщаются только относящиеся к ним разрешения.

- Status (Статус): краткое описание статуса запроса на текущий момент, возможно, включая стоимость и другие сведения об использовании ресурсов.

- Brief (Краткое описание): Множество элементов Identification плюс самые важные элементы множества элементов Status.

 

3.2.9.3 ВЛАДЕЛЬЦЫ И РАЗРЕШЕНИЯ

 

Пользователь, создавший пакет задания, может применять к нему любую из расширенных функций, а также получать при поиске полностью этот пакет (посредством задачи Извлечение) и вызывать пакет посредством других расширенных функций. (Это происходит, например, когда задание Периодический запрос ссылается на хранящийся Запрос).

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

 

- Удалить

- Изменить содержание

- Изменить разрешения

- Представить

- Вызвать

 

Пример использования разрешения на операцию "вызвать": пусть адресат создает пакет задания для некоторого пользователя, типа Устойчивый запрос; создается устойчивый запрос, представленный созданным пакетом задания. Впоследствии адресат может получить запрос с требованием создать пакет задания типа Расписание периодического поиска, для другого пользователя, в котором упоминается (то есть "вызывается") тот самый пакет задания устойчивого запроса. Адресат выполнит это требование только в случае, если этот пользователь имеет разрешение на "вызов" этого устойчивого запроса. Еще пример: адресат создает пакет Экспорт спецификации для одного пользователя, а другой пользователь впоследствии может "вызвать" этот экспорт спецификации, создав пакет Вызвать экспорт спецификации, если этот второй пользователь имеет разрешение на "вызов" для данного пакета Экспорт спецификации.

Адресат может задавать групповые имена для использования в списках разрешений, но эти групповые имена должны иметь тот же синтаксис, что и Идентификатор пользователя. (Адресат может сообщать состав группы, но механизм, который будет при этом использоваться, не определяется данным стандартом.)

 

3.2.9.4 ПРЕРВАННЫЕ ОПЕРАЦИИ

 

Источник может получить ответ на запрос функции РФ только в течение того сеанса Z-связи, когда был сделан этот запрос (как и в случае любой другой операции стандарта Z39.50). Если операция РФ оказывается прервана (в явном виде, или из-за окончания сеанса Z-связи или сеанса A-связи), источник не получает завершающего ответа. Этот никак не влияет на выполнение или прекращение выполнения задания, вне зависимости от значения параметра Ожидать выполнения, указанного в запросе. Когда прерывается выполнение операции РФ, параметр Ожидать выполнения автоматически принимает значение "не посылать пакет задания".

 

 

3.2.10 ЗАДАЧА ОБЪЯСНЕНИЕ

 

 

Задача Объяснение позволяет источнику получать подробные сведения о программной реализации адресата, в том числе перечень баз данных, доступных для поиска, множеств атрибутов и диагностических множеств, используемых адресатом, схемы, синтаксис записи и определения спецификаций элементов, поддерживаемые при поиске. Если адресат поддерживает задачу Объяснить, то он:

- предоставляет доступ (посредством задач Поиск и Представить стандарта Z39.50) к базе данных с именем IR-Explain-1 (ее называют "база данных Объяснение");

- поддерживает множество атрибутов объяснения, exp-1, которое определяется в Приложении 3 ATR (оно определяет множество атрибутов Использование ?? и импортирует атрибуты не использования bib-1); и

- поддерживает синтаксис Объяснение, который определен и зарегистрирован в Приложении 5 REC.

Запись (или элемент множества результатов, представляющий запись) базы данных Объяснение называют "запись Объяснения".

 

3.2.10.1 ПОИСК В БАЗЕ ДАННЫХ ОБЪЯСНЕНИЕ

 

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

Множество атрибутов exp-1 используется для поиска в базе данных Объяснение. Сочетания атрибутов Использования с терминами позволяют вести поиск по информационным категориям; используя четко определенные сочетания атрибутов Использования, источник может задавать дополнительные спецификации для дальнейшего сужения диапазона отобранных записей. Сочетания атрибутов Использования множества exp-1, позволяющие проводить поиск некоторых стандартных типов, перечислены в пп. 3.2.10.1.1 и 3.2.10.1.4. Так как в базе данных Объяснение можно проводить поиск, как в любой другой базе данных, с использованием атрибутов из одного или нескольких множеств атрибутов, этот перечень, разумеется, не является исчерпывающим. Но рекомендуется, чтобы адресат, поддерживающий задачу Объяснение, поддерживал и этот список стандартных типов поиска. Как изложено в пп. 3.2.10.1.2 и 3.2.10.1.3, атрибуты HumanStringLanguage (Язык человекочитаемого текста), DateAdded (Дата ввода), DateChanged (Дата изменения) и DateExpires (Срок истекает) могут использоваться в сочетании с любыми из комбинаций, перечисленных в пп. 3.2.10.1.1 и 3.2.10.1.4.

Множество атрибутов exp-1 состоит из множества атрибутов типа Использование и импортирует атрибуты bib-1 типа Не-использование. Рекомендуется, чтобы адресат, поддерживающий задачу Объяснение, поддерживал атрибут отношения "равно" из множества bib-1 (см. примечание), атрибут положения "любая позиция в поле" и структурный атрибут "ключ".

Примечание: Если адресат намерен поддерживать поиск по диапазону дат (то есть, например, поиск записей, созданных до или после некоторой даты или между двумя датами), то он должен также поддерживать один или несколько из следующих атрибутов отношения: "меньше чем", "меньше или равно", "больше чем", "больше или равно".

Источник, вообще говоря, не должен ожидать, что у него будет возможность вести поиск в базе данных Объяснение при помощи атрибута "усечение" из множества bib-1. Но адресат может и предоставлять доступ к базе данных Объяснение при помощи этого и других альтернативных атрибутов и значений атрибутов.

 

3.2.10.1.1 Поиск заранее определенных информационных категорий

 

Поиск записей, относящихся к некоторой категории информации объяснения, ведется при помощи операнда, где термином является имя этой категории; например, чтобы найти все записи, относящиеся к категории TargetInfo (Информация об адресате), используется термин "TargetInfo" (Информация об адресате). Для каждой категории определяются один или несколько ключевых элементов, которые могут служить поисковыми терминами (с использованием подходящего атрибута). При поиске с операндом, где атрибут Использование = "ExplainCategory" (категория Объяснение), а термин - некоторая категория, с дополнительными операндами, соответствующими каждому ключу для этой категории, где значение атрибута Использование есть этот ключ, в результате должна получиться (не более чем) одна запись.

Первичный механизм поиска и извлечения информации из базы данных Объяснение состоит в том, что источник отбирает записи некоторой категории при помощи атрибута Использования "ExplainCategory" и извлекает из этих записей нужную информацию с тем, чтобы сформулировать условия дальнейшего поиска. Например, источник может найти все записи, для которых ExplainCategory = "DatabaseInfo" (Информация о базах данных) и извлечь из этих записей краткую информацию (см. п. 3.2.10.1.2). Каждая запись с краткой информацией содержит имя базы данных, которое может впоследствии служить ключом для поиска.

Список и краткие описание информационных категорий Объяснения (и, следовательно, поисковых терминов) даны в таблице, приведенной ниже, так же как и ключи для каждой категории. В п. 3.2.10.3 приведено подробное описание для каждой категории.

При поиске в базе данных Объяснение с помощью заранее определенных информационных категорий источник должен придерживаться следующих правил:

- Для поиска информации об адресате использовать ExplainCategory="TargetInfo".

- Для поиска информации о некоторой базе данных  использовать ExplainCategory="DatabaseInfo" в сочетании с атрибутом DatabaseName, для задания ключа нужной записи databaseInfo.

- Для поиска информации о некоторой схеме использовать ExplainCategory="SchemaInfo" в сочетании с атрибутом SchemaOID для обозначения нужной схемы.

- Для поиска информации о некотором множестве ярлыков использовать ExplainCategory="TagSetInfo" в сочетании с атрибутом TagSetOID для обозначения нужного множества ярлыков.

- Для поиска информации о некотором синтаксисе записи используйте ExplainCategory="RecordsSyntaxInfo" в сочетании с атрибутом RecordSyntaxOID для обозначения нужного синтаксиса записи.

- Для поиска информации о некотором множестве атрибутов используйте ExplainCategory="AttributeSetInfo" в сочетании с атрибутом AttributeSetOID для обозначения нужного множества атрибутов.

- Для поиска информации о списках терминов для некоторой базы данных используйте ExplainCategory="TermList-Info" в сочетании с атрибутом DatabaseName для обозначения нужной базы данных.

- Для поиска информации о некоторой расширенной функции используйте ExplainCategory="ExtendedServicesInfo" в сочетании с идентификатором этой расширенной функции.

- Для поиска информации об атрибутах и сочетаниях атрибутов, которые можно использовать при поиске в некоторой базе данных, используйте ExplainCategory="AttributeDetails" в сочетании с атрибутом DatabaseName для обозначения базы данных, для которой требуется получить информацию об атрибутах.

- Для поиска информации о некотором списке терминов использовать ExplainCategory="TermListDetails" в сочетании с именем списка.

- Для поиска имен множеств элементов, опредленных для синтаксиса записи для некоторой конкретной базы данных, использовать ExplainCategory="ElementSetDetails" в сочетании с атрибутом RecordSyntaxOID для обозначения нужного синтаксиса записи и с атрибутом DatabaseName для обозначения нужной базы данных.

- Для поиска определения для некоторого имени множества элементов использовать ExplainCategory="ElementSetDetails" в сочетании с атрибутом ElementSetName для обозначения нужного имени множеста элементов. При этом могут оказаться найдены несколько записей, так как в базе данных Объяснение содержится по одной записи на каждое имя множества элементов для каждого синтаксиса записи и для каждой базы данных.

- Для поиска некоторого имени множества элементов, определенного для некоторого синтаксиса записи, для некоторой конкретной базы данных, использовать ExplainCategory="ElementSetDetails" в сочетании с атрибутом ElementSetName для обозначения нужного имени множества элементов, атрибутом RecordSyntaxOID для обозначения нужного синтаксиса записи и атрибута DatabaseName для обозначения нужного имени базы данных.

 

Категория

В записи БД Объяснение для этой категории описаны

Ключ (-и)

TargetInfo

 

Адресат, в том числе ограничения на поиск, налагаемые адресатом

имя адресата

DatabaseInfo

 

База данных. Информация о поддерживаемых типах запросов, множествах атрибутов, синтаксисах записи, схемах, диагностических множествах, форматах контроля ресурсов и форматах контроля доступа. Группа баз данных с одинаковыми характеристиками может быть описана как одна логическая база данных. В этом случае должен приводиться список баз данных, входящих в состав этой логической базы данных.

имя базы данных

SchemaInfo

 

Схема.

Идентификатор объекта для схемы

TagSetInfo

 

Множество ярлыков.

Идентификатор объекта для множества ярлыков

RecordSyntax

Info

 

Синтаксис записи

Идентификатор объекта для  синтаксиса записи

AttributeSet

Info

 

Множество атрибутов, включая атрибуты, поддерживаемые в рамках этого множества.

идентификатор объекта для множества атрибутов.

TermListInfo

Списки терминов, поддерживаемых для некоторой базы данных.

Имя базы данных

Extended

ServicesInfo

Расширенная функция.

Идентификатор объекта для расширенной функции.

Attribute Details

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

Имя базы данных.

TermList

Details

Список терминов.

Имя списка терминов.

ElementSet

Details

Множество элементов (для некоторого синтаксиса записи, для некоторой базы данных)

Имя базы данных, имя множества элементов, идентификатор объекта для синтаксиса записи

Retrieval

RecordDetails

Элементы извлекаемой записи (для некоторого синтаксиса записи, определенного некоторой схемой).

Имя базы данных, идентификатор объекта для схемы, идентификатор объекта для синтаксиса записи.

SortDetails

Спецификация сортировки для некоторой базы данных.

Имя базы данных.

Processing

Инструкции по обработке для некоторой базы данных, для некоторого контекста обработки, имени инструкции и идентификатора объекта для абстрактного синтаксиса внешней Инструкции.

Имя базы данных, имя контекста обработки, идентификатор объекта для инструкции.

VariantSetInfo

Определение множества вариантов; классы, типы и значения для некоторого определения множества вариантов, поддерживаемого адресатом. Если адресат поддерживает некоторое определение множества вариантов, это не значит, что  это определение поддерживается для каждой конкретной базы данных или элемента.

Идентификатор объекта для множества вариантов.

UnitInfo

Определения unit ??, поддерживаемые адресатом.

unit system name ??

CategoryList

Категории Объяснения, поддерживаемые адресатом.

(без ключа)

 

- Для поиска описания элементов извлекаемой записи, для некоторого синтаксиса записи, для некоторой базы данных, для некоторой схемы, для некоторой базы данных, используйте ExplainCategory="RetrievalRecordDetails" в сочетании с атрибутом RecordSyntaxOID для обозначения нужного синтаксиса записи, атрибутом SchemaOID для обозначения нужной схемы и атрибута DatabaseName для обозначения нужной базы данных.

 

3.2.10.1.2. Поиск информации на определенном языке

 

Об элементах, которые источник предоставляет пользователю, говорят, что они состоят из "человекочитаемого текста". Каждая запись содержит элемент, обозначающий, на каком языке написан человекочитаемый текст, содержащийся в этой записи. В базе данных Объяснение могут находиться несколько записей с одинаковой информацией, записанной на разных языках. Для поиска записей на каком-то конкретном языке можно использовать атрибут HumanStringLanguage (Язык человекочитаемого текста), в сочетании с трехсимвольным кодом языка в качестве термина; см. Z39.50-1994.

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

(Category = 'DatabaseInfo') AND (HumanStringLanguage = 'eng').

Атрибут HumanStringLanguage первоначально предназначался для использования в версии 2. В случае версии 3 рекомендуется использовать варианты.

 

3.2.10.1.3 Поиск информации с помощью контрольных дат

 

Для поиска новых записей в базе данных Объяснение используйте атрибут DataAdded (Дата ввода); для поиска обновлявшихся записей используйте атрибут DataChanged (Дата изменения); для поиска записей по дате истечения срока их действия используйте атрибут DateExpires (Срок истекает). Каждый из этих трех атрибутов можно использовать в сочетании с видами поиска, описанными выше.

 

3.2.10.1.4 Поиск информации с использованием значений, зависящих от содержания

 

Некоторые записи базы данных Объяснение можно находить при помощи атрибутов, значения которых зависят от элементов, содержащихся в соответствующих записях базы данных Объяснение. Эти атрибуты типа Использование можно использовать для отбора записей, относящихся к некоторой специфической информационной категории. Например, атрибут использования Availability можно использовать для отбора записей баз данных, доступных в настоящее время. При использовании этих атрибутов источник должен соблюдать следующие правила:

- Для доступных на текущий момент баз данных используйте атрибут ExplainCategory с термином "DatabaseInfo" в сочетании с атрибутом Availability с термином "да".

- Для поиска баз данных, предоставленных конкретным поставщиком, используйте атрибут ExplainCategory с термином "DatabaseInfo" в сочетании с атрибутом Supplier (Поставщик) с именем поставщика в качестве термина.

- Для поиска баз данных, предоставленных конкретным производителем, используйте атрибут ExplainInfo с термином "DatabaseInfo" в сочетании с атрибутом Producer (Производитель) с именем производителя в качестве термина.

- Для поиска баз данных, не связанных с правом собственности, используйте атрибут ExplainCategory с термином "DatabaseInfo" в сочетании с атрибутом Proprietary (С правом собственности) с термином "нет".

- Для поиска баз данных, не требующих оплаты за пользование, используйте атрибут ExplainCategory с термином "DatabaseInfo" в сочетании с атрибутом UserFee (Плата за пользование) с термином "нет".

 

3.2.10.2 ИЗВЛЕЧЕНИЕ ЗАПИСЕЙ БАЗЫ ДАННЫХ ОБЪЯСНЕНИЕ

 

В запросе функции Представить для записей базы данных Объяснение следует указать синтаксис Объяснение в качестве Предпочтительного синтаксиса записи. Для каждой информационной категории Объяснения имеется свой шаблон записи, все они описаны в определении синтаксиса Объяснение (см. Примечание 5 REC.1).

Записи базы данных Объяснение содержат ключевые элементы, которые однозначно определяют каждую запись. Каждая категория Объяснения определяется в терминах ключевых элементов, не-ключевых элементов "краткого описания" (см. 3.2.10.2.2),  элементов "не краткого описания" и, может быть, других категорий. Ключевые элементы всегда входят в число элементов краткого описания.

 

3.2.10.2.1 Извлечение записей и человекочитаемый текст

База данных Объяснение может предоставлять альтернативные варианты человекочитаемой информации (но для вариантов языка см. примечание ниже). Например, элемент текста можно извлекать в формате ASCII, SGML или Postscript. Для того, чтобы затребовать тот или иной формат, используйте варианты версии 3.

Примечание: Для вариантов языка см. а. 3.2.10.1.2. База данных Объяснение логически содержит разные записи для разных языков, поэтому отбор по языку происходит при поиске.

 

3.2.10.2.2 Извлечение краткой и описательной информации

 

Задача Объяснение позволяет извлекать "краткую" информацию или "краткое описание". Например, источник может запросить краткую информацию обо всех базах данных, поддерживаемых адресатом, не извлекая полных записи информации о базах данных. В определении каждой категории отмечено, какие элементы входят в краткое описание, и какие не входят. Элементы, входящие в краткое описание, получают, используя при поиске имя множества элементов "B". (brief - краткое). Элементы, не входящие в краткое описание, получают (вместе с элементами краткого описания), задавая при поиске имя множеста элементов "F" (full - полное).

Задача Объяснение позволяет также извлекать описательную информацию для некоторых категорий при использовании имени множества элементов "description" (подробнее см. ASN.1 - описание синтаксиса Объяснение). Например, запись информации о базах данных содержит элемент с описанием базы данных (в виде человекочитаемого текста); для того, чтобы получить только элементы краткого описания и описательные элементы, можно использовать имя множества элементов "description".

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

 

3.2.10.3 ПОДРОБНЫЕ ОПИСАНИЯ ИНФОРМАЦИОННЫХ КАТЕГОРИЙ

 

В этом разделе содержатся полные описания каждой информационной категории. Помимо приведенной здесь информации, каждая запись:

- содержит информацию о самой себе, например, о дате создания записи и дате истечения срока ее действия; и

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

Это логические описания, без учета возможных вариантов языка записи или синтаксиса элемента.

Многие элементы Объяснения не обязательны, хотя это не указано в приведенном ниже описании. Более конкретно см. определение ASN.1.

 

3.2.10.3.1 Target-Info - информация об адресате

 

В базе данных Объяснения есть ровно одна такая запись. Элементы краткого описания:

- Имя адресата (ровно одно), в виде человекочитаемого текста.

- Свежие новости, могущие заинтересовать людей, работающих с этим адресатом, в виде человекочитаемого текста.

- Пиктограмма, представляющая данного адресата (в машинном изображении).

- Поддерживаются ли именованные множества результатов.

- Можно ли в рамках одного запроса проводить поиск сразу по нескольким базам данных.

- Максимальное число  множеств результатов, поддерживаемых одновременно.

- Максимальное число записей в множестве результатов.

- Максимальное число терминов в одном поисковом запросе.

- Интервал бездействия, после которого адресат инициализирует событие, если не было выполнено никаких действий.

- "Приветственное" сообщение адресата, появляющееся на экране у источника.

 

Элементы, не входящие в краткое описание:

- Контактная информация об организации, поддерживающей данную систему-адресата.

- Описание адресата в виде человекочитаемого текста.

- Набор условных обозначений или альтернативных имен, под которыми известен адресат.

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

- Адрес для перевода платы (например, бухгалтерия) организации, поддерживающей данного адресата.

- Часы работы.

- Список поддерживаемых сочетаний баз данных.

- Адрес в Интернет и номер порта.

- Адреса OSI.

- Языки, поддерживаемые для строк сообщений.

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

   -- Какие поддерживаются типы запросов, с подробным описанием каждого поддерживаемого типа.

   -- Поддерживаемые диагностические множества.

   -- Поддерживаемые множества атрибутов.

   -- Поддерживаемые схемы.

   -- Поддерживаемые синтаксисы записей.

   -- Поддерживаемые проверки ресурсов.

   -- Поддерживаемые проверки уровня доступа.

   -- Информация о стоимости.

   -- Поддерживаемые множества вариантов.

   -- Поддерживаемые имена множеств элементов.

   -- Поддерживаемые unit systems ??.

 

3.2.10.3.2 Databse-Info - информация о базе данных

 

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

Элементы краткого описания:

- Полное имя базы данных (ровно одно).

- Является ли эта база данных базой данных Объяснение (возможно, для какого-то другого сервера).

- Список сокращенных (или альтернативных) имен этой базы данных.

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

- Взимается ли плата за пользование этой базой данных.

- Возможен ли в настоящее время доступ к этой базе данных.

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

 

Элементы, не входящие в краткое описание:

- Список ключевых слов для базы данных.

- Описание базы данных, в виде человекочитаемого текста.

- Ассоциированные базы данных, то есть те, для которых адресат разрешает (и даже, возможно, поощряет) одновременный поиск в сочетании с этой базой данных.

- Подчиненные базы данных, составляющие эту концептуально единую базу данных.

- Отказ от тех или иных обязательств в связи с этой базой данных, в виде человекочитаемого текста.

- Свежие новости об этой базе данных, в виде человекочитаемого текста.

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

- В каком порядке приводятся записи по умолчанию, объяснение в виде человекочитаемого текста.

- Приблизительная оценка среднего размера записи (в байтах).

- Максимальный размер записи (в байтах).

- В какие часы работы возможен доступ к этой базе данных.

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

- Время последнего обновления этой базы данных.

- Цикл/интервал обновления для этой базы данных.

- Coverage dates ?? для этой базы данных, в виде человекочитаемого текста.

- Содержит ли эта база данных информацию, связанную с правом собственности.

- Описание вопросов из области авторского права, связанных с этой базой данных, в виде человекочитаемого текста.

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

- Описание и контактная информация о производителе базы данных, поставщике базы данных, информация о том, куда направлять материалы для включения в эту базу данных, в виде человекочитаемого текста.

- Какие типы запросов поддерживаются для этой базы данных, подробное описание каждого поддерживаемого типа.

- Диагностические множества, поддерживаемые для этой базы данных.

- Множества атрибутов, поддерживаемые для этой базы данных.

- Схемы, определенные для этой базы данных.

- Синтаксисы записи, поддерживаемые для этой базы данных.

- Отчеты о ресурсах, поддерживаемые для этой базы данных.

- Описание контроля доступа для этой базы данных, в виде человекочитаемого текста.

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

- Множества вариантов, поддерживаемые для этой базы данных.

- Имена множеств элементов, поддерживаемые для этой базы данных, с именами и описаниями в виде человекочитаемого текста.

- Unit systems ??, поддерживаемые для этой базы данных.

 

3.2.10.3.3 Schema-Info - информация о схеме

 

Информация, описывающая некоторую схему базы данных. Для каждой схемы, поддерживаемой адресатом, имеется ровно одна запись в базе данных Объяснение.

Примечание: эта информация не связана с базой данных.

Элементы краткого описания:

- Идентификатор объекта для определения схемы.

- Имя схемы.

 

Элементы, не входящие в краткое описание:

- Описание схемы, в виде человекочитаемого текста.

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

- Абстрактная структура записи, определенная этой схемой.

 

3.2.10.3.4 Tag-Set-Info - информация о множестве ярлыков

 

Информация описательного характера о некотором множестве ярлыков. Для каждого поддерживаемого множества ярлыков имеется ровно одна такая запись в базе данных Объяснение.

Элементы краткого описания:

- Идентификатор объекта для данного множества ярлыков.

- Имя множества ярлыков.

 

Элементы, не входящие в краткое описание:

- Описание данного множества ярлыков, в виде человекочитаемого текста.

- Для каждого элемента, определенного в этом множестве ярлыков:

   -- Имя элемента.

   -- Условные обозначения элемента.

   -- Ярлык, приписанный элементу.

   -- Описание элемента.

   -- К какому типу данных он относится.

 

3.2.10.3.5 Record-Syntax-Info - информация о синтаксисе записи

 

Информация описательного характера о некотором синтаксисе записи. Для каждого абстрактного синтаксиса записи, поддерживаемого адресатом, имеется ровно одна запись в базе данных Объяснение.

Примечание: Эта запись не зависит от базы данных.

Элементы краткого описания:

- Идентификатор объекта для данного абстрактного синтаксиса записи.

- Имя этого синтаксиса.

 

Элементы, не входящие в краткое описание:

- Синтаксисы переноса, поддерживаемые для данного абстрактного синтаксиса (идентификаторы объекта).

- Описание данного абстрактного синтаксиса записи, в виде человекочитаемого текста.

- Модуль ASN-1, описывающий данный синтаксис.

- Структура записи, определяемая данным синтаксисом.

 

3.2.10.3.6 Attribute-Set-Info - информация о множестве атрибутов

 

Информация описательного характера о некотором множестве атрибутов. Для каждого поддерживаемого множества атрибутов имеется ровно одна такая запись в базе данных Объяснение.

Элементы краткого описания:

- Идентификатор множества атрибутов (идентификатор объекта) для данного множества атрибутов.

- Имя множества атрибутов.

 

Элементы, не входящие в краткое описание:

- Для каждого типа атрибутов: имя типа, описание, целочисленное значение, соответствующее данному типу и список атрибутов. Для каждого атрибута:

   -- Имя.

   -- Описание.

   -- Значение.

   -- Имена эквивалентных атрибутов. Эквивалентность выводится из определения множества атрибутов (а не из поведения адресатов).

- Описание множества атрибутов.

 

3.2.10.3.7 Terms-List-Info - информация о списке терминов

 

Информация описательного характера о списках терминов. Для каждой базы данных имеется ровно одна такая запись в базе данных Объяснение.

Элементы краткого описания:

- Полное имя базы данных (ровно одно).

- Краткая информация о каждом списке терминов, связанном с этой базой данных (для каждого из описанных списков терминов имеется запись Term-List-Details - Подробная информация о списке терминов):

   -- Имя списка терминов. Должно быть уникальным для этой базы данных. Это имя будет использоваться при поиске записи подробной информации о данном списке терминов.

   -- Заголовок списка. Это информация для пользователей, она не обязательно должна быть уникальной.

   -- Сведения о стоимости поиска с использованием ассоциированных атрибутов. Адресат сообщает один из следующих вариантов:

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

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

      --- Атрибут (сочетание атрибутов) будут функционировать, как ожидается. Поэтому вероятно, что имеется указатель атрибутов (комбинаций атрибутов) или какой-то аналогичный механизм.

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

      --- Невозможен поиск только по этому атрибуту (сочетанию атрибутов).

   -- Возможно ли сканирование данного листа терминов.

   -- Список имен альтернативных, более широких списков терминов.

   -- Список имен альтернативных, более узких списков терминов.

(Нет элементов, не входящих в краткое описание.)

 

3.2.10.3.8 Extended-Services-Info - информация о расширенных функциях

 

Информация описательного характера о некоторой расширенной функции. Для каждой поддерживаемой расширенной функции имеется ровно одна запись в базе данных Объяснение.

Элементы краткого описания:

- Идентификаторо объекта для данной расширенной функции.

- Условное обозначение этой расширенной функции.

- Булевы флаги, показывающие:

   -- Является ли данная расширенная функция частной.

   -- Имеются ли ограничения.

   -- Берется ли плата за пользование.

   -- Возможен ли доступ к этой расширенной функции.

   -- Поддерживается ли ее хранение.

- Какой поддерживается уровень ожидания действия.

 

Элементы, не входящие в краткое описание:

- Описание, в виде человекочитаемого текста.

- Элементы Объяснения, специфические для данной расширенной функции (определяются в рамках определения этой конкретной расширенной функции).

- Модуль ASN-1 для определения Объяснения.

 

3.2.10.3.9 Attribute-Details - Подробная информация об атрибутах

 

Информация по каждому атрибуту. Для каждой поддерживаемой базы данных имеется ровно одна такая запись в базе данных Объяснение.

Элементы краткого описания:

- Имя базы данных, к которой применима данная информация об атрибутах.

 

Элементы, не входящие в краткое описание:

- Для каждого множества атрибутов, поддерживаемого для этой базы данных: идентификатор объекта для данного множества атрибутов, и для каждого атрибута из этого множества:

   -- Тип атрибута.

   -- Значение, принимаемое по умолчанию, в случае отсутствия данного аргумента, и описание его поведения по умолчанию, в виде человекочитаемого текста.

   -- Для каждого значения атрибута:

      --- Значение атрибута.

      --- Описание этого значения в виде человекочитаемого текста.

      --- Подчиненные атрибуты (для атрибутов типа Использование): список альтернативных значений, позволяющих доступ к тому же аспекту записи, но с большими подробностями.

      --- Покрывающие атрибуты (для атрибутов типа Использование): список альтернативных значений, позволяющих доступ к тому же аспекту записи на менее подробном уровне.

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

- Список всех сочетаний атрибутов, поддерживаемых для этой базы данных.

 

3.2.10.3.10 Term-List-Details - подробная информация о списке терминов

 

Информация описательного характера о списке терминов. Имеется ровно одна такая запись для каждого списка терминов, соответствующего одной из записей раздела Term-List-Info.

Элементы краткого описания:

- Имя списка терминов.

 

Элементы, не входящие в краткое описание:

- Описание.

- Сочетание атрибутов, соответствующие данному списку. Если список допускает сканирование, это сочетание атрибутов будет использоваться при сканировании.

- Максимальный поддерживаемый размер шага.

- Collating sequence ?? (например, ASCII, EBCDIC), в виде человекочитаемого текста.

- Порядок (по убыванию или по возрастанию).

- Приблизительное число терминов.

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

 

3.2.10.3.11 Element-Set-Details - подробная информация о множестве элементов

 

Информация описательного характера о некотором множестве элементов. В базе данных Объяснение имеется ровно одна такая запись для каждого множества элементов для каждого синтаксиса записи для каждой базы данных.

Элементы краткого описания:

- База данных, к которой относится эта запись.

- Имя множества элементов для множества элементов, описываемого этой записью.

- Синтаксис записи, к которому относится данная запись.

- Схема, для которой определено это множество элементов.

 

Элементы, не входящие в краткое описание:

- Описание множества элементов, в виде человекочитаемого текста.

- Для каждого элемента из данного множества элементов: информация по каждому элементу из категории Retrieval-Records-Details.

 

3.2.10.3.12 Retrieval-Records-Details - подробная информация об извлекаемых записях

 

Информация описательного характера об элементах извлекаемой записи. Заметьте, что элементы относятся к некоторой схеме базы данных. В базе данных Объяснение имеется ровно одна такая запись для каждой базы данных, для каждой схемы и для каждого синтаксиса записи.

Элементы краткого описания:

- База данных, схема и синтаксис записи, к которым относится эта запись базы данных Объяснение.

 

Элементы, не входящие в краткое описание (для каждого элемента, описываемого данным синтаксисом):

- Имя элемента.

- Ярлык элемента, если имеется.

- Список элементов схемы, содержащих данный элемент в рамках данного синтаксиса записи.

- Максимальный размер элемента.

- Минимальный размер элемента.

- Средний размер элемента.

- Размер элемента, если он имеет фиксированную длину.

- Может ли элемент повторяться.

- Является ли данный элемент обязательным.

- Описание элемента, в виде человекочитаемого текста.

- Описание содержания элемента, в виде человекочитаемого текста.

- Вопросы оплаты и квитанций, связанные с данным элементом, в виде человекочитаемого текста.

- Ограничения (например, авторские права, права собственности), относящиеся к вопросам использования и доступа к данному элементу, в виде человекочитаемого текста.

- Альтернативные имена для данного элемента.

- Родовые имена для данного текстового элемента (например, элемент "географическая статья" может также проходить под родовым именем "статья").

- Сочетания атрибутов, относящиеся к этому элементу.

 

3.2.10.3.13 Sort-Details - подробная информация о сортировке

 

Описание возможных типов сортировки, поддерживаемых адресатом. Для каждой базы данных имеется одна такая запись.

Элементы краткого описания:

- База данных, к которой относится данное описание сортировки.

 

Элементы, не входящие в краткое описание:

- Для каждого ключа сортировки:

   -- Описание.

   -- Если ключ представляет собой элемент записи - спецификация этого элемента.

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

   -- Тип ключа: символьный, числовой, структурированный.

   -- Различаются ли для этого ключа заглавные и строчные буквы.

 

3.2.10.3.14 Processing-Info - информация об обработке

 

Инструкция, в которой изложено, как, по мнению адресата, должен источник обрабатывать данные для представления их пользователю. Инструкции определяются вне системы. Для каждой конкретной базы данных и контекста обработки (доступ, поиск, извлечение, представление записей и работа с записями), для которых адресат предлагает проводить обработку информации, может иметься больше одной инструкции; эти инструкции различаются по именам. Каждая инструкция, возможно, может быть получена более чем в одном абстрактном синтаксисе; такие варианты инструкций различаются по идентификаторам объекта. Таким образом, запись базы данных Объяснение этого типа отличается по базе данных, по контексту обработки, по имени и по идентификатору объекта.

Элементы краткого описания:

- Полное имя базы данных, к которой относится эта запись.

- Контекст, к которому относится данная информация об обработке.

- Имя данной инструкции по обработке.

- Идентификатор объекта для абстрактного синтаксиса внешне определенной инструкции.

 

Элементы, не входящие в краткое описание:

- Описание инструкции, в виде человекочитаемого текста.

- Машиночитаемые инструкции, определенные внешне (абстрактный синтаксис которых идентифицируется при помощи идентификатора объекта, упомянутого выше).

 

3.2.10.3.15 Variant-Set-Info - информация о множестве вариантов

 

Информация описательного характера об определении множества вариантов, поддерживаемом адресатом; о классах, типах и значениях, поддерживаемых для некоторого множества вариантов. Если адресат поддерживает некоторое определение множества вариантов, это не значит, что это определение поддерживается для каждой конкретной базы данных или элемента.

Элементы краткого описания:

- Идентификатор объекта для данного определения множества вариантов.

- Имя.

 

Элементы, не входящие в краткое описание:

- Список поддерживаемых классов, с именами и описаниями; для каждого из них: список поддерживаемых типов, с именами и описаниями; для каждого: список поддерживаемых значений.

 

3.2.10.3.16 Unit-Info - информация о системе единиц

 

Информация описательного характера об определении системы единиц, поддерживаемом адресатом.

Элементы краткого описания:

- Имя системы единиц.

 

Элементы, не входящие в краткое описание:

- Описание.

- Список типов единиц, с именами и описаниями; для каждого из них: список единиц, с именами и описаниями.

 

3.2.10.3.17 Category-List - список категорий

 

Список категорий Объяснения, поддерживаемых адресатом. Для базы данных Объяснение имеется ровно одна такая запись. Она содержит нижеследующую информацию для каждой поддерживаемой категории:

Элементы краткого описания:

- Поисковый термин, используемый в конъюнкции с атрибутом Использование, равным  ExplainCategory, для поиска записей, относящихся к этой категории.

Примечание: следующие элементы нужны только в том случае, если адресат поддерживает некоторую категорию, не определенную в данном стандарте.

- Первоначальный поисковый термин. (Для информационных категорий, для которых адресат поддерживает некоторую модификацию первоначального определения категории.)

- Описание.

- Определение записи ASN-1 для этой категории.

 

 

3.2.11 ЗАДАЧА ЗАВЕРШЕНИЕ

 

Задача Завершение состоит из одной функции - Закрыть.

 

3.2.11.1 ФУНКЦИЯ ЗАКРЫТЬ

 

Функция Закрыть позволяет источнику или адресату разом завершить все активные операции и инициализировать окончание сеанса Z-связи.

Функция Закрыть может использоваться только в случае версии 3. В этом случае в любой момент после инициализации, пока не был отправлен или принять запрос функции Закрыть, либо источник, либо адресат:

- может отправить запрос функции Закрыть и, считая, что выполнение всех активных операций разом прекратилось, ожидать ответа функции Закрыть (не обращая внимания на любые сообщения, получаемые в промежутке) и считать сеанс Z-связи законченным; и

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

 

Параметр

Запрос

Ответ

Примечания

Причина закрытия

   х

   х

 

Диагностическая информация

х (не обязат.)

х (не обязат.)

 

Формат отчета о ресурсах

х (не обязат.)

 

Только источник

Отчет о ресурсах

х (не обязат.)

х (не обязат.)

Только адресат

Другая информация

х (не обязат.)

х (не обязат.)

 

Идентификатор ссылки

х (если применимо)

х (если применимо)

 

 

3.2.11.1.1 Причина закрытия

 

Этот параметр отражает причину, по которой источник или адресат завершает сеанс Z-связи. Он может принимать следующие значения:

- конец работы

- shutdown ??

- сбой системы

- исчерпана оплата

- ресурсы

- нарушение защиты

- ошибка протокола

- отсутствие деятельности

- не определено

- ответ на запрос функции Закрыть

Примечание: Запросу и ответу функции Закрыть соответствует одно и то же сообщение протокола (Close APDU). Если обе системы одновременно отправляют запрос функции Закрыть, каждая получит в качестве ответа первое по времени сообщение (даже если первоначально оно не было отправлено в таком качестве). Эта неоднозначность не нарушит правильную работу протокола. Но как раз на случай, если сообщение действительно было отправлено как ответ функции Закрыть и предусмотрено значение параметра "ответ на запрос функции Закрыть", хотя его использование не обязательно.

 

3.2.11.1.2 Диагностическая информация

 

Адресат может (но не обязан) включить в сообщение текст с дополнительной диагностической информацией.

 

3.2.11.1.3 Формат отчета о ресурсах и Отчет о ресурсах

 

Когда источник отправляет запрос функции Закрыть, он может включить в него параметр Формат отчета о ресурсах, требуя тем самым, чтобы адресат включил в свой ответ отчет о ресурсах (см. п. 3.2.6.1.1). Адресат в одностороннем порядке принимает решение - включать или не включать в ответ отчет о ресурсах (и в каком формате): он может включить или не включить в ответ отчет, независимо от того, включил ли источник в запрос параметр Формат отчета о ресурсах.

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

 

3.2.11.1.4 Другая информация

 

Этот параметр может использоваться как источником, так и адресатом для передачи дополнительной информации, не оговоренной в данном стандарте.

 

3.2.11.1.5 Идентификатор ссылки

 

Параметр Идентификатор ссылки может быть включен или не включен источником в запрос или ответ функции Закрыть.

Адресат не должен включать Идентификатор ссылки в запрос функции Закрыть. Что касается ответа функции Закрыть, если адресат отвечает на запрос функции Закрыть, содержавший Идентификатор ссылки, он может или включить Идентификатор ссылки с тем же значением, или совсем не включать этого параметра. Если адресат отвечает на запрос функции Закрыть, не содержавший Идентификатора ссылки, адресат не должен включать в ответ этот параметр.

 

 

3.3 РАЗМЕР СООБЩЕНИЯ/ЗАПИСИ И СЕГМЕНТАЦИЯ

 

 

"Сегмент" - это сообщение, отправленное адресатом (или готовящееся к передаче) в составе совокупного ответа функции Представить, то есть запрос функции Сегмент или ответ функции Представить.

Во всем разделе 3.3 слово "запись" будет использоваться в следующем значении:

- Если не указано иное, оно означает "запись ответа", то есть извлеченная запись или суррогатная диагностика.

- Везде, кроме п. 3.3.3, оно означает "суррогатная диагностика", если размер записи превышает Предпочтительный размер записи.

- Выражение "Запись N" означает "запись ответа, соответствующая записи базы данных, идентифицируемой N-ым элементом множества результатов".

- Запись понимается как строка байтов (для задач описания процедур сегментации).

Везде, кроме п. 3.3.3, говорят, что некоторое множество записей "помещается в сегменте", если сумма их размеров, не включая контрольную информацию протокола, не превосходит Предпочтительный размер записи. При выполнении операции Представить может случиться, что адресат будет не в состоянии вместить затребованные записи в один сегмент из-за ограничений на размеры записей и сообщений. В этом случае адресат может выполнить сегментацию ответа функции Представить (если сегментация задействована), отправляя несколько сегментов (запросов функции Сегмент, за которыми следуют ответы функции Представить).

Обсуждаются два уровня сегментации, уровень 1 и уровень 2. Если ни один уровень не задействован, ответ адресата на запрос функции Представить состоит из простого ответа функии Представить (одного сегмента), содержащего целое число записей. Если действует сегментация уровня 1, ответ адресата на запрос функции Представить может состоять из нескольких сегментов (запросов функции Сегмент, за которыми следуют ответы функции Представить), каждый из которых должен содержать целое число записей, то есть запись не может переходить из одного сегмента в другой. Если действует сегментация уровня 2, ответ адресата на запрос функции Представить может состоять из нескольких сегментов, причем одна запись может занимать несколько сегментов.

 

3.3.1 Порядок работы в случае, если сегментация не задействована

 

Процедуры, описанные в этом разделе (3.1.1) применимы в том случае, если сегментация не задействована. (Они применимы не только к операции Представить в случае, когда сегментация не задействована, но и к операции Поиск вообще, независимо от того, задействована сегментация или нет; ответ функции Поиск не подлежит сегментации).

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

Пусть адресат пытается передать записи с номерам с M по N. Если записи с M по N помещаются в ответе, адресат передает эти записи. В противном случае адресат передает записи с M по P, где P выбирается таким образом, что записи с M по P помещаются в ответе, а записи с M по P+1 - не помещаются.

 

Пример

Предположим, что адресат пытается передать в ответе записи с 1-й по 10-ю; записи с 1-й по 6-ю помещаются в ответе, а с 1-й по 7-ю уже не помещаются.

Сам по себе размер 7-й извлекаемой записи:

(a) не превосходит Предпочтительный размер сообщения или

(b) превосходит Предпочтительный размер сообщения, но не превосходит Исключительный размер записи, или

(c) превосходит Исключительный размер записи.

В случае (a) адресат передает записи с 1-й по 6-ю. В случае (b), кроме случая, отмеченного ниже (см. "Исключение"), адресат подставляет вместо 7-й извлекаемой записи диагностическую запись, указывающую, что размер записи превышает Предпочтительный размер сообщения. В случае (c) адресат подставляет вместо 7-й извлекаемой записи диагностическую запись, указывающую, что размер записи превышает Исключительный размер сообщения. (Если Исключительный размер записи равен Предпочтительному размеру сообщения, эти две диагностики не различаются.)

В случае (b) или (c):

- Если диагностическая запись не помещается вместе с записями с 1-й по 6-ю, адресат возвращает записи с 1-й по 6-ю. (Предпочтительный размер сообщения всегда должен быть достаточно большим, чтобы вместить любую диагностическую запись; таким образом, после следующего запроса функции Представить, начинающемся с 7-й записи, будет получена диагностика.)

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

 

Исключение

Если в запросе функции Представить указана только одна запись (то есть Число затребованных записей = 1), то, если размер этой записи превышает Предпочтительный размер сообщения, но не превышает Исключительный размер записи, адресат возвращает эту одну-единственную извлекаемую запись. Заметьте, что это исключение относится только  к операции Представить, но не к операции Поиск.

Таким образом, в случае (b) источник может все-таки получить 7-ю запись, отправив запрос функции Представить только на одну эту запись.

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

 

3.3.2 СЕГМЕНТАЦИЯ УРОВНЯ 1

 

В случае  сегментации уровня 1 адресат может разделять совокупный ответ функции Представить на несколько сегментов (ноль или более запросов функции Сегмент с последующими ответами функции Представить), каждый из которых состоит из целого числа записей (то есть записи не могут переходить с одного сегмента на другой). Процедуры, описанные в этом разделе (3.3.2) применимы в случае действия сегментации уровня 1.

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

Число сегментов должно быть не больше значения (необязательного) параметра функции Представить Максимальное число сегментов, если этот параметр был задан.

Если параметр Максимальное число сегментов задан и его значение равно 1, применяется тот же порядок действий, что и в разделе 3.3.1. Исключение, описанное в разделе 3.3.1, также применяется в случае, если в запросе функции Представить затребована ровно одна запись.

Предположим, источник запросил записи множества результатов с номерами с M по N.

 

Случай A: M<N (то есть запрошено больше одной записи).

1. Положим P=M.

2. Если записи с номерами с P по N помещаются в сегменте:

   - Поместить записи с номерами с P по N в сегмент.

   - Перейти к шагу 3.

   Иначе:

  - Поместить в сегмент записи с номерами с P по Q, где Q (меньшее N) таково, что записи с номерами с P по Q помещаются в сегменте, а записи с номерами с P по Q+1 не помещаются.

  - Если достигнуто Максимальное число сегментов, перейти к шагу 3.

  - Отправить сегмент как запрос функции Сегмент.

  - Положить P=Q+1.

  - Повторить шаг 2.

3. Отправить сегмент как ответ функции Представить.

 

Случай B: M=N (то есть запрошена ровно одна запись).

Адресат отправляет простой ответ функции Представить (из одного сегмента). Размер этого сегмента может превышать Предпочтительный размер сообщения. Сегмент содержит единственную запрошенную извлекаемую запись или запись суррогатной диагностики, если размер записи больше, чем Исключительный размер записи.

 

Пример

Предположим, источник запросил записи с 1-й по 10-ю.

1. Если все 10 записей помещаются в сегменте, совокупный ответ функции Представить будет состоять из ответа функции Представить, содержащего все запрошенные записи. Статус операции Представить будет иметь значение "выполнено успешно" (все ожидаемые записи ответа получены).

2. Пусть записи с 1-й по 4-ю помещаются в сегменте, а записи с 1-й по 5-ю не помещаются; записи с 5-й по 9-ю помещаются в сегменте, а записи с 5-й по 10-ю не помещаются. (Предположим, что в запросе функции Представить было задано значение 3 или более для параметра Максимальное число сегментов.) В этом случае совокупный ответ функции Представить будет содержать:

  - запрос функции Сегмент, содержащий записи с 1-й по 4-ю,

  - запрос функции Сегмент, содержащий записи с 5-1 по 9-ю, и

  - ответ функции Представить, содержащий 10-ю запись.

Параметр Статус операции Представить имеет значение "выполнено успешно" (все ожидаемые записи получены).

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

3. Пусть выполнены условия п. (2), за исключением одного: в запросе функции Представить было указано значение 2 для параметра Максимальное число сегментов. В этом случае совокупный ответ функции Представить будет содержать:

  - запрос функции Сегмент, содержащий записи с 1-й по 4-ю, и

  - ответ функции Представить, содержащий записи с 5-й по 9-ю.

Статус операции Представить будет иметь значение "выполнено частично 2" (не все ожидаемые записи ответа получены, потому что они не поместились в предпочтительный размер сообщения).

 

3.3.3 СЕГМЕНТАЦИЯ УРОВНЯ 2

 

В случае действия сегментации уровня 2 адресат может разделить совокупный ответ функции Представить на несколько сегментов (как и в случае сегментации уровня 1) и, кроме того, записи могут переходить из одного сегмента  в  другой. Процедуры, описанные в этом разделе (3.3.3) применимы в случае действия сегментации уровня 2.

Если извлекаемая запись не помещается в сегменте (вместе с записями, уже упакованными в этот сегмент), ее можно разделить на несколько последовательных фрагментов (см. п. 3.3.3.1) и упаковать их в последовательные сегменты, в соответствии с порядком действий, описанным в пп. 3.3.3.2 и 3.3.3.3.

 

3.3.3.1 Фрагменты

 

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

Для задач описания процедуры (3.3.3.3) начальный фрагмент определяется как фрагмент, начало которого совпадает с началом записи. Промежуточный фрагмент - это фрагмент, начало которого не совпадает с началом записи, а конец не совпадает с концом записи. Конечный фрагмент - это фрагмент, конец которого совпадает с концом записи. Целая запись (не сегментированная) не является фрагментом.

Сумма размеров записей и фрагментов записей  в сегменте, не включая контрольную информацию протокола, не должна превышать Максимальный размер сегмента (см. п. 3.3.3.2).

 

3.3.3.2 Размер сегмента, Размер записи и Число сегментов

 

В случае действия сегментации уровня 2 запрос функции Представить может (но не обязан) содержать следующие три параметра:

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

Максимальный размер записи -- Самый большой допустимый размер извлекаемой записи в рамках совокупного ответа функции Представить. Если он задан, то должен быть не меньше значения параметра Максимальный размер сегмента. (В случае действия сегментации уровня 2 параметр Исключительный размер записи, обсуждавшийся при инициализации, неприменим, независимо от того, задан или нет параметр Максимальный размер записи, кроме того случая, когда значение параметра Максимальное число сегментов равно 1.)

Максимальное число сегментов -- Максимальное число сегментов, которое адресат может включить в совокупный ответ функции Представить. Если значение этого параметра равно 1, сегментации не происходит, применяется тот же порядок действий, что и в разделе 3.3.1, и параметр Максимальный размер записи задавать не нужно.

 

Если заданы оба последних параметра, Максимальный размер записи должен быть не больше, чем произведение значений Максимальный размер сегмента и Максимальное число сегментов.

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

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

Если не указан ни один из этих двух параметров, источник должен быть готов получать произвольно большие записи и произвольное число сегментов.

 

3.3.3.3 Процедура сегментации

Следующие процедуры применимы в случае сегментации уровня 2. Адресат помещает в первый сегмент как можно больше целых записей. Если все запрошенные записи поместились, сегмент отправляется как простой ответ функции Представить. В противном случае адресат помещает в оставшееся в сегменте место начальный фрагмент следующей записи (если это возможно) и отправляет этот сегмент как запрос функции Сегмент. Затем адресат помещает остаток записи в следующий сегмент (если это возможно; а если невозможно, отправляет по мере необходимости запросы функции Сегмент с промежуточными фрагментами, а затем помещает конечный фрагмент, если таковой имеется, в начало следующего сегмента) и в оставшееся в этом сегменте место помещает как можно больше целых записей. Если последняя из запрошенных записей вместилась в сегмент (или если достигнуто значение параметра Максимальное число сегментов), этот сегмент отправляется как ответ функции Представить. В противном случае адресат продолжает таким же образом заполнять сегменты, пока последняя из запрошенных записей не поместится в очередной сегмент или пока не будет достигнуто значение параметра Максимальное число сегментов. Каждый из этих сегментов адресат отправляет как запрос функции Сегмент, кроме последнего, который он посылает как ответ функции Представить. Ниже эти действия описаны более формально.

Пусть источник запросил записи с номерами с M по N. (Заметьте, что "Запись" означает "Запись суррогатной диагностики", если размер записи превышает Максимальный размер записи или если адресат не в состоянии сегментировать запись таким образом, чтобы каждый фрагмент помещался в сегменте.)

1. Положим R=M (начинаем подготовку первого сегмента).

2. Если запись с номером R помещается в текущем сегменте:

  - помещаем в сегмент записи с номерами с R по P, где P - самый большой номер (но не больше N), такой что записи с номерами с R по P помещаются в сегменте.

  - Если P равно N или если достигнуто значение параметра Максимальное число сегментов, переходим к шагу 8.

  - R=P+1

3. Примечание: на этом шаге запись с номером R уже не помещается в текущем сегменте.

Если в запросе функции Представить было задано значение параметра Максимальное число сегментов и если адресат не может определить, поместится ли запись с номером R в остатке совокупного ответа:

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

  - Переходим к шагу 7.

4. Если запись с номером R не помещается в остаток совокупного ответа, переходим к шагу 8.

5. Если запись с номером R помещается в остаток совокупного ответа, но ни один начальный фрагмент не помещается в текущем сегменте:

  Примечание: это условие исключает случай пустого сегмента; см. примечание перед шагом 1.

  - Передаем запрос функции Сегмент (начинаем подготовку следующего сегмента).

  - Переходим к шагу 2.

6. Примечание: на этом шаге запись R может поместиться в оставшихся сегментах; она не помещается в текущем сегменте, но некоторый ее начальный фрагмент помещается в текущем сегменте.

  - Помещаем как можно больший начальный фрагмент записи с номером R в сегмент и передаем запрос функции Сегмент.

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

  - Начинаем подготовку следующего сегмента, прежде всего помещая туда конечный фрагмент записи с номером R.

7. - Положим R=R+1.

  - Если R меньше или равно N, переходим к шагу 2.

8. Отправляем ответ функции Представить.

 

Пример:

Предположим, источник запросил записи с 1-й по 12-ю. Все записи имеют длину 500 байтов, кроме записи номер 5, которая имеет длину 10 000 байтов. Максимальный размер сегмента равен 3200.

 

1. Пусть запись номер 5 состоит из 10 элементов, по 1000 байтов каждый. Адресат может сегментировать запись номер 5, но только по границам элементов; адресат не позволяет элементам переходить с одного фрагмента на другой.

Примечание: Это значит, что адресат может сегментировать запись таким образом, что один фрагмент будет состоять из байтов с M*1000+1 до (M+N)*1000, где M=0,1,...,9; N=1,2,...,10-M; то есть байты 1-1000, 1-2000, 1-3000,1000-2000, 1000-3000, 1000-40000 и т.д.

Предположим далее, что адресат не может сегментировать другие записи. Совокупный ответ функции Представить будет иметь следующий вид:

 

сегмент 1:

запрос функции Представить, содержащий записи с 1-й по 4-ю и первые 1000 байтов записи номер 5 в качестве начального фрагмента.

 

Примечание:  размер сегмента - 3000 байтов, это меньше чем Максимальный размер сегмента - 3200 байтов; но адресат не может помесить в сегмент еще один фрагмент, потому что тогда размер сегмента оказался бы больше максимального значения 3200 байтов (так как минимальный размер фрагмента - 1000 байтов).

 

сегмент 2:

запрос функции Сегмент, содержащий байты записи 5, с 1001 по 4000, в качестве промежуточного фрагмента.

сегмент 3:

запрос функции Сегмент, содержащий байты записи 5, с 4001 по 7000, в качестве промежуточного фрагмента.

сегмент 4:

запрос функции Сегмент, содержащий байты записи 5, с 7001 по 10000, в качестве конечного фрагмента.

сегмент 5:

запрос функции Сегмент, содержащий записи с 6-й по 11-ю.

сегмент 6:

ответ функции представить, содержащий запись номер 12.

 

2. Предположим теперь, что адресат может сегментировать меньшие записи на фрагменты по 100 байтов (или кратные 100).

Сегменты с 1-го по 3-й будут такими же, как в случае 1.

сегмент 4:

запрос функции Сегмент, содержащий байты записи номер 5, с 7001 по 10000, в качестве конечного фрагмента и байты записи номер 6, с 1 по 200, в качестве начального фрагмента.

сегмент 5:

запрос функции Сегмент, содержащий байты записи номер 6, с 201 по 500, в качестве конечного фрагмента, записи с 7-й по 11-ю и первые 400 байтов записи 12 в качестве начального фрагмента.

сегмент 6:

ответ функции Представить, содержащий байты записи 12, с 401 по 500, в качестве конечного фрагмента.

 

3. Предположим, что адресат может сегментировать любые записи произвольным образом.

сегмент 1:

запрос функции Представить, содержащий записи с 1-й по 4-ю и первые 1200 байтов записи номер 5 в качестве начального фрагмента.

сегмент 2:

запрос функции Сегмент, содержащий байты записи 5, с 1201 по 4200, в качестве промежуточного фрагмента.

сегмент 3:

запрос функции Сегмент, содержащий байты записи 5, с 4201 по 7400, в качестве промежуточного фрагмента.

сегмент 4:

запрос функции Сегмент, содержащий байты записи 5, с 7401 по 10000, в качестве конечного фрагмента, запись 6 и первые 100 байтов записи 7 в качестве начального фрагмента.

сегмент 5:

ответ функции Представить, содержащий байты записи 7, с 101 по 500, в качестве конечного фрагмента, и записи с 8-й по 12-ю.

 

 

3.4 ОПЕРАЦИИ И ИДЕНТИФИКАТОР ССЫЛКИ

 

Запрос источника на выполнение операции определенного типа инициализирует операцию, которую завершает соответствующий ответ адресата. Определены следующие типы операций: Инициализация, Поиск, Представить, Удалить, Отчет о ресурсах, Сортировка, Сканирование и Расширенные функции. (Таким образом, каждый тип запроса источника соответствует некоторому типу операции, за исключением следующих типов запроса: Экстренный контроль ресурсов и Закрыть.) Операция состоит из инициализирующего запроса и завершающего ответа, вместе с возможными промежуточными запросами и ответами функции Контроль доступа и Контроль ресурсов, запросами функции Экстренный контроль ресурсов и запросами функции Сегмент. Источник присваивает операции Идентификатор ссылки и включает этот Идентификатор ссылки в свой инициализирующий запрос, он должен включаться также в каждое сообщение этой операции. Если действует опция "последовательное выполнение операций", параметр Идентификатор ссылки можно не включать в инициализирующий запрос; в этом случае Идентификатор ссылки для этой операции считается нулевым и не включается в последующие сообщения этой операции.

Любое сообщение, отправляемое источником адресату или наоборот (то есть любой запрос или ответ, определенный в определении соответствующей функции), является частью операции (идентифицируемой своим Идентификатором ссылки), за следующими исключениями:

- Запрос или ответ функции Закрыть не является частью никакой операции.

Примечание: Запрос или ответ функции Закрыть может содержать идентификатор ссылки, в соответствии с описанием процедуры в п. 3.2.11.1.5.

 - Если действует опция "параллельное выполнение операций", любой запрос или ответ функций Контроль ресурсов или Контроль доступа, не содержащий параметра Идентификатор ссылки, не является частью никакой операции.

Данный стандарт не предполагает никакой связи между некоторой операцией и любой последующей операцией, даже если последняя использует тот же самый идентификатор ссылки. Данный стандарт не определяет ни содержание параметра Идентификатор ссылки, ни его смысл, помимо того, что он используется для обозначения некоторой операции. Идентификаторы ссылки всегда присваиваются источником и имеют смысл только в системе источника. Поскольку Идентификаторам ссылки не приписывается никакой семантики, они не подразумевают никакого типа данных и могут быть описаны только как прозрачные бинарные данные. (Следовательно, их тип ASN.1 есть OCTET STRING).

 

 

3.5 ПАРАЛЛЕЛЬНОЕ ВЫПОЛНЕНИЕ ОПЕРАЦИЙ

 

Если действует опция "параллельное выполнение операций", параметр Идентификатор ссылки обязательно должен указываться в инициализирующем запросе (но см. примечание), причем источник может инициализировать несколько операций, выполняемых параллельно, каждая из которых идентифицируется своим Идентификатором ссылки.

Примечание: Параметр Идентификатор ссылки не является обязательным для операции Инициализация; опция "параллельное выполнение операций" вступает в силу только после завершения предварительного обсуждения, так что во время инициализации она не действует.

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

 

Пример: источник может отправить запрос функции Поиск с Идентификатором ссылки "100", а затем отправить второй запрос функции Поиск с Идентификатором ссылки "101", еще не получив ответа функции Поиск, соответствующего первому запросу функции Поиск. При этом возникают две операции, выполняемые параллельно. Получение источником ответа, соответствующего второму запросу функции Поиск (идентифицируемому идентификатором ссылки "101"), завершит вторую операцию, это может произойти и до завершения первой операции (идентифицируемой идентификатором ссылки "100"). После этого источник может отправить запрос функции Представить (относительно множества результатов, созданного при выполнении второй операции), инициализирующий еще одну операцию. Для этой операции источник должен задать Идентификатор ссылки, не равный "100" (так как все еще существует активная операция с этим идентификатором ссылки). Новый Идентификатор ссылки может (но не обязан) быть равным "101"; но в этом случае адресат может и не предполагать никакой связи с предыдущей операцией, использовавшей тот же Идентификатор ссылки "101".

Пока не завершена операция Инициализация, нельзя инициализировать никакую другую операцию. Нельзя инициализировать операцию в рамках Z-связи после того, как был отправлен или принять запрос функции Закрыть.

Все множества результатов, в принципе, доступны для любой операции. Может получиться, что две или более операции одновременно попытаются обратиться к одному и тому же множеству результатов. Данный стандарт не определяет, что происходит в этом случае. Источник не должен инициализировать параллельные операции Поиск с одним и тем же значением параметра Идентификатор множества результатов.

Помимо упомянутого выше ограничения (если источник использует некоторый Идентификатор ссылки для инициализации некоторой операции, то до завершения выполнения этой операции он не должен использовать этот Идентификатор ссылки для инициализации другой операции) нет никаких ограничений на повторное использование источником Идентификаторов ссылки. Источник может случайным образом передавать Идентификаторы ссылки от одного пользователя к другому, или в целях собственного удобства присваивать разным конечным пользователям разные Идентификаторы ссылки. Адресат не обязан знать, как именно источник использует Идентификаторы ссылки. В частности, ему не обязательно знать, что источник использует Идентификаторы ссылки, чтобы различать своих пользователей. Адресату не требуется ничего знать о конечных пользователях источника, он взаимодействует только с (единым) источником.

 

 

 

3.6. Спецификация композиции.

 

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

 

Идентификатор спецификации элемента является объектом формата спецификации элемента (структуры, используемой для того чтобы выразить спецификацию элемента) или именем множества элементов. Последнее является примитивным именем. Спецификация элемента это проявление формата спецификации элемента, или имени множества элементов.

 

Для схем принятых по умолчанию по крайней мере один из идентификаторов спецификации элементов должен быть именем множества элементов, и адресат определяет такой идентификатор как имя множества элементов по умолчанию для [данной] базы данных.

 

Примечание. Адресат обозначает эту информацию либо через функцию (службу) Объяснения, либо с помощью какого - либо другого механизма, не предусмотренного стандартом.

 

Для каждой записи, которая подлежит возвращению в Поиск или Совокупный ответ функции, адресат применяет абстрактную структуру записи (определяемую схемой базы данных, которой эта запись принадлежит) чтобы сформировать абстрактную запись базы данных, к которой адресат применяет спецификацию элемента для получения другого образца абстрактной записи базы данных (последний может быть нулевой трансформацией), к которой адресат применяет синтаксис чтобы получить искомую запись.

 

Если источник включает параметр Comp-spec (в данный запрос), то применяются процедуры п.3.6.1. Для операции Поиска или [любой ] текущей операции в тех случаях, когда параметр Comp-spec опущен, для каждой записи принимается схема по умолчанию, и осуществляются процедуры 3.6.2.

 

3.6.1 Указание  параметра Comp-spec

 

       Параметр Текущего запроса Comp-spec включает одну или более пар из имени базы данных и связанную с ней спецификацию композиции. Каждая спецификация композиции может включать идентификатор схемы (или при его отсутствии, схему по умолчанию для базы данных) и спецификацию элемента. Для каждой записи подлежащей возвращению в Совокупный ответ функции:

 

       Если база данных, к которой принадлежит запись, указана  в качестве компонента пары, то адресат, если это возможно, создает абстрактную запись в базе данных, применяя соответствующую спецификацию композиции (например, сначала посредством применения абстрактной структуры записи, определенной схемой, к записи базы данных, чтобы сформировать абстрактную запись базы данных, а затем применяя спецификацию элемента, при этом схема и спецификация элемента - из спецификации композиции)

 

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

 

       Параметр Comp-spec в качестве альтернативы может состоять только спецификации композиции без указания какой либо базы данных. В этом случае, если адресат в состоянии создать абстрактную запись в базе данных в соответствии с данной спецификацией композиции, то он осуществляет это для каждой записи, подлежащей возвращению. Если не в состоянии, то абстрактная запись базы данных создается в соответствии с схемой и именем множества элементов, принятыми по умолчанию для базы данных, к которой эта запись принадлежит.

 

       Адресат применяет синтаксис записи (который может быть включен в спецификацию композиции или в параметр Предпочтительный синтаксис записи) к записи целевой базы данных, чтобы сформировать извлеченную(retrieval) запись.

 

3.6.2 Comp-spec опущен.

 

       В случае если запрашивается извлечение массива записей из найденного (Result) массива, и при этом опущен параметр Comp-spec, то применяются процедуры, описанные в настоящем разделе.

 

Примечания:

1. Это всегда случается при поисковом запросе, так как параметр Comp-spec в определение поискового запроса не включен.

 

2.     Это всегда случается при активной версии 2, так как параметр Comp-spec в версии 2 не определен.

       Параметры поискового запроса  “Имена - малого- множества - элементов” и “Имена - среднего -множества - элементов”, а также параметр “Имена - множества - элементов” текущего запроса принимает форму множества одной или более пар - имя базы данных и соответствующего имени множества элементов. Для каждой записи, подлежащей возвращению в Поиск или Совокупный ответ функции адресат сначала применяет абстрактную структуру записи определенную схемой по умолчанию для той базы данных, к которой запись принадлежит, чтобы создать абстрактную запись базы данных, а затем применяет имя множества элементов, как показано ниже:

 

       Если база данных, к которой принадлежит запись указана (как компонент одной из пар), и если соответствующее имя множества элементов подходит для схемы по умолчанию, [принятой] для настоящей базы данных, то адресат применяет данное имя множества элементов.

 

       В другом случае, адресат использует имя множества элементов по умолчанию, [принятое] для данной базы данных.

 

       Каждый из этих параметров имеет  альтернативу. Он может состоять только из имени множества элементов без указания на какую-либо базу данных. В этом случае, для каждой записи, подлежащей возвращению, если соответствующее имя множества элементов подходит для схемы по умолчанию, [принятой] для настоящей базы данных, то адресат применяет данное имя множества элементов, в другом случае адресат использует имя множества элементов по умолчанию, [принятое] для данной базы данных.

 

       Адресат должен всегда распознавать знак “F как имя множества элементов, означающее “полный” (Full), [в тех случаях], когда она применена к абстрактной записи базы данных, то результатом является та же самая абстрактная база данных (т. е. трансформация равна нулю)

 

       Адресат должен всегда распознавать знак “B как имя множества элементов, означающее “краткий” (Brief),. Настоящий стандарт не определяет значение  Brief”. За исключением случаев, когда источнику известно определение  Brief”, принятое адресатом для данной схемы, он не предполагает, что включены некоторые специальные элементы.

 

       Источник может указать “предпочтительный синтаксис записи”, который адресат применяет (к абстрактной записи базы данных, созданной применением имени множества элементов) для того чтобы сформировать извлеченную запись. Если источник не указывает “предпочтительный синтаксис записи” то адресат может выбрать другой [синтаксис] (см. 3.2.2.1.5).

 

3.6.3 Синтаксис записи

 

       Для каждой записи, подлежащей возвращению в Поиск или в Совокупный ответ функции имя множества элементов или схема и спецификация элементов из спецификации композиции, имеют результатом, как было описано выше, абстрактную запись базы данных. К этой записи адресат применяет синтаксис записи, обозначенный как описано выше. Термин “Синтаксис записи” имеет следующее значение:

 

       В тех случаях, когда [синтаксис] указан источником (как значение Предпочтительного синтаксиса записи, или в рамках спецификации композиции), он принимает форму идентификатора объекта (OID) и ссылается на абстрактный синтаксис (установленный адресатом в соответствие с переходным синтаксисом или подлежащий такой установке), который источник просит адресата использовать для извлечения записей.

 

       В тех случаях когда [синтаксис] указан адресатом, он принимает форму идентификатора объекта или контекста представления, сопровождающего извлеченную запись в Поиске и Ответе функции, и ссылается на абстрактный синтаксис в сочетании с переходным синтаксисом.

 

 

 

3.7 Запросы типа 1 и типа 101

 

В этом разделе описан порядок работы в случае, если запрос имеет тип 1 (Query-type 1) (или 101; см. ниже примечание 2). Запрос типа 1 - это запрос в "Обратной Польской Нотации" (RPN). Он имеет следующую структуру:

 

RPN-запрос ::= Аргумент

                                          |Аргумент + Аргумент + Оператор

   Аргумент ::= Операнд | RPN-запрос

   операнд ::= Список атрибутов + Термин

                                            | Идентификатор множества результатов | Ограничения

   Ограничения ::= Идентификатор множества результатов + Список атрибутов

   оператор ::= AND | OR | AND-NOT | Prox (И | ИЛИ | И-НЕ | Близость)

Использованы следующие обозначения:

   ::= означает "определяется как"

   | означает "или"

+ означает "за которым следует", причем + сильнее, чем | (то есть + вычисляется прежде, чем |).

 

Примечания:

1. Для типа 1 оператор Prox и операнд Ограничения определены только для версии 3. Когда действует версия 2, включение оператора Prox или операнда Ограничения в запрос типа 1 является ошибкой протокола.

2. Запрос типа 101 определяется как идентичный запросу типа 1 за одним исключением: оператор Prox и операнд Ограничения определяются не только для версии 3, но и для версии 2. Таким образом, определение запроса типа 101 не зависит от версии.

Адресат, подчиняющийся Z39.50, обязан поддерживать запрос типа 1,  но поддержка запроса типа 1 не подразумевает поддержку любого из определенных здесь операторов или операндов.

Адресат указывает, запросы какого типа он поддерживает и какие операторы и операнды.

Примечание: Адресат указывает эту информацию или в разделе Объяснения, или при помощи какого-либо механизма, выходящего за рамки данного стандарта.

Если адресат заявляет о поддержке оператора Prox, то адресат должен также указать, поддерживает ли он расширенную модель множества результатов для близости (расширенную модель множества результатов, описанную в разделе 3.1.6 и ее специальную разновидность для близости, описанную в разделе 3.7.2.2). Если адресат заявляет о поддержке  операнда Ограничение, то он должен также поддерживать расширенную модель множества результатов для ограничения (расширенную модель множества результатов поиска и ее специальную разновидность для ограничения, описанную в разделе 3.7.3).

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

 

3.7.1 Представление и оценка запросов типа 1 и типа 101

 

Для источника запрос представлен в виде дерева. Каждое под-дерево представляет операнд, простой или составной. Каждый концевой узел представляет простой операнд: Идентификатор множества результатов, Список атрибутов + Термин или Ограничение. Каждый неконцевой узел представляет составной операнд: под-дерево, корнем которого является оператор, и которое содержит два под-дерева - левый операнд и правый операнд.

Источник проходит по дереву происходит в порядке слева направо (left post-order ?), в результате получается последовательность (простых) операндов и операторов, которые передаются адресату.

У адресата вычисление последовательности операндов и операторов представлено использованием стека. Каждый поступающий операнд помещается в стек. При поступлении оператора со стека снимаются два объекта, поступивших позже всех, и  оператор применяется следующим образом.

Каждый операнд представляет множество записей в базе данных. Каждый представляет собой одно из следующих:

(a) Список атрибутов+термин -- в этом случае операнд представляет множество записей в базе данных, полученное путем сравнения указанного множества атрибутов и термина по набору баз данных, указанных в поисковом запросе.

(b) Идентификатор множества результатов -- в этом случае операнд представляет множество записей из базы данных, представленное промежуточными множеством результатов, определяемым Идентификатором множества результатов.

(с) Операнд Ограничение (Идентификатор множества результатов+Список атрибутов):в этом случае операнд представляет множество записей из базы данных, представленное множеством результатов, определяемым Идентификатором множества результатов, и ограниченным указанным множеством атрибутов (см. 3.7.3).

Примечание: если среди поступивших операндов присутствует операнд Ограничение, адресат должен поддерживать расширенную модель множества результатов для ограничения; в противном случае запрос будет ошибочным.

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

Пусть S1 и S2 - множества, представленные левым и правым операндами соответственно. Пусть S определено следующим образом:

- В случае оператора AND множество S есть пересечение S1 и S2.

- В случае оператора OR множество S есть объединение S1 и S2.

- В случае оператора AND-NOT множество S есть подмножество тех элементов S1, которые не содержатся в S2.

- В случае оператора Prox:

   - Если оба операнда имеют вид (a), то S есть подмножество записей в множестве (S! AND S2), для которых истинно A ProxTest B (см. 3.7.2.1), где A и B - эти два операнда.

   - Иначе:

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

      -- Пусть R1 и R2 - множества результатов, представляющие множества S1 и S2

         (то есть каждое из них представляет собой одно из двух:

         --- множество результатов, обозначаемое соответствующим операндом, если он имеет вид (b), или

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

         В обоих случаях предполагается, что оба множества, R1 и R2, соответствуют расширенной модели множества результатов для близости.)

      Каждый пункт в множествах R1 и R2 содержит информацию о позиции в виде векторов позиций. Для каждой записи, представленной обоими множествами R1 и R2, рассмотрим упорядоченную пару, состоящую из вектора позиции, связанного с этой записью, как она представлена в R1, и вектор позиции, связанный с этой записью, как она представлена в R2. Для каждой пары, удовлетворяющей ProxTest:

         --- запись включается в множество S; и

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

Возникает промежуточное множество результатов, представляющее записи в множестве S, оно помещается в стек. По окончании обработки запроса (то есть после обработки всех терминов запроса) в стеке останется один объект (в противном случае запрос ошибочен), который представляет множество записей базы данных, являющееся результатом запроса.

 

3.7.2 Близость

 

3.7.2.1 Проверка на близость

 

Проверка на близость - ProxTest - включает Расстояние, Отношение, Единицу и два булевых флага: Упорядоченность и Исключение.

- Расстояние: разность исходных значений двух операндов. (Например, если задана единица "абзац", нулевое расстояние означает "в одном и том же абзаце".) Расстояние не бывает отрицательным.

- Отношение: Меньше чем, Меньше или равно, Равно, Больше или равно, Больше чем или Не равно.

- Единица: Символ, Слово, Предложение, Абзац, Раздел, Глава, Документ, Элемент, Под-элемент, Тип элемента, Байт или какая-либо единица, определенная в данной частной системе.

- Флаг Упорядоченность: если он установлен, проверяется только "близость справа" (левый порядковый номер не должен превышать правый порядковый номер, а Расстояние сравнивается с разностью правого и левого порядковых номеров.)

- Флаг Исключение: если он установлен, к операции должно применяться отрицание (например, если  при флаге Исключение, имеющим значение "нет", проверяется условие "слово "кошка" на расстоянии не более 5 слов от слова "ложка", та же самая проверка при флаге Исключение, имеющем значение "да" будет проверять условие "слово "кошка" на расстоянии более 5 слов от слова "ложка".

 

Пример: пусть А и В обозначают, соответственно, "персональное имя= "Мак Гроу, Дж." и "персональное имя="Штенгель, К.", и пусть:

- Расстояние установлено 0,

- Отношение установлено "равно",

- Единица близости установлена "абзац"

- Флаг Упорядоченность установлен "ложь".

- Флаг Исключение установлен "ложь".

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

Если для флага Упорядоченность установлено значение "истина" (а для флага Исключение - значение "ложь"), то результатом будет множество записей, в которых имя "Мак Гроу, Дж." встречается в том же абзаце, что и имя "Штенгель, К.", но раньше него.

Если будет установлено Расстояние 1 (при флагах Упорядоченность и Исключение со значением "ложь"), то результатом будет множество записей, в которых эти два имени встречаются в соседних абзацах. Если, кроме того, установлено Отношение "меньше или равно", результатом будет множество записей, в которых эти два имени встречаются в одном и том же или в соседних абзацах.

 

3.7.2.2 Расширенная модель множества результатов для близости

 

В расширенной модели множества результатов для близости адресат сохраняет информацию о позициях в виде одного или нескольких векторов позиций, связанных с каждой записью, представленной в множестве результатов, которые (векторы) могут использоваться в операции близости как суррогаты для поиска, в результате которого было создано это множество результатов.

Пример:

Пусть R1 и R2 - множества результатов, построенные в результате поиска по запросу типа 1 о терминах "кошка" и "ложка". В множестве результатов расширенной модели для близости адресат сохраняет информацию, связанную с каждым пунктом в множестве R1 и с каждым пунктом в множестве R2, достаточную для того, чтобы результат операции близости "R1 близко к R2" был эквивалентен результату операции близости "слово "кошка" близко к слову "ложка" (термин "близко" употреблен здесь в неформальном смысле).

Данный стандарт не регламентирует, каким именно образом адресат сохраняет эту информацию.

В приложении 13 ERS (не нормативном) содержится несколько примеров проверки близости).

 

3.7.3 Ограничение и расширенная модель множества результатов

 

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

 

Пример:

Пусть R - множество результатов, созданное в результате поиска по термину "кошка", представляющее три записи:

1. где слово "кошка" встречается в заглавии,

2. где слово "кошка" встречается в заглавии и в качестве автора,

3. где слово "кошка" встречается в заглавии, в качестве автора и в качестве темы.

В этом случае "R, ограниченное на "автор" может дать множество результатов, состоящее из пунктов 2 и 3 множества R.

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

В приложении 13 ERS (не нормативном) содержится несколько примеров.