The UNESCO micro CDS/ISIS Software
3.1. Таблица определения полей (ТОП)
ТОП содержит описание полей записей главного файла (файла документов). Здесь описываются различные поля, которые могут присутствовать в записи и параметры для каждого поля.
ТОП используется для управления созданием рабочих листов по вводу данных для базы данных и для контроля содержания полей; создается модифицируется посредством программы ISISDEF, используя строковый редактор CDS/ISIS (описанный в разделе 14 "Строковый редактор"). Пример ТОП в строковом редакторе показан на рис. 5.
Возможности CDS/ISIS позволяют описать базу данных в соответствии со спецификой ваших требований. CDS/ISIS не фиксирует семантики обрабатываемой информации. Он просто выполняет набор функций, обычно требуемых в любой системе хранения и поиска информации, которые обеспечивают создание эффективных информационных систем. В связи с этим, невозможно предложить ряд исчерпывающих правил для создания базы данных, а возможно предложить только общие рекомендации. Ниже изложены основные требования к структуре базы данных. Для того,чтобы в совершенстве изучить CDS/ISIS, вы должны ознакомиться со всеми его возможностями, в частности, с элементами базы данных, описанными в этой главе, поскольку слабое знание базы данных может позже помешать использованию некоторых возможностей CDS/ISIS. Например, полное понимание таких совершенных возможностей как REF функция языка форматирования (см. главу 3.3.2.2 "REF(выражение, формат)", или программных возможностей ISISPAS, необходимых при создании интегрированных баз данных.
Под элементами данных подразумевают простейшую часть информации. Первый шаг в проектировании базы данных будет первым шагом внимательного и всестороннего анализа требуемых элементов данных. Обьекты, подходящие для выбора в качестве элементов данных, должны быть таковыми, что с ними можно работать по отдельности.
Чтобы определить это, вы будете задавать себе; типичные вопросы, такие; как: "Будет ли обьект нуждаться в сортировке ?", "Должен ли он быть поисковым ?", "Нужно ли его печататьиначе, чем остальные, например жирным шрифтом или большими буквами и т. д.".
Если ответ на любой из этих вопросов будет "Да", тогда обьект будет выбран как элемент данных.
Элементы данных содержатся в полях или подполях. Поле идентифицируется числовым признаком и описывается в ТОП базы данных. Вы можете считать признак именем поля или его номером, поскольку он известен CDS/ISIS. Каждый раз, когда вы хотите обрабатывать отдельные элементы данных CDS/ISIS, вы должны указать номер поля, где этот элемент описан. Например, в данной раннее ТОП, Title присвоен номер 24. Если вы хотите отобразить содержимое поля Title вы должны в CDS/ISIS указать V24 (на языке форматирования команд поля).
CDS/ISIS, обычно, трактует содержимое поля, как непрерывную строку символов и как один обьект. Вы можете, однако, подразделить поле на подполя. В этом случае поле будет содержать более чем один элемент данных, каждый из них будет описан в различном подполе. Непохожие поля, подполя не отождествляются признаком, но ограничены подполем.
Ограничителем подполя есть 2 символьный код, предшествующий и идентифицирующий подполе переменной длины внутри поля. Он состоит из символа ^(не знак), далее следует алфавитный или числовой символ, например: ^a.
В распечатке ТОП, приведенной раннее, поле Imprint определено как содержащее город, издателя и дату публикации в трех подполях а, b и соответственно с. Примером Imprint может быть:
^aParis^bUnesco^c1985
Поле, содержащее подполя, может быть доступно как единый обьект при ссылке на его номер (например V26).
В этом случае CDS/ISIS использует опции, которые подавляют признаки подполей, автоматически замещая их знаками пунктуации.
Однако, так как подполя идентифицируются разделителями, вы можете также иметь доступ к каждому подполю отдельно, указывая как признак поля, так и ограничитель релеватного подполя. Например: V26 ^b относится к подполю Publisher поля Imprint и V26 ^a относится к подполю места публикации.
При проектировании базы данных, необходимо помнить, что язык форматирования CDS/ISIS имеет средства для автоматической замены разделителей подполей знаками пунктуации. Попробуйте если возможно, выбрать коды разделителей таким образом, чтобы пунктуация была подходящей для применения, в противном случае вы должны будете форматировать каждое подполе индивидуально. Стандартная таблица замены разделителей дана в разделе 3.2.2. "Командный режим". Заметим, что первое подполе, разбитого на подполя поля, не должно иметь ограничителя подполя, так как считается, что он уже есть. Например, если в поле заглавие, где вы хотите использовать подполе для подзаглавия, и заглавная часть поля присутствует всегда, то разделитель подполя не нужен. Таким образом, следующее содержимое этого поля возможно:
IL nome della rosa^bnaturalmente, un manoscritto
В тех случаях, когда элементы данных могут встречаться более одного раза в записях, CDS/ISIS будет создавать столько полей, сколько требуется, сколько нужно, чтобы включать все случаи наличия таких элементов данных. Этот тип поля называется повторяемым типом поля. Типичным примером есть поле автор в библиографической записи. Все экземпляры повторяющегося поля имеют тот же номер. CDS/ISIS предоставляет возможности для работы и форматирования таких полей. Помните однако, что в основном вы не имеете доступа к отдельному экземпляру повторяющегося поля индивидуально.Часты случаи, например, когда первый экземпляр повторяющегося поля требует отдельной обработки (например, первый автор). Если ваше приложение требует этого, то нужно определить два разных поля: одно содержащее первое вхождение (не повторяющееся), и второе поле, содержащее другое вхождение (повторяющееся).
Повторяющиеся поля могут содержать подполя, которые дают вам возможность обращаться к 2-х размерным табличным данным (одно измерение - поле, другое - подполе). Заметим, что CDS/ISIS не имеет возможности прямо обращаться к повторяющимся подполям в пределах поля. Однако, вы можете осуществить это, если это требует приложение, путем использования возможностей программирования CDS/ISIS. Кроме того, вы можете описать поле повторяющимся даже если оно содержит один элемент данных. Это может быть полезно, например, чтобы иметь возможность разрывать относительно длинный текст, такой как статья или реферат, чтобы сохранить их содержимое при выводе. Путем определения такого поля, как повторяющегося, вы можете потом использовать возможности языка форматирования,предназначенные для повторяющихся полей, чтобы выделить первую строку каждого абзаца.
Другой пример, когда вы хотите иметь возможность искать длинные поля по словам путем ввода каждого параграфа, как отдельного вхождения. Вы можете использовать опцию F поискового языка, ограничив поиск в параграфе двумя или более словами, причем такими, что поиск не смог бы осуществляться, если поле было повторяемым (см. раздел 3.6 "Поисковый язык CDS/ISIS").
Обычные символы, хранимые в полях, также индексированы как данные, и могут быть интерпретированы CDS/ISIS как управляющие символы, в отличие от символов данных, и будут вызывать некоторые специальные процедуры обработки. Управляющие символы резервированы для использования в CDS/ISIS и поэтому не могут быть использованы как данные.
Ограничители поисковых терминов могут использоваться для идентификации ключевых слов или выражений, содержащихся в записях, чтобы обеспечить их поиск. Различные технические приемы, которыми снабжен CDS/ISIS в указателе записи, описаны в главе "Таблица выбора полей (ТВП)". Ключевые слова в записях могут быть отмечены двумя путями: либо заключены между парой косых (/.../), либо заключены в треугольные скобки (<...>). Преимущество использования треугольных скобок предпочтительней использования пары косых, поскольку треугольные скобки в отличии от косых скобок, являются резервируемыми символами и CDS/ISIS воспринимает как опцию каждое появление скобок или подавляет их, когда отсутствие опции подавляет скобки.
Когда скобки подавлены, они обычно удалены из отображенной версии поля, исключая тот случай, когда открывающая скобка непосредственно следует за закрывающей: в этом случае CDS/ISIS будет ставить (замещать) их точкой с запятой и пробелом.
Например, путем выбора соответствующего режима вывода на экран следующая строка:
university course documentation training library schooL
будет отображена как:
university course; documentation trainind; library school.
Исключая случай упомянутый ранее, вы должны следить, чтобы было достаточно пространства за открывающейся и закрывающейся скобкой соответственно. Например, ключевые слова вложенные из другого текста в поле как ниже:
Mission report describing a (university course) in (docunentation training) at an East African (library school)
Окружающее пространство вокруг ключевых слов должно присутствовать для того, чтобы правильно отображать результат:
Mission report describing a university course in documentation training at an East African library school.
Если поле было введено как:
Mission report describing a (university course) in (documentation training) at an East African (library school)
CDS/ISIS отобразит его как:
Mission report describing auniversity course indocumentation trainingat an East Africanlibrary school
Другими словами CDS/ISIS просто игнорирует скобки и не будет заменять их пробелами.
Когда печатаются результирующие каталоги, вам необходимо отсортировать содержимое одного или более полей в порядке печати записей в требуемой последовательности. CDS/ISIS старается создать отсортированную последовательность согласно с обычно принятыми правилами наполнения, но иногда это может быть невозможно. В таких случаях, CDS/ISIS предоставит вам возможность констатировать полностью как данное поле должно быть отсортированным снабженное заполняющей информацией во время ввода ваших данных.
Эти возможности позволяют вам инструктировать CDS/ISIS заменять или игнорировать любую последовательность символов данных в поле всякий раз, когда поле используется как запоминающий элемент, используя один из следующих спецификаций:
text-a=text-b в этом случае, CDS/ISIS заменит text-a на text-b когда поле использовано в сортировке, но использует text-a (и игнорирует text-b) когда поле отображается.
text-a в этом случае, text-a будет игнорироваться когда сортируется и только используется для отображения поля.
Ниже показано несколько случаев в которых обычно эти возможности использованы (но их применение не ограничено только этими случаями):
Введено как The evolution of information systems
Отсортировано как EVOLUTION OF INFORMATION SYSTEMS
Отображено как The evolution of information systems
Введено как 100=onehundred days
Отсортировано как ONEHUNDRED DAYS
Отображено как 100 days
Введено как Мс=mac Pherson, J.
Отсортировано как MACPHERSON J.
Отображено как МсPherson, J.
Каждая строка ТОП описывает одно поле записи файла документов и содержит 6 параметров: номер поля, имя, длина, тип, повторяемость и разделители подполей или шаблоны. Они описаны ниже.
Номер - это уникальное числовое значение (в диапазоне 1- 32767) идентифицирующее поле. Признак поля используют всякий раз, когда CDS/ISIS необходимо выполнить данную операцию на полем. Признак описан в главной записи и соединен с содержимым соответствующего поля.
Имя поля - описательное имя, которое вы присваиваете полю. Оно обычно используется в рабочих листах для ввода данных для идентификации на экране. Вы можете полагать что имя поля это то, что вам известно, тогда как номер есть имя, согласно которому поле известно CDS/ISIS. Имя поля может быть длиной до 30 символов.
При создании рабочего листа по вводу данных, CDS/ISIS будет выводить это имя как имя поля по умолчанию.
Это число (в диапазоне 1-1650) показывает предполагаемую длину поля. Пока создается рабочий лист по вводу данных, CDS/ISIS будет использовать это значение как длину по умолчанию.
Из-за закрытой связи между длиной поля и рабочими листами по вводу данных, CDS/ISIS не позволяет вам определить длину поля большую чем 1650 символов (что соответствует одной странице рабочего листа), поэтому поле не может быть в промежутке между двумя страницами рабочих листов. Заметим, однако, что, хотя все поля в базе данных имеют переменную длину, длина точно определенная здесь только характеристическая и CDS/ISIS не настаивает на ней, исключая поля для типа - шаблон, где длина фиксирована и максимальная длина ограничена 20 символами. Для другого типа поля, вы имеете опцию, где создаетя рабочий лист по вводу данных, каждый предел длины поля определен в ТОП или строковый редактор снабжен произвольной длиной по умолчанию 100 символов, если вы не введете длину.
Тип поля - условный код, указывающий на возможные ограничения в символах данных, которые могут храниться в поле. Тип поля может быть одним из следующих:
X - поле может содержать любой алфавитно-цифровой символ. Поля X - типа не проверяются CDS/ISIS.
A - поле может только содержать текстовые символы (заметим, что пробел не является текстовым символом!). На протяжении ввода данных, CDS/ISIS проверяет эти ограничения, выдавая сообщения, если ограничение не удовлетворено, и просит вас откорректировать поле.
N - поле может только содержать численные символы (0-9). На протяжении ввода данных, CDS/ISIS проверяет это условие, и выдает сообщение об ошибке, если условие не удовлетворено, то просит вас откорректировать поле.
Р - поле имеет фиксированную структуру, управляемую элементом шаблоном который вы определили в рабочем листе ввода данных. Тип входного шаблона определяется символами, которые могут вводиться в каждой позиции поля. Шаблоны описаны далее. По умолчанию тип строкового редактора - X .
Описанные текстовые символы могут быть настроены каждым пользователем посредством системной таблицы ISISAC.ТАВ, описанной в разделе 17.6 "Таблица буквенных символов (ISISAC.ТАВ)".
Этот параметр определяет, есть ли поле повторяемым (т. е. оно может встречаться более чем раз в любой длинной записи) или нет. R указывает на то, что поле повторяется (см., например, поля 44, 70, 71, 72, 74 и 76 в примере ТОП данном на рис. 5). Заметим, что Р-тип (шаблон) поля может не быть повторяемым.
Число вхождений поля повторяемости ограничено максимальной длиной записи.
В зависимости от определенного типа поля, этот элемент определяет набор полей, допустимых в поле, если таковые есть, (для типов Х, А или N), или шаблон (для типа Р).
Если поле содержит подполя, идентификатор подполя позволяет определить их в порядке, в котором они должны появляться. Заметьте, что символ отрицание(^), идентифицирующий разделитель подполя не вводится. Например, если поле содержит подполя ^а ^в и ^с, они определены в ТОП как aбс (но не ^a^в^c).
Шаблон-посимвольное описание содержимого поля.
Для каждой позиции поля вы определяете в шаблоне тип символа, который он может содержать:
X - позиция может содержать любой алфавитно-цифровой символ
A - позиция должна содержать текстовые символы
9 - позиция должна содержать числовые символы
other (другие) - позиция должна содержать указанные символы
Заметим, что X и A должен вводиться в верхнем регистре (как заглавные).
Ниже даны некоторые примеры шаблонов и соответствующие входные данные:
Заметим следующие ограничения на поля Р-типа:
Хотя вы можете модифицировать ТОП после ее создания, используя программу ISISDEF, вы должны знать, что некоторые изменения могут иметь тяжелые последствия, особенно если вы имеете уже введенные записи в соответствующей базе данных. Каждый раз изменяя ТОП, CDS/ISIS выполнит проверку последовательности рабочих листов, определенных для базы данных и, если необходимо, автоматически модифицирует их под определенные условия. Дополнительные изменения, однако, могут требоваться не только в рабочих листах, но также в ТОП и форматах воспроизведения.
В случае модификации ТОП, изменения могут потребоваться в самой базе данных. Если изменений требует база данных, вы можете выполнить их автоматически, используя программу ISISXCH импорта/экспорта, или вы можете это сделать вручную.
Ниже даны некоторые пояснения относительно влияния некоторых изменений ТОП, а также индикации, на которую CDS/ISIS автоматически реагирует.
Добавление поля: Добавить поле, как последнее в рабочих листах ввода данных; прибавить поле, в как последнее в форматах отображения; прибавить поле в инвертированном файле FST, если потребуется.
Удаление поля: CDS/ISIS будет автоматически удалять поле во всех рабочих листах в которых оно встречается, которое будет эффективно сдерживать любой дополнительный ввод этого поля в базе данных; вы можете, если хотите удалить поле из рабочих листов, в которых оно встречалось, используя программу ISISDEF; удалить поле из форматов в которых оно встречалось; если поле было введено в любую запись базы данных, то используйте программу ISISXCH для его удаления; если поле было инвертировано, удалите его из ТОП и переинвертируйте базу данных.
Изменить номер (код) поля:
Делается тогда, когда вы будете удалять старое поле и добавлять новое.
Чтобы изменить номер поля, используют программу ISISXCH, затем, если поле было инвертировано, переинвертируйте базу данных.
Изменение имени поля: Изменить, если необходимо, имя поля в рабочих листах и в форматах.
Увеличение длины поля: Увеличить, если необходимо, длину поля в рабочих листах.
Уменьшение длины поля: CDS/ISIS автоматически уменьшает длину поля в рабочих листах, если поле не есть повторяющимся.
Изменение типа поля: CDS/ISIS будет автоматически изменять тип поля во всех рабочих листах, где поле встречается. Однако, если запись содержит данные, описанные по-старому, не совместимые с новым типом, тогда такие поля могут требовать ручных изменений.
Сделать поле повторяемым: Увеличить, если необходимо, длину поля в рабочих листах или определить его как поле прокрутки, если поле инвертировано, модифицировать инвертированный файл ТОП для извлечения всех случаев поля; модифицировать форматы для точного формирования поля.
Сделать поле не повторяемым: CDS/ISIS уменьшит, если необходимо, длину поля в рабочем листе, где поле встречается; вы должны вручную удалить дополнительные лишние входные поля, если таковые есть в базе данных или предпринять альтернативные действия.
Изменение структуры подполя: Вы должны, если необходимо, переформатировать встречающиеся поля в базе данных согласно с новой структурой, используя ISISXCH; если поле было инвертировано и элементы инвертированного файла не длиннее соответствующих элементов в новой структуре, переинвертируйте базу данных после того, как соответственно измените ТОП; форматы могут также требовать изменений.
Изменения шаблона поля: CDS/ISIS автоматически изменяет шаблон во всех рабочих листах, где встречается поле. Однако, записи, уже описанные в базе данных, могут быть несовместимыми с новым шаблоном, который вы определили. В этом случае они должны быть изменены вручную.
The UNESCO micro CDS/ISIS Software
Язык форматирования позволяет определить точные требования по форматированию записей базы данных. С помощью этого языка, можно выбрать один или более конкретных элементов данных в нужном порядке, вставить текстовые константы по вашему выбору, например, отметить подзаголовками некоторые или все поля, а также определить требования по горизонтальному и вертикальному размещению данных. Совокупность команд по форматированию печати, описываемых в данной главе, называется форматом. В общем случае формат определяет подмножество полей записей базы данных, которые затем могут использоваться CDS/ISIS для выполнения заданной функции. Хотя форматы в основном используются для спецификации способа выдачи записей на экран или принтер, однако они также широко используются в системе каждый раз, когда необходимо выполнить специфические операции с одним или несколькими элементами данных. Hапример, в таблице выбора полей формат используется для определения данных, к которым должна применяться данная техника индексирования. Язык форматирования, следовательно, является ядром многих операций CDS/ISIS и эффективное использование CDS/ISIS требует тщательного его изучения. Формальное определение языка форматирования дано в разделе 3.2 "Язык форматирования".
Hекоторые форматы могут показаться очень сложными, и вы можете предположить, что язык форматирования сам по себе очень сложный. Фактически же все форматы, даже наиболее сложные, составлены из одной или более простых команд и выражений, разделенных запятыми или пробелами. Кажущаяся сложность следует из факта, что таких команд может быть много в одном формате. Следовательно, ключом к пониманию формата является анализ каждой команды в отдельности.
Хотя все форматы составлены с использованием одного и того же языка форматирования, они могут быть разделены на группы в зависимости от предполагаемого их использования:
Экранные форматы используются для вывода записей на экран или принтер (в последнем случае их называют форматами печати).
Форматы выборки используются в ТВП для определения данных, которые нужно индексировать.
Обрабатывая формат, CDS/ISIS работает с тремя объектами: запись базы данных, формат, рабочая область, в которой хранится вывод, продуцируемый форматом. Команды выполняются последовательно, в порядке, в котором они даны в формате. Hекоторые команды продуцируют действия (такие, как переход на новую строку, пропуск одной или более пустых строк и т. д.). Продуцируемые данные хранятся как строки текста в рабочей области, которые затем передаются в соответствующую программу для дальнейшей обработки, т. е. для печати.
Когда формат используется для выдачи данных на экран, продуцируемые строки обычно ограничены определенной максимальной длиной (шириной строки). Hапример, вызывая строки на экран, CDS/ISIS автоматически ограничивает ширину строки 80 символами. Hесмотря на то, что командами форматирования требуется перейти на новую строку, CDS/ISIS будет выдавать данные последовательно, стараясь заполнить каждую строку настолько, насколько возможно. Если данное поле превышает длину строки, CDS/ISIS поделит его на необходимое количество строк. Когда CDS/ISIS разбивает данные на строки, точка деления всегда оказывается на уровне слов, т. е. слово никогла не разрывается на две строки.
Все команды формата могут вводиться большими или маленькими буквами или комбинацией больших и малых букв.
Все примеры по форматированию в следующих разделах ссылаются на запись, приведенную на рис. 6, в которой содержание полей дано в том виде, в каком оно хранится в записи. Эта запись взята из базы данных CDS, поставляемой ЮHЕСКО на дискетах вместе с CDS/ISIS (ТОП соответствующей базы данных описана в разделе 3.1 "Таблица определения полей (ТОП)").
Рисунок 6
Селекторы поля - это команды, используемые для извлечения определенного поля или подполя из записи. Специальная команда позволяет извлечь номер записи в файле документов (MFN), хотя MFN не является полем. (MFN не имеет метки и не определен в ТОП).
3.2.1.1. Команда поля
Для извлечения поля из записи нужно закодировать букву V с меткой поля, которое вы хотите извлечь. V (мнемонический код поля переменной длины) является командой, указывающей CDS/ISIS, что вы хотите извлечь поле. Она может вводиться как заглавной, так и прописной буквой.
Рисунок 7
Для извлечения конкретного подполя из данного поля просто добавьте соответствующий разделитель подполя к метке, как показано на рис. 8. Заметьте, что вы можете использовать специальный разделитель подполя ^* для извлечения первого подполя, если оно есть. В этом случае первому подполю необязательно должен предшествовать действительный разделитель подполя.
Отметьте, что разделитель подполя можно вводить как заглавной буквой, так и прописной, это безразлично.
Рисунок 8
Вам может понадобиться, в некоторых случаях, извлечь часть поля, которая не является подполем, особенно в случаях, когда поле имеет фиксированный формат во всей базе данных (например, стандартизованную запись даты YY-MM-DD). Вы можете сделать это введением команды смещение/длина непосредственно после команды поля или подполя, к которому эта команда применяется. Эта команда может быть введена в виде *смещение.длина или *смещение или длина, где:
*смещение указывает позицию первого символа, который должен быть извлечен из поля или подполя (позиции символов считаются с нуля, т. е. первый символ находится в позиции номер 0, второй - в позиции 1 и т. д.); если смещение опущено, CDS/ISIS считает смещение равным 0;
.длина указывает количество символов, которые нужно извлечь; если длина опущена, то извлекается все поле, начиная с символа, указанного в смещении.
Некоторые примеры этой команды даны на рис. 9 где предполагается, что запись, взятая для примера, содержит также поле 1 в следующем виде:
88-Nov-05
Рисунок 9
Отметьте, в двух последних примерах есть разница в обращении с полем, содержащим подполя: если идет ссылка на поле (т. е. V26), то смещение ноль представляет первый действительный символ поля, в то время как при ссылке на подполе (т. е. V26^b) смещение ноль представляет первый символ данных после разделителя подполя.
Когда CDS/ISIS обрабатывает команду поля или подполя, вывод содержимого поля начинается с текущей позиции строки, которая зависит от последней выполненной команды. Если поле не вмещается в текущую строку, CDS/ISIS создает столько; дополнительных строк, сколько требуется. Обычно последующие строки начинаются с первой позиции. Вы можете изменить эти позиции с помощью команды смещения, которая должна следовать непосредственно за командой поля (или подполя). Команда смещения кодируется следующим образом (f, c) или (f), где:
f - указывает количество пробелов, которые должны быть оставлены с левого поля перед форматированием первой (или единственной) строки поля. Эта команда эффективна только в случае, если поле форматируется с начала строки, в противном случае она игнорируется;
с - указывает количество пробелов, которые должны быть оставлены с левого поля перед форматированием всех последующих строк поля, форматируемого на более, чем одной строке.
Значение ноль может быть назначено как для f, так и для с. Если нужно использовать только f, c может быть опущено (CDS/ISIS присваивает ноль по умолчанию). Однако, если нужно только c, вы должны определить и f. Hекоторые примеры приведены на рисунке 10.
Рисунок 10
Для извлечения номера записи в файле документов введите следующее:
MFN или MFN(d)
где d - количество цифр, которые должны быть выведены на экран. Если (d) опущено, по умолчанию выводится 6 цифр. См. рисунок 11.
Рисунок 11
Oтметьте, что вы можете использовать F функцию (см. раздел 3.3.2.1 "F(expr-1, expr-2, expr-3)") для подавления ведущих нулей.
CDS/ISIS может выводить данные на экран в трех различных режимах:
режим проверки: в этом режиме поля выводятся на экран точно в том виде, как они хранятся в записи. Отметьте, что CDS/ISIS не вносит никаких разделителей между полями или экземплярами повторяющегося поля. Следовательно, это забота пользователя обеспечить адекватное разделение полей с помощью команд размещения, литералов или повторяющихся групп (см. разделы 3.2.3., 3.2.4, 3.3.5,"Команды вертикального и горизонтального размещения", "Литералы", и "Повторяющиеся группы"). вертикального и горизонтального размещения", "Литералы" и "Повторяющиеся группы). Этот режим обычно используется для вывода на экран записей в проверочных целях;
режим заголовка: этот режим обычно используется для заголовков при печати каталогов и индексов. Все управляющие символы, введенные в данные, такие как средства изменения порядка сортировки (см. раздел 8.3.13 "Сортировка") и ограничители дескрипторов (и) игнорируются (за исключением указанного ниже), в то время как разделители подполей заменяются пунктуацией (см. ниже).
режим данных: этот режим похож на режим заголовка, но, вдобавок,после каждого поля автоматически ставится точка (.), за которой следуют два пробела (или просто два пробела, если поле оканчивается каким-либо знаком пуктуации). Отметьте, однако, что эта автоматическая пунктуация подавляется, если за селектором поля следует суффикс-литерал (см.раздел 3.2.4 "Литералы").
Когда CDS/ISIS форматирует поле, содержащее подполе, в режимах заголовка или данных, он автоматически заменяет введенные разделители подполей знаком пунктуации (первый разделитель подполя, если есть, всегда игнорируется). Далее, специальная комбинация символов >< заменяется на ';', обеспечивая таким образом простой способ форматирования полей, содержащих перечень ключевых фраз, заключенных в угловые скобки (и сохраняя нажатие клавиши во время ввода данных). Таблица стандартного замещения разделителей подполей выглядит так:
^a замещается на ';'
^b до ^i замещается на ','
все другие замещаются на '.'
Команда режима кодируется Mmc, где:
m определяет режим следующим образом:
Р - режим проверки
H - режим заголовка
D - режим данных
с определяет способ написания следующим образом:
U - данные конвертируются в заглавные буквы
L - данные не изменяются
Команда режима может появляться в формате столько раз, сколько необходимо, каждая команда действует до тех пор, пока не появляется следующая. Если команда режима отсутствует, CDS/ISIS использует по умолчанию MPL (режим проверки, данные не конвертируютсяв заглавные буквы). Примеры команды режима даны на рис. 12.
Рисунок 12
Язык форматирования обеспечивает пять команд для управления горизонтальным и вертикальным размещением. Они приведены на рис.13.
Рисунок 13
Команда Xn вносит n пробелов перед форматированием следующих данных. Однако, если на текущей строке осталось менее n свободных позиций, CDS/ISIS просто переходит на новую строку. Так, например, если следующая свободная позиция текущей строки - 77, а ширина строки определена 80, то выполнение команды Х7 приведет к размещению следующих данных с начала следующей строки (а не с третьей позиции следующей строки).
Команда Сn указывает, что следующие данные должны размещаться, начиная с n-й позиции следующей строки. Это средство позволяет осуществлять вывод по колонкам. Если n оказывается больше ширины строки, команда игнорируется.
Команда / сходна с возвратом каретки на пишущей машинке, т. е. она переводит на новую строку и, следовательно, приводит к размещению данных с начала следующей строки. Однако, в отличие от возврата каретки, многократно подряд расположенные команды /, хотя и являются синтаксически правильными, имеют тот же смысл, что и одна команда /, т. е. / никогда не производит пустых строк. Для этой цели предусмотрена команда #. Она выполняет ту же функцию, что и /, но переход на новую строку является безусловным. Так, вы можете использовать комбинацию /# для создания одной (и только одной) пустой строки (отметьте, что комбинация ## может привести к пропуску одной или двух пустых строк в зависимости от того, была ли пустой строка, форматированная перед выполнением первой команды #).
Использование команды # может вызвать затруднение в тех случаях, когда выбираемое поле оказывается пустым. Эта ситуация хорошо иллюстрируется на следующем примере:
/#V10/#V20/#V30 ...
Если все поля присутствуют в записи, то в результате поля 10, 20, и 30 будут располагаться с начала строк и каждому будет предшествовать одна пустая строка. Однако, если поле 20 отсутствует, то между 10 и 30 полями будет пропущено две пустые строки. Это может быть нежелательно если действительно требуется, чтобы между полями была пропущена именно одна пустая строка независимо от наличия или отсутствия некоторых полей, тогда приведенная выше спецификация не приведет к желаемому результату.
Эту проблему решает команда %. Ее действие заключается в подавлении всех последовательных пустых строк (если они есть) между текущей строкой и последней непустой строкой.
Так, следующий формат:
%##V10%##V20%##V30 ...
приведет к пропуску одной и только одной строки между каждым полем, даже если некоторые из них отсутствуют в записи. Дополнительные примеры этих команд даны на рис. 14.
Рисунок 14
Литерал - это строка символов, заключенная между соответствующими разделителями, которая вносится в выводимый текст в таком виде, как она приведена. Литералы могут использоваться, например, как подзаголовки полей.
Литералы существуют трех типов:
условные литералы : определяют текст, который будет выведен только если соответствующее поле присутствует в записи. Если команда выбора соответствующего поля - это команда подполя (т. е. v24^a), то текст будет выведен только тогда, когда соответствующее подполе присутствует в записи. Если команда выбора поля определяет повторяющееся поле, то текст будет выведен только один раз, независимо от количества повторений поля. Условные литералы заключаются в двойные кавычки ("), " например, "Заголовок: ".
повторяющиеся литералы : как и условные литералы, они определяют текст, который должен быть выведен только тогда, когда соответствующее поле или подполе присутствует в записи. Однако, если поле повторяющееся, литерал будет распечатан для каждого повторения поля. Повторяющиеся литералы заключаются в вертикальные черты (|), например |Автор: |.
безусловные литералы : определяют текст, который будет выведен независимо от наличия полей. Безусловные литералы заключаются в одинарные кавычки ('), например 'Краткое содержание'. Поскольку безусловные литералы всегда выводятся как единый фрагмент текста (т. е. безусловные литералы не могут разбиваться на две строки), их длина не может превышать ширину строки, иначе они будут обрезаны. Чтобы вывести текст, превышающий ширину строки, нужно разбить его на два или более литералов. Можно также обеспечить любое требуемое смещение с помощью команды Сn.
Литерал не должен содержать разделитель литерала, например, безусловный литерал не может содержать одинарную кавычку (хотя может содержать двойные кавычки и/или вертикальную черту).
Условные и/или повторяющиеся литералы ассоциируются с полем или подполем своим размещением в формате: литералы, предшествующие селектору поля (называемые также префикс-литералами), будут выведены перед содержимым поля, в то время, как литералы, следующие за селектором поля (называемые также суффикс-литералами), будут выведены после содержимого поля.
Если за повторяющимся префикс-литералом непосредственно следует знак
'+' (например, |xxx|+), он будет выведен перед каждым, кроме первого, повторением поля.
Если повторяющемуся суффикс-литералу непосредственно предшествует знак
'+' (например, +|xxx|), он будет выведен после каждого, кроме последнего, повторения поля.
Повторяющиеся префикс-литералы и все суффикс-литералы форматируются так, как будто они физически являются частью содержимого ассоциируемых полей и, следовательно, подчиняются командам смещения, если они есть. Условные префикс-литералы не подчиняются команде смещения поля (однако, чтобы обеспечить смещение этих литералов, можно использовать команду Сn).
Данное поле может ассоциироваться с более, чем одним литералом. В этом случае различные литералы должны подчиняться следующим правилам и порядку:
Префикс-литералы .
1. Один или более условных префикс-литералов. За условным префикс-литералом может следовать другой условный префикс-литерал, команды вертикального и горизонтального размещения, команды режима, и/или esc-команды. (см. раздел 3.3.6 "Команда перехода (Escape)"). Все команды между первым условным префикс-литералом и ассоциируемым с ним селектором поля становятся условными и будут выполнены только при наличии поля, иначе они игнорируются.
2. Один и только один повторяющийся префикс-литерал. Если такой литерал есть, он должен непосредственно предшествовать ассоциируемому селектору поля.
Суффикс-литералы.
3. Один и только один повторяющийся суффикс-литерал. Если такой литерал есть, он должен следовать непосредственно за ассоциируемым селектором поля.
4. Один и только один условный суффикс-литерал. Если такой литерал есть, он должен следовать непосредственно за повторяющимся суффикс-литералом, или ассоциируемым селектором поля.
5. Суффикс-литералы не должны разделяться запятыми, и не должно быть запятой между селектором поля и первым суффикс-литералом, запятая обозначает конец суффикс-литералов, ассоциируемых с данным селектором поля.
Hулевые литералы (т. е. литералы длиной ноль, такие как "" или ||) разрешаются и могут быть использованы, например, как префикс-литералы, для обеспечения условного вертикального размещения или как суффикс-литералы, для временного подавления автоматической пунктуации, которую CDS/ISIS обеспечивает в режиме данных.
Литералы переводятся в заглавные буквы, если расположены после команды режима.
Примеры различных типов литералов приведены на рисунке 15.
Рисунок 15
Мнимый селектор поля реализует условный вывод литералов в зависимости от наличия или отсутствия данного поля или подполя без вывода содержимого ассоциируемого поля. Мнимый селектор поля кодируется следующим образом:
Dt или Dt^x или Nt или Nt^x,
где:
D или N- указывает, что это мнимый селектор поля. D указывает, что все ассоциируемые условные литералы должны выводиться только когда поле присутствует. N указывает, что они должны выводиться только при отсутствии поля.
t - метка поля, управляющего выводом литералов.
^x - код обычного разделителя подполя. Если он приведен, то это значит, что вывод литералов зависит от наличия или отсутствия определенного подполя (отметьте, однако, что отсутствие поля говорит и об отсутствии подполей в этом поле).
Мнимому селектору поля обычно предшествует по крайней мере один условный префикс-литерал (который может быть нулевым), за ним могут следовать один или более двух условных префикс-литералов, команды вертикального и горизонтального размещения, команды режима и/или Esc-последовательности. Мнимый селектор поля не может иметь суффикс-литералов.
Hесколько примеров этих команд приведены на рисунке 16.
Рисунок 16
Язык форматирования позволяет вычислять и/или сравнивать значения с помощью выражений. Выражения построены так, что при вычислении возвращают значения. Этим значением может быть строка сиволов (т. е. содержимое данного поля или литерал), в этом случае выражение называется строковым выражением; число, называется числовым выражением или им может быть значение истинности (истина или ложь), тогда выражение называется булевым (или логическим). CDS/ISIS также обеспечивает набор функций, которые, основываясь на аргументе, выполняют какие-то функции и возвращают значения. Функции, возвращающие число, называются числовыми функциями; функции, возращающие строку символов, называются строковыми; а те, что возвращают значение истинности, называются булевыми. Только строковые функции могут использоваться непосредственно как команды форматирования. Числовые выражения могут использоваться в булевых выражениях или как аргументы функций. Булевы выражения и булевы функции могут использоваться только в контексте IF команды.
Числовые выражения формируются из операндов, которые имеют числовое значение, и операторов, определяющих какие должны быть произведены вычисления.
В числовых выражениях можно использовать следующие операнды:
числовые константы : такие как 5, 18, 98,65;
числовые константы могут быть представлены в виде целых чисел, десятичных или в экспоненциальной нормальной форме, например, 1.5Е5 (т. е. значение 1,5 умножить на 10 в 5-ой степени, т. е. 150000);
числовыеяфунции: такие как val(v10) (функции описаны в главе "Числовые функции");
MFN : значение MFN записи;
числовые выражения: когда выражение используется как операнд, оно должно быть заключено в скобки, например, (val(v20)-5).
Допустимые операторы:
+ сложение (или унарная +);
- вычитание (или унарная -);
* умножение;
/ деление.
Как и в обычной алгебре при отсутствии скобок унарные операции выполняются первыми, а умножение и деление выполняются до сложения и вычитания. Два и более операторов одного уровня выполняются слева направо. Можно использовать скобки для изменения порядка вычисления: выражения, заключенные в скобки, выполняются первыми, и выражения большей глубины вложенности вычисляются перед выражениями меньшей глубины вложенности скобок.
Отметьте, что поскольку селекторы поля (т.е.v10 или v10^a) представляют строки текста, они не могут использоваться как операнды в числовых выражениях. Однако, может быть использована функция VAL для конвертирования содержимого поля или подполя в числовое значение.
Также числовое выражение не может выводиться на экран, а должно сначала конвертироваться в символьную строку с помощью функции F.
Нами приведены примеры числовых выражений (предполагается, что MFN=10, v1^a=10, v1^b=20 и v2=30):
CDS/ISIS версии IBM PC конвертирует все числа, используемые в вычислениях с плавающей точкой одинарной точности. Это обеспечивает точность - примерно 7 цифр с максимальным значением 1.701411Е38. В версии VAX используются числа с плавающей точкой двойной точности, что обеспечивает точность - 15 цифр.
Строковые выражения формируются из операндов, которые являются строками символов. Поскольку CDS/ISIS не обеспечивает явных строковых операторов, строковое выражение всегда состоит из одного операнда, которым может быть:
безусловный литерал: такой например, как некоторый текст
селектор поля: который может включать команду смещение/длина (т. е. v26^c*2.2);
строковая функция: такая, например, как S(v24,v25,v26) (описанная в разделе 3.3.2. "Строковые функции").
Булевые выражения используются для определения истинности или ложности множества из одного или более условий, и вычисления значения истинности. Операциями булевых выражений могут быть:
выражения отношенияя: сравнивают два значения и определяют, предшествует ли данное отношение (см. ниже), например, mfn<10;
булевые функциия: такая, например, как Р(v24), которая возвращает значение истины (см. раздел 3.3.3 "Булевые функции").
Выражение; отношения позволяет определять верно ли определенное отношение между двумя значениями. Общая форма выражения отношения:
выражение-1 оператор-отношения выражение-2
где:
Операторы отношения = () ( (= ) )= имеют свое обычное значение, когда применяются к числовым выражениям (в рамках ограничений точности числовых значений, определенных в разделе 3.2.6.1 "Числовые выражения"). Когда сравниваются строковые выражения, применяются следующие правила:
Оператор :"содержит" ищет строку символов (определенную выражением-2) в другой строке (определенную выражением-1). Если второй операнд оказывается где-либо в первом операнде, результатом будет истина. Этот оператор считает малые буквы равными соответствующим большим буквам. Например, результатом выражения:
v10 : `химик`
будет Истина только в том случае, если поле 10 содержит строку химик, в противном случае будет Ложь. Отметьте, что вторым операндом может быть произвольная строка символов, которая не обязательно является действительным словом. Так, в приведенном выше примере, результат будет истина не только когда поле 10 содержит слово " химик ", но и когда поле содержит такие слова, как " биохимик ", " фотохимик " и др.
Операнды булевых выражений могут объединяться с помощью следующих булевых операторов:
NOT этот оператор дает значение Истина, когда операнд имеет значение Ложь, и значение Ложь, когда операнд - Истина. Оператор NOT может использоваться только как унарный, т. е. он всегда применяется к булевому выражению, следующему за ним;
AND этот оператор дает значение Истина, когда оба операнда истинны. Если хотя бы один из операндов - Ложь, результатом является Ложь;
OR этот оператор выполняет включающую OR операцию. Результатом является Истина, когда один или оба операнда истинны, в противном случае результатом является Ложь.
При вычислении булевых выражений, при отсутствии скобок, CDS/ISIS сначала выполняет NOT операцию, затем AND операциии перед OR операциями. Набор из двух и более операторов одного уровня обрабатывается слева направо. Можно использовать скобки для изменения порядка вычисления: выражения, заключенные в скобки выполняются первыми, при наличии вложенных скобок первыми выполняются выражения, заключенные во внутренние скобки.
Примеры булевых выражений даны на рис. 17.
Рисунок 17
The UNESCO micro CDS/ISIS Software
Функция вычисляет значение (называемое значением функции или возращаемым значением), которое затем подставляется вместо функции при вычислении выражения.
Функции могут иметь один или более аргументов, которые должен определить пользователь; значения аргументов используются в вычислении значения функции. Так, значение функции зависит от значения определенных аргументов. Аргументы заключаются в скобки и разделяются запятыми.
Аргументы могут быть трех типов:
формат : формат CDS/ISIS, который может содержать любую разрешенную команду форматирования; исключение составляет функция REF (см. раздел 3.3.2.2 "REF (выражение, формат)"), в которой формат используется как аргумент, т. е. результирующий текст, полученный при обработке этого формата и переданный функции, а не формат сам по себе.
числовое выражение : когда числовое выражение является аргументом, оно вычисляется первым, и его значение передается функции.
селектор поля : селектором поля в качестве аргумента может быть как команда поля, так и подполя, которая не может содержать команду смещение/ длина.
Ниже описыватся допустимые функции и соответствующие им аргументы; функции классифицированы в соответствии с типом значения, которое они возвращают.
Функция VAL возвращает числовое значение своего аргумента. Аргумент формат - это формат CDS/ISIS, который может содержать любую возможную команду форматирования. CDS/ISIS обрабатывает аргумент, чтобы получить строку текста. Затем эта строка сканируется слева направо до тех пор, пока не найдется числовое значение (которое может быть в экспоненциальном представлении). Функция VAL возвращает это числовое значение, переведенное во внутреннее машинное представление, удобное для выполнения вычислений. Если не найдено никаких числовых значений, возвращается значение ноль. Если текст содержит более, чем одно числовое значение, возвращается только первое. Например (предполагая, что v1^a=10, v1^b=20, v2=30):
В последнем примере значение 0 (а не 1985), так как CDS/ISIS рассматривает минус между Июль и Август как начало отрицательного числового значения, а А от Август как его конец, поэтому выбранное значение получается просто '-` и результатом является 0. Поэтому важно более четко определить правила ввода данных для тех полей или подполей, которые будут использоваться для численных вычислений.
Функция RSUM возвращает сумму одного или более числовых значений. Текст, продуцированный аргументом, сканируется слева направо, как в функции VAL, и все выбранные числовые значения складываются. Полученная сумма является значением функции. Отдельные значения должны быть разделены одним или более нечисловыми символами, и это забота пользователя внести эти разделители через формат, являющийся аргументом. RSUM может ипользоваться для вычисления суммы всех числовых значений, содержащихся во всех повторениях данного повторяющегося поля. Например (предполагая, что поле 1 имеет четыре повторения, содержащих 1, 2, 3, и 4):
Функция RMIN возвращает минимальное значение из одного или нескольких числовых значений. Текст, продуцированный аргументом, сканируется слева направо, как для VAL функции, и извлекаются все числовые значения. Алгебраически самое малое из этих значений - значение функции. Отдельные значения должны быть разделены одним или более нечисловыми символами, и это забота пользователя внести эти символы через формат, данный в аргументе. RMIN может использоваться для вычисления минимального из числовых значений, содержащихся во всех повторениях повторяющегося поля. Например (предполагая, что поле 1 имеет четыре повторения, содержащих 10, 20, 30 и 40):
Функция RMAX возвращает максимальное значение из одного или нескольких числовых значений. Текст, продуцируемый аргументом, сканируется слева направо, как для VAL функции, и все числовые значения извлекаются. Алгебраически наибольшее из этих значений - значение функции. Отдельные значения должны быть разделены одним или более нечисловыми символами, и это забота пользователя внести эти символы через формат, данный в аргументе. RMAX может использоваться для вычисления максимального из числовых значений, содержащихся во всех повторениях повторяющегося поля. Например, поле 1 имеет четыре повторения, содержащих 10, 20, 30 и 40:
Функция RAVR возвращает среднее значение (в арифметическом смысле) из одного или нескольких числовых значений. Текст, продуцируемый аргументом, сканируется слева направо, как для функции VAL, и извлекаются все числовые значения. Затем вычисляется среднее значение - значение функции. Отдельные значения должны быть разделены одним или несколькими нечисловыми символами, и это забота пользователя - внести эти символы через формат, данный в аргументе. RAVR может использоваться для вычисления среднего из числовых значений, содержащихся во всех повторениях данного повторяющегося поля. Например, поле 1 имеет четыре повторения, содержащих 10, 20, 30 и 40:
Функция L использует текст, продуцируемый форматом, как поисковый термин для инвертированного файла и возвращает MFN первой ссылки (если она есть). Перед поиском в инвертированном файле термин автоматически переводится в большие буквы. Если термин не найден, значением функции является ноль. Функция L обычно используется вместе с REF функцией (см. раздел 3.3.2.2 "REF (выражение, формат)", где приведены примеры использования функции L).
Отметьте, что при обработке аргумента - формата используется текущий режим вывода данных (см. раздел 3.2.2. "Командный режим "). Это важно, поскольку в результате использования неверного режима можно не найти термин в инвертированном файле. Как правило, следует использовать тот же режим, который применяется в ТВП инвертированного файла.
Строковые функции могут использоваться как операнды строковых выражений и как команды форматирования. Когда они используются как команды, значение функции будет форматироваться так, как если бы оно было полем записи.
Функция F преобразует числовое значение из его внутреннего представления с плавающей точкой в символьную строку. Все три аргумента - числовые выражения. Первый аргумент, выраж-1, число, которое должно конвертироваться. Второй аргумент, выраж-2, - минимальная ширина выходной строки; и третий аргумент, выраж-3 - количество десятичных позиций. Второй и третий аргументы необязательны. Отметим, однако, что если присутствует выраж-3, то выраж-2 не может быть опущено. Выраж-2 определяет минимальную ширину, т. е. значением функции будет символьная строка длиной как минимум выраж-2 символов, и если конвертируемое числовое значение требует выраж-2 символов или меньше, оно будет выровнено по правой границе внутри этой ширины. Если количество символов, требуемое для представления значения выраж-1, больше данной ширины, CDS/ISIS использует добавочные позиции. В этом случае выходная строка будет длиннее, чем выраж-2 символов.
Выраж-3 определяет количество десятичных позиций, если оно опущено, результат будет в научном экспоненциальном представлении, и, если также опущено выраж-2, то по умолчанию используется 16 символов. Если аргументы присутствуют, результатом будет округленное представление с фиксированной точкой выраж-1 с выраж-3 цифрами после запятой. Если выраж-3 равно нулю, то выраж-1 округляется до ближайшего целого числа и на выходе будет целое число без десятичных знаков.
При преобразовании целых чисел и чисел с десятичными знаками, в том случае, когда целая часть числа слишком длинная чтобы быть представленной, выходная строка заменяется серией звездочек (*).
Функция F может быть использована для выравнивания колонки чисел по десятичной запятой путем выбора подходящей ширины.
Ниже приведены примеры функции F:
Функция REF позволяет извлечь данные из альтернативной записи файла документов. Первый аргумент - это числовое выражение, дающее MFN альтернативной записи, которая должна быть выбрана, а второй аргумент - это формат, который должет быть применен к этой записи. Если значение выражения не соответствует MFN существующей записи базы данных, то функция REF даст нулевую строку (т. е. ничего не будет выведено). Процесс, выполняемый функцией REF представлен на рис. 18, где предполагается, что текущая форматируемая запись - запись 1.
Рисунок 18
Как видно из рисунка, функция REF - очень мощное средство,поскольку позволяет объединить данные, которые хранятся в различных записях базы данных и заставляет их появиться перед пользователем как будто хранящиеся в одной записи. В этом первом примере записи 1 и 98 связываются спецификацией в поле 4 связанной записи 1 MFN, которая содержит названия страны на английском и французском языках, через формат можно извлечь любой из языков, определением релевантной метки связанной записи.
В некоторых случаях связывание записей через MFN может быть неудобным с точки зрения ввода данных. Кроме того, что любая ошибка в MFN связанной записи даст вывод неверных данных, может потребоваться много времени для определения правильного MFN, который надо использовать. В случае, изображенном на рис. 18, например, может оказаться, что исходный документ, с которого вводятся данные, уже содержит нормализованный код страны ("UK" в нашем случае). Для использования MFN, как связки с записью страны может потребоваться разьяснительный список или выяснение в базе данных, что MFN записи, соответствующей 'UK` - 98: было бы значительно проще ввести сразу "UK", а не 98. Это возможно, и можно получить такой же вывод, какой приведен на рис. 18, организацией базы данных таким образом, чтобы было удобно использовать функцию L (см. раздел 3.3.1.6 "L(формат)").
Функция L находит MFN соответствующий поисковому термину. Т. е. эту функцию можно использовать для преобразования символьной строки (такой как "UK" ) в MFN. Чтобы можно было использовать функцию L, нужно установить уникальное соответствие между символьной строкой и соответствующим ей MFN. Инвертированный файл обеспечивает такой механизм (см. раздел 1.3.3 "Инвертированный файл"). В нашем примере, было бы удобно инвертировать поле 10 записей 'страна` для установления уникального соответствия между кодом страны и соответствующим MFN (отметим, что понятие уникальности важно, т. к. функция L предполагает, что ключ, который она ищет, имеет одну и только одну ссылку. И это забота пользователя обеспечить уникальность этого соответствия использованием, если необходимо, префикса поисковоготермина, как указано в разделе 3.4.2 "ТВП для инвертированного файла". Рисунок 19 иллюстрирует этот метод.
CDS/ISIS не рассматривает природу соответствия между двумя записями. Она просто обеспечивает механизм связывания записей. При практическом применении пользователь обычно определяет смысл отношения через соответствующее применение языка форматирования и специальное физическое проектирование базы данных. Например, библиографическая запись должна быть связана с исходной и последующей записями, чтобы отразить различную природу этих сообщений. Отметим, что поскольку вторым аргументом; функции; REF является формат, эту функцию можно использовать рекурсивно для установления иерархических соотношений более высокого порядка, таких, например, какие требуются в тезаурусах.
Функция REF может использоваться в формате сколько угодно раз, не; превышая, однако, выходные ограничения (т. е. размеры рабочей области). Она ограничена 8000 символами. Отметим, что это ограничение выполнения,а не языка форматирования.
Рисунок 19
Функция S возвращает текст, полученный из аргумента. Как упоминалось ранее, CDS/ISIS не обеспечивает явных операций для строковых выражений. Функция S может быть использована для выполнения строковой конкатенации. Это особенно удобно в булевых выражениях, где гораздо эффективнее использовать такое имплицитное OR по сравнению с эксплицитным оператором OR. Например, следующие булевы выражения:
S(mdl,v10,v20,v30):'water`
v10: 'water` OR v20: 'water` OR v30: 'water`
эквивалентны (они оба истинны, если хоть одно из полей 10, 20 или 30 содержит строку 'water`), но первое будет выполнено гораздо быстрее второго.
В формате можно вызвать программы, написанные на Паскале CDS/ISIS и предназначенные для выполнения специальных функций по форматированию, требуемых в частных применениях, которые не могут быть решены с помощью языка форматирования. Эти программы называются пользовательскими точками подключения в формате. Поскольку пользовательские точки разработаны для удовлетворения специфических нужд, их описание не входит в описание языка форматирования. CDS/ISIS обеспечивает, однако, нормализованный интерфейс пользовательских точек подключения с языком форматирования.
С точки зрения языка форматирования пользовательские точки подключения являются строковыми функциями с аргументом - формат. Сначала обрабатывается аргумент и его результат передается функции. Пользовательские точки подключения возвращают символьную строку, с которой CDS/ISIS работает как с полем записи, которое нужно форматировать.
С точки зрения Паскаля, CDS/ISIS является пользовательской точкой подключения, объявленной с атрибутом [FORMAT] (см. руководство по Паскалю CDS/ISIS для уточнения подробностей интерфейса).
Перед внесением пользовательской точки подключения в формат, соответствующая этой точке программа должна быть успешно откомпилирована.
Пользовательская точка подключения включается в формат следующим образом:
& имя (формат)
где:
& - идентифицирует пользовательскую точку подключения;
имя - имя программы на Паскале CDS/ISIS, которая должна быть выполнена;
формат - аргумент.
Команда смещения (см. раздел 3.2.1.4 "Команда смещения") может употребляться с пользовательской точкой подключения. CDS/ISIS применяет ее к выходной строке. На рисунке 20 приведен пример пользовательской точки подключения в формате, которая просто возвращает аргумент, как значение функции.
Рисунок 20
Функция Р возвращает значение Истина, если форматируемая запись содержит по крайней мере одно повторение поля или подполя, указанного в аргументе. Например:
Функция А возвращает значение Истина, если форматируемая запись не содержит ни одного повторения поля или подполя, данного в аргументе.
Отметьте, что из-за отсутствия поля следует отсутствие всех подполей. Таким образом, если селектор поля специфицирует подполе, функция А возвращает значение Истина, если поле присутствует, а отсутствует только указанное подполе или отсутствует все поле. Например:
Команда IF позволяет составлять контекстно-смысловые форматы, т. е. форматы, способные варьировать вывод в зависимости от содержимого форматируемой записи.
Команда IF кодируется следующим образом:
IF условие THEN формат-1 ELSE формат-2 FI
где:
условие - булево выражение, определенное в разделе 3.2.6.3 "Булевы выражения":
формат-1 формат CDS/ISIS, который обрабатывается только и только в том случае, если значением булева выражения является Истина;
формат-2 формат CDS/ISIS, который обрабатывается только и только в том случае, если значением булевого выражения является ложь.
Предложение яELSE формат-2я необязятельно, и может быть опущено. Ключевые слова IF, THEN и FI обязательны всегда, хотя формат-1 может быть опущен, если присутствует предложение ELSE (т. е. если условие истинно, то ничего не будет выведено). Следовательно команда IF может принимать одну из следующих альтернативных форм:
IF условие THEN формат-1 FI
IF условие THEN ELSE формат-2 FI
Поскольку нет никаких ограничений на команды, которые можно употреблять в формате-1 и формате-2, IF команды могут быть вложены на любую желаемую глубину. Ключевое слово FI, в таком случае, должно закрывать каждую IF команду (можно рассматривать IF и FI как пару скобок). Например:
Команда IF особенно полезна для создания обобщенных форматов в интегрированных базах данных, которые содержат различные типы записей. В этом случае обычно надо иметь различающие метки для каждого типа записей (обычно есть поле, содержащее код, идентифицирующий тип записей). Так, проверяя тип записи с помощью IF команды, можно создать в одном формате специфическое форматирование каждого типа записей. Подробный пример для базы данных, содержащей записи институтов и исследователей, приведен на рисунке 21.
Рисунок 21
Повторяющаяся группа состоит из набора команд форматирования, заключенных в скобки. Смысл этих команд обычный, за исключением того, что с повторяющимися полями обращаются особым образом.
Чтобы понять концепцию повторяющейся группы, надо узнать, как CDS/ISIS обращается с повторяющимися полями. Если нет никаких указаний, CDS/ISIS рассматривает все повторения повторяющегося поля (в порядке, в котором они были введены) как единую строку текста.
Повторяющаяся группа изменяет порядок обращения CDS/ISIS с повторениями повторяющегося поля путем обработки одного повторения, а не всех повторений вместе. Этот процесс наглядно представлен на рисунке 22.
Когда CDS/ISIS обнаруживает скобку, открывающую повторяющуюся группу, происходит следующее:
Рисунок 22
Отметим, что все команды форматирования внутри повторяющейся группы обрабатывают одно повторение в каждый момент времени (как объяснялось выше), включая, следовательно, поля, на которые ссылаются из команды IF, выражений и функций, а также из строковых функций, используемых как команды.
Из приведенных выше объяснений следует, что безусловные литералы нельзя использовать в повторяющейся группе (если вы все же будете их использовать, то эти литералы будут распечатаны на один раз больше, чем нужно).
В большинстве случаев использование простых команд форматирования, таких как команда режима или повторяющиеся литералы, удобно для адекватного обращения с повторяющимися полями, как показано ниже:
Однако, есть случаи, когда нужно отформатировать повторяющиеся поля другим путем. Часто нужно, например, вывести каждое повторение на новой строке, что может быть сделано только с помощью повторяющейся группы:
В первом случае команда перехода на новую строку (/) выполнена япосле форматирования явсехя повторений поля 70, а во втором случае она выполнена после якаждогояповторения поля.
Пример на рис. 23 иллюстрирует обращение с повторяющимися полями, содержащими подполя (предполагается, что запись содержит два повторения поля 20, как указано). Здесь употребление повторяющейся группы помогает правильно вывести различные подполя якаждого яповторения повторяющегося поля в виде таблицы.
Рисунок 23
Если нужно вывести литерал перед данными, продуцируемыми повторяющейся группой, можно использовать безусловный или условный литерал. Отметим, однако, что условный литерал должен ассоциироваться с селектором поля (повторяющаяся группа не является селектором поля); для этой цели удобно использовать мнимый селектор поля (см. рисунок 24).
Для следующего примера повторяющегося поля предположим, что в записи личного дела поле 10 содержит предыдущие места работы человека, а поле 20 содержиит должности, которые он ранее занимал. В такой записи оба поля 10 и 20 будут повторяющимися, поскольку человек может сменить не одно место работы. Это тот случай, когда существует логическая взаимосвязь между двумя повторяющимися полями. Рисунок 24 показывает использование повторяющейся группы для вывода этих двух полей (а также иллюстрирует употребление мнимого селектора поля).
Рисунок 24
Повторяющиеся группы не могут быть вложенными (т. е. повторяющаяся группа не может содержать другую повторяющуюся группу), за исключением внутренней группы, содержащейся в формате аргумента функции REF. Так, например, разрешен следующий формат:
(v10,ref(val(v20),v10,(v20,v30)))
в то время, как не разрешен ниже приводимый формат, в результате чего появится сообщение об ошибке:
(v10(v20,v30))
Отметим, что использование повторяющейся группы обязательно, когда:
Также нужно учитывать, необходимо ли употребление повторяющейся группы, когда повторяющееся поле используется в булевом выражении команды IF.
В формат, используемый для печати, можно вносить escape последовательности для активации или дезактивации определенных функций принтера (такие как: жирный шрифт или итальянская печать), конечно, если ваш принтер обеспечивает поддержку таких escape последовательностей. Специфические escape последовательности, поддержку которых обеспечивает ваш принтер, описаны в Руководстве пользователя принтера, поставляемом вместе с принтером его производителем.
Escape команда кодируется следующим образом:
! /еее/
где:
! - идентификатор escape последовательности;
/ - разделитель escape последовательности. Им может быть любой символ, не встречающийся в еее;
еее - escape последовательность, которая должна быть передана на принтер. (CDS/ISIS обычно передает ESC eee).
Например, на большинстве принтеров следующий формат приведет к печати поля 24 жирным шрифтом и поля 44 - итальянским (показано использование различных разделителей escape последовательностей):
!!Е!,v24,!;F;,v70+|; |,!{4},v44,![5]
Ограничения реализации. Если при выводе на печать вы используете escape команды для выбора различных типов шрифтов (жирный, итальянский и т. д.), вы не можете, в общем случае, осуществлять многоколонный вывод, за исключением того случая, когда текст, к которому применяется escape последовательность, полностью содержится в одной строке и эффект этой escape последовательности заканчивается перед выводом следующей строки. Более того, нельзя использовать печать с пропорциональным внесением пробелов одновременно с многоколонной печатью. Если вы это будете использовать, то левая граница второй и последующих колонок не будет как следует выровнена.
Замечания для версии VAX и WANG PC: Если вы используете VAX или WANG PC версии, вы можете использовать escape команды в форматах вывода на экран для выделения полей специальным изображением, таким как подсвечивание, подчеркивание, обратная раскраска и т. д. Версия IBM PC не поддерживает escape команды для вывода на экран.
Во время интерпретации и обработки формата CDS/ISIS выполняет синтаксический анализ формата для установления его соответствия правилам языка форматирования. Если CDS/ISIS обнаруживает ошибку, он прекращает форматирование и выдает сообщение *** Ошибка в формате n *** (где n - код ошибки). При выводе данных на экран или принтер, все данные, сформатированные при обнаружении ошибки, выводятся перед сообщением об ошибке. Этот вывод данных вместе с сообщением об ошибке поможет вам отыскать ошибку в формате.
Возможные коды ошибок
1. Обнаружен конец формата в конце обработки повторяющейся группы. Возможно пропущена закрывающая скобка повторяющейся группы.
2. Вложенность повторяющейся группы (т. е. одна повторяющаяся группа внутри другой повторяющейся группы).
8. Команда IF без THEN.
19. Непарная (
20. Непарная ). Также может быть неразрешенный операнд в выражении.
26. Два операнда одной операции различных типов (т. е. попытка сложить строковый операнд с числом).
28. Первый аргумент функции REF - нечисловое выражение.
51. Слишком много литералов и/или условных команд, ассоциированных с селектором поля.
53. IF команда не завершена с помощью FI.
54. Знак + вне контекста: CDS/ISIS ожидает повторяющийся литерал за знаком +.
55. Непарная FI.
56. Переполнение рабочей области: ваш формат производит слишком большую выдачу, с которой CDS/ISIS не может справиться. Рабочая область ограничена 8000 символами.
58. Один или более аргументов функции F - нечисловые выражения.
60. Нестроковая функция используется как команда (только строковые функции могут быть использованы как команды).
61. Аргумент функции А или Р - не селектор поля.
99. Неизвестная команда (т. е. арифметические ошибки в имени функции или команды); может также быть пропуск закрывающего разделителя литерала.
101. Переполнение стека (возможно из-за слишком длинного выражения).
102. Недогрузка стека (может быть из-за непарной ). Если формат верен, эта ошибка указывает на проблемы программного обеспечения CDS/ISIS).
The UNESCO micro CDS/ISIS Software
Таблица выбора полей (ТВП) определяет критерии выбора одного или нескольких элементов из записей файла документов. В зависимости от программы, в которой используется ТВП, эти элементы могут затем использоваться для создания инвертированного файла для записи, из которой они были извлечены, для сортировки записей в желаемой последовательности перед выдачей отчетов на принтер или для переформатирования записей во время импортно-экспортных операций.
Элемент, обычно, определяется как фрагмент результирующей записи в определенном процессе. Хотя в большинстве случаев элементами в действительности являются элементы данных, т. е. поле или подполе, в других случаях это могут быть слова, фразы или другие фрагменты данных, которые имеют частный смысл для специфического применения.
Таблицы ТВП создаются или модифицируются средствами программы ISISDEF используя редактор строки системы CDS/ISIS (см. раздел 14 "Строковый редактор"). Пример ТВП, выдаваемой на экран редактором строк, показан на рис. 25.
Рис. 25
ТВП состоит из одной или более строк, каждая из которых определяется тремя параметрами :
Всякий раз, когда требуется выбрать элемент данных, используя ТВП, система прочтет соответствующие записи файла документов и выполнит для каждой записи и для каждого элемента ТВП следующие действия :
Процесс, описанный выше, является чисто механическим и выполняется точно так как описан. Он не передает информацию от одного шага к другому, а только данные о его обработке, хотя все шаги объединены в достижении желаемого результата. Например, тот факт, что определенное поле было выбрано на шаге1 неизвестно шагу 2 : шаг 1 используется языком форматирования для формирования строки символов и передается на шаг 2. Шаг2 обрабатывает строку символов в соответствии с указанной техникой индексирования. Техника индексирования определяется как обработка строки символов, но не записей или полей. Это является следствием общего назначения ТВП, которая может использоватся для таких различных целей, как определение содержимого инвертированного файла или спецификации требований по сортировке при печати, которые могут выглядеть, с первого взгляда, полностью несвязанными.
Для большинства примеров, можно воспринимать ТВП, как средство, позволяющее вызвать элементы данных, требуемые для выполнения определенных задач.
Три параметра строки ТВП описываются ниже в порядке их использования (при редактировании ТВП средствами редактора строки, они вводятся в определенном порядке).
Формат выбора данных кодируется используя средства языка форматирования описанного в разделе 8.3.5 "Формат печати". Так как данные, создаваемые этим форматом, не являются средством вывода на экран, а обрабатываются впоследствии, CDS/ISIS не ограничивает ширину строки каким-то определенным значением и следовательно данные никогда не будут разорваны на несколько строк. Понятие строк, однако, может быть релевантно определенной технике индексирования, выполняемой процедурой вывода по формату. В этом случае CDS/ISIS гарантирует, что строки будут создаваться только в ответ на команды новой строки, которые указываются в формате.
В связи с этим, большинство команд форматирования, такие как "С", смещение или escape - последовательность, будут обычно не связаны в формате выбора данных и могут в некоторых случаях выдывать непредсказуемые результаты. Поэтому их следует избегать, если нет особой необходимости.
С другой стороны режим (см. раздел 3.2.2 "Командный режим"), выбранный для ввода определенных полей, может быть средством для корректировки функционирования определенной техники индексирования : некоторые методы индексирования требуют явной спецификации режима (указывается в каждой технике индексирования, обсуждаемой ниже). Пользователь обязан указать соответствующие команды режима в формате выбора данных, если необходимо.
Заметим также, что требование перевода в заглавные буквы, может вызвать воздействие других дальнейших процессов, применяемых для выбора данных посредством ТВП. Как правило, не требуйте перевод в заглавные буквы (используйте режимы mpl, mhl, mdl чаще, чем mpu mhu mdu) до тех пор, пока вы не будете иметь каких-либо нежелательных эффектов. CDS/ISIS будет автоматически использовать перевод на режим заглавных букв при необходимости. Например, все элементы, сгенерированные посредством ТВП, будут переведены в заглавные буквы перед сохранением в словаре поисковых терминов, даже если в ТВП они были введены прописными буквами.
Техника индексирования указывает определенную обработку, которая будет выполнена с данными, выбранными по формату, в порядке указания элементов при создании ТВП. Существует пять методов индексирования. Каждому из них присваивается числовой код от 0 до 4, как объясняется ниже.
Создает элемент из каждой строки, извлеченной в соответствии с форматом. Данная техника обычно используется для индексирования целых полей или подполей. Заметим, что CDS/ISIS будет создавать элементы из строк, но не из полей. Это является следствием того, что CDS/ISIS воспринимает вывод по формату как строку символов, где поля не длиннее идентификатора. Поэтому, пользователь должен быть особо внимательным при вводе данных в формат, особенно при индексировании повторяющихся полей и/или более, чем одного поля. Другими словами, при использовании данной техники формат выбора данных должен выводить одну строку для каждого индексируемого элемента.
Создает элемент из каждого подполя или строки, выбранных по формату. Так как CDS/ISIS будет искать в выходном формате коды разделителей полей, для обеспечения правильной работы этой техники в формате должен быть использован проверочный режим (если режим не задан, то он используется по умолчанию), так как только в этом режиме сохраняются коды разделителей подполей при печати (необходимо помнить, что режимы заголовка и данных заменяют разделители подполей символами пунктуации). Заметим, что техника индексирования 1 в действительности сокращает использование техники индексирования 0. Пример использования этой техники приведен на рис. 26, который также показывает эффект использования режима данных.
Создает элемент из каждого термина или фразы, заключенные в угловые скобки < > . Любой текст вне скобок не индексируется. Обратите внимание, что данный метод требует проверочного режима, т. к. другие режимы удаляют скобки.
Пример:
Mission report descraibing a in at East African
даст следующие элементы при использовании данной техники:
< university course >
< documentation training >
< library school >
Выполняет те же операции, что и техника индексирования 2, за исключением того, что термины или фразы ограничиваются двумя косыми чертами (/.../). Например: mission report describing a / university course / in / document training / at an East African
/ library school / даст следующие элементы при использовании данной техники индексирования:
/ university course /
/ documentation training /
/ library school /
Создает элемент из каждого слова в тексте, выбираемого по формату. Словом является любая последовательность алфавитных символов.
При использовании этой техники, можно предотвратить индексирование некоторых незначащих слов, определив их в специальном файле, называемом файлом стоп-слов (см. раздел 17.3 "Создание файла стоп-слов", где описываются детали создания файла стоп-слов).
Обратите внимание, что при использовании данной техники для индексирования целого поля, содержащего разделители подполей, необходимо указать режимы заглавия или данных (MHL или MDL) в соответствующих форматах выбора данных, потому что замена разделителей подполя будет происходить перед индексированием и коды буквенных разделителей подполей будут считаться частью слова. Целесообразно использовать режимы заголовка и данных для индексирования полей, содержащих средства для изменения порядка сортировки,потому что только форма вывода поля на экран является индексируемой, а любые данные, требуемые для сортировки поля, игнорируются.
Идентификатор поля есть число (в пределах 1 - 32767), которое назначается каждому элементу, создаваемому на шаге индексирования. Значение идентификатора поля зависит от назначения использования ТВП, что объяснено ниже.
ТВП для инвертированного файла:
идентификатор поля предназначен для использования при поиске.
ТВП для сортировки:
идентификатор поля - это метка поля, которая используется при применении формата заголовка (см. раздел 8.3.4 "Формат заголовка").
ТВП для переформатирования:
идентификатор поля - это ISO метка поля, назначаемая для экс- порта поля (см. раздел 12.2.4.1 "Реорганизация ТВП") или CDS/ISIS метка, назначаемая для импорта поля.
Можно найти дополнительную информацию в ТВП, используемую для специального назначения см. раздел 8.5 "Системные рабочие листы для сортировки xYSRT", раздел 12.2 "Рабочий лист экспорта xYISI" и раздел 12.3 "Рабочий лист импорта xYISO".
Как указывалось раньше, одна ТВП для кажой базы данных определяет содержимое соответствующего инвертированного файла. Элементы данных, создаваемые по этой ТВП, однажды запомненные в инвертированном файле, составляют словарь поисковых терминов для данной базы данных. Одного словаря, однако, недостаточно, чтобы обеспечить механизм поиска, т. е. каждый термин должен быть связан со всеми записями базы данных, в которых он имеется. Таким образом, для каждого поискового термина в словаре CDS/ISIS определяет список "регистраций", обеспечивающий такую связь. Каждый термин имеет столько регистраций, сколько раз он встречается в базе данных.
Более того, чтобы обеспечить такие сложные средства языка поиска, как операторы близости, каждая "регистрация" содержит не только МFN записи, но и дополнительную информацию о расположении термина в записи, из которой он был выбран.
Регистрация имеет четыре компоненты:
Например, термин IT может быть либо местоимением (в таком случае он будет менее используемым при поиске), либо кодом страны ITALY. Он может также соответствовать цифровым терминам, таким как 34, значение которого может быть непонятным при его выборе из контекста.
Если поле, создаваемое такими терминами, индексируется с помощью техники 0, можно добавить смысл, используя префикс-литерал для указания метки, которая будет затем идентифицировать определенное использование термина. Например, когда индексируется поле, содержащее код страны, т. е. v10, можно использовать следующий формат: "КС = " v10 (правильнее чем v10), потому что код страны IT будет инвертирован как КС = IT (правильнее чем только IT ). Аналогично, если поле 20 содержит номер проекта, можно использовать формат "Проект", v20, для того чтобы потом можно осуществлять поиск Проект34 ( вернее, чем только 34).
На рис. 27 показана обработка ТВП данной на рис. 25, применяемой к записи, показанной на рис. 6. Рис. 28 показывает полную "регистрацию", назначаемую каждому элементу перед сохранением в инвертированном файле. На рис. 29 показаны элементы и соответствующие "регистрации", которые будут инвертироваться при использовании файла стоп-слов ( см. раздел 17.3 "Создание файла стоп-слов"). Необходимо отметить, что хотя стоп-слова не выводятся на экран, они учитываются в числовой последовательности терминов.
В этой главе описывается метод проверки ТВП, которая определяет содержимое инвертированного файла. Здесь прослеживаются все шаги, начиная с первого момента создания ТВП. Кроме того, дается возможность лучше понять функционирование ТВП. По мере приобретения опыта, появится возможность пропускать большинство этих шагов. Однако, желательно делать некоторые предварительные проверки перед полным инвертированием базы данных, особенно, если эта база большая.
1. Введите несколько записей в базу данных. Они должны быть подобраны таким образом, чтобы отражать все возможные варианты действительного содержания базы данных. Если возможно, используйте реальные данные. В этом случае появится возможность проверить существующий рабочий лист и посмотреть, достаточно ли правильно он создан для использования различных типов записей.
2. Имея под рукой распечатку ТВП, можно проверить каждый формат выбора данных. Используя средства программы ISISRET, выполните следующие действия:
а) выберите опцию F и введите формат выбора данных ТВП;
в) выберите опцию В и посмотрите полученный вывод по формату;
с) мысленно примените используемую технику индексирования к полученному выводу на экран и уточните предполагаемый результат, в частности проверка сводится к следующему:
* если вы применяете технику индексирования 0 к повторяющемуся полю, находится ли каждое значение поля на отдельной строке?
* если вы применяете технику 4 к повторяющемуся полю, указан ли знак % определяющий каждое значение поля (если нет, вы будете не в состоянии использовать (F) оператор поиска, потому что CDS/ISIS будет назначать один и тот же номер значения каждому слову и обратится ко всем значениям, как к единому полю);
* если вы применяете технику 2, ограничен ли каждый термин на экране угловыми скобками? (если нет, убедитесь, что ваш формат не потребует никакого другого режима вывода на печать, кроме проверочного режима, т. к. угловые скобки выводятся на экран только в проверочном режиме);
* если вы применяете технику 1, указаны ли на экране разделители подполей? (если нет, убедитесь, что использован проверочный режим);
d) если вы предполагаете какие-то ошибки в формате, повторите шаги (а) - (с), сделав необходимые изменения в формате;
е) повторяЙте шаги (а) - (d) для каждой строки ТВП до тех пор, пока полностью не убедитесь в том, что форматы являются правильными. Если вы изменили какой-то из форматов, проверьте все изменения, которые вы сделали или лучше распечатайте содержимое экрана на бумагу.
3. Если необходимо, выберите программу ISISDEF и модифицируйте форматы в существующей ТВП согласно замечаний, полученных на шаге 2 (е).
4. Затем выберите программу ISISINV, укажите опцию G из меню xXG1 и установите ограничения МFN для инвертирования только нескольких записей.
5. Когда связи файлов созданы, выйдите из программы ISIS и напечатайте содержимое файлов хххххх. LN1 xxxxxx. LN2 (где хххххх - имя базы данных). Эти файлы содержат все поисковые термины, которые были созданы для каждой записи: являются ли они правильными? Если нет, значит существует какая-то ошибка в вашей TBП. Повторите шаги 1 - 5 до получения необходимого результата.
Как упоминалось выше, по мере совершенствования знаний языка форматирования, вы можете пропустить шаги 4 и 5 перед попыткой полного инвертирования новой базы данных.
Хотя программа ISISDEF позволяет модифицировать ТВП после ее создания, необходимо помнить, что некоторые изменения ТВП для инвертированного файла потребуют последующего переинвертирования базы данных, т. к. инвертированный файл, созданный по старой ТВП, не будет больше соответствовать элементам, созданным с помощью измененной ТВП.
В основном переинвертирование требуется в том случае, когда нужно выполнить одно или более следующих изменений:
яизменить технику индексированияя: сгенерированные элементы будут полностью отличаться, если две различные техники индексирования применяются к одинаковым данным;
ядобавить или удалить строки в ТВПя: удаление строки в ТВП без перегенерирования инвертированного файла оставляет в словаре термины, которые были сгенерированы в нем и могут быть найдены при поиске; добавление строки без перегенерирования инвертированного файла не будет вызывать доступ к существующим записям при поиске по новой строке ТВП. Заметим, что добавление нового элемента, соответствующего полю, которое ранее не существовало, не требует переинвертирования;
яизменить формат выбора данныхя: элементы, индексируемые по новому формату будут отличаться от сгенерированных по старому формату;
яизменить идентификатор поляя: хотя термины словаря будут оставаться теми же, идентификатор поля, запомненный в регистрациях этих терминов при создании инвертированного файла будет отличаться.
Рис. 27
Рис. 28
Рис. 29
The UNESCO micro CDS/ISIS Software
Рис. 30
Ввод данных осуществляется через рабочие листы, которые предварительно создаются средствами редактора рабочих листов. Рабочий лист представляет собой печатную форму, которая выводится на экран с выделенным пространством, необходимым для заполнения. Ввод информации предполагает использование клавиатуры аналогичной печатанию на пишущей машинке. Как упоминалось раньше, CDS/ISIS использует два типа рабочих листов: рабочий лист для вода данных, используемый для ввода данных, которые запоминаются в файле документов, и системный рабочий лист, который используется для ввода параметров, требуемых для выполнения специальных задач, таких как управление печатью. Оба типа рабочих листов заполняются одинаковым способом. Одно различие состоит в том, что системный рабочий лист может иметь только одну страницу, в то время как рабочий лист для ввода данных может располагаться на нескольких страницах.
Пример рабочего листа по вводу данных показан на рис. 30. Он состоит из нескольких полей, каждое из которых имеет метку, определяющую смысл данных, которые будут вводиться, например "Заглавие"
Заметим, что когда рабочий лист выводится на экран, нижние 3 строки экрана резервируются для вывода сообщений. Это пространство называется областью сообщений, тогда как первые 21 строки экрана называются областью данных.
Каждое поле рабочего листа вводится или модифицируется средствами редактора поля. Дополнительно, CDS/ISIS обеспечивает все возможности редактирования экрана, такие как передвижение от одного поля к другому на одной странице или переход назад и вперед между страницами.
Следующие параграфы описывают технику ввода данных в деталях. Хотя описание касается создания и редактирования записей, это также относится к вводу и редактированию данных в системных рабочих листах.
Создание новой записи осуществляется выбором опции N в меню xXE1 (программа ISISENT). CDS/ISIS выводит на экран отобранный рабочий лист, куда необходимо затем ввести данные и устанавливает курсор на начало первого поля на экране.
Нижняя строка указывает номер записи файла документов (MFN), которая создается, и наличие следующих доступных страниц (см. рис. 30).
Для ввода поля необходимо просто печатать соответствующие данные и заканчивать ввод, используя клавишу (CR). CDS/ISIS затем установит курсор на начало следующего поля. Ввод поля контролируется редактором поля системы CDS/ISIS (см. раздел 13 "Редактор поля"), с которым необходимо ознакомиться перед началом создания и/или модификации записей в базе данных. Для того, чтобы оставить поле пустым, нажмите (CR).
Когда рабочий лист выводится на экран, одно или более полей могут уже содержать данные, которые были определены администратором базы данных или вами, используя опцию "D" в меню xXE1 (см. раздел 6.1 "D - определение значений по умолчанию").
В этом случае можно оставить эти значения как есть, просто нажав (CR), или удалить их, нажав функциональную клавишу (F2) или заменить - напечатав новое. Заметим, что удаление или модификация значения по умолчанию будет действовать только в текущей записи, первоначальное значение будет сохраняться для всех последующих создаваемых записей. Для того чтобы удалить или изменить эти значения для нескольких записей, используется опция "D" меню xXE1. Когда курсор устанавливается на данном поле, можно использовать следующие клавиши для выполнения указанных действий :
CR - переход к следующему полю;
TAB - переход к предыдущему полю. Можно использовать эту клавишу для ввода данных в поле, которое случайно осталось пустым или несформированным.
F2 - удаление выведенного на экран значения по умолчанию (на пустое поле не оказывает воздействия);
F1 - вывод на экран HELP - сообщения, определенного для поля во время создания рабочего листа. Если HELP - сообщение не было создано для поля, то CDS/ISIS выведет на экран тип поля (цифровое, алфавитное и др.)
Когда все поля сформированы, CDS/ISIS автоматически переходит в режим редактирования записи и пользователь получает возможность модифицировать только что созданные записи, если в этом есть необходимость. Редактор записей описывается ниже.
Если рабочий лист состоит из нескольких страниц, процесс описанный выше, обычно повторяется для каждой страницы. Допускается, однако, прерывать процесс при необходимости в любое время.
Как только запись выбрана для редактирования (опция "F" или "R" в меню xXE1 ), CDS/ISIS выводит запись на экран, используя текущий рабочий лист и предлагает указать действия, которые необходимо выполнить. Редактирование записи можно также осуществить после формирования каждой записи рабочего листа.
Следующая подсказка появляется в нижней части экрана (заметим, что подсказка 103/104 выдается при использовании рабочего листа по вводу данных, в то время как подсказка 105 - при использовании системного рабочего листа).
Подсказка 103/104 :
CR - следующая страница;
В - предыдущая страница;
М - модифицировать;
Х - выход;
С - отменить;
R - восстановление;
Т - закончить;
D - удалить;
N - новая запись.
Подсказка 105:
CR -следующая страница С - отменить
М - модификцировать,
Х - выход
Значение каждой функции объясняется ниже:
CR - листание вперед, т. е. вывод на экран следующей страницы рабочего листа (заметим, что если это последняя страница рабочего листа, то CR эквивалентно Х).
В - листание назад, т. е. вывод на экран предыдущей страницы рабочего листа.
С - оставляет запись неизмененной (все изменения, которые могли быть сделаны в записи - игнорируются).
D - удаление записи.
М - редактирование страницы.
N - запоминает запись в файле документов (аналогично Х) и затем создает новую запись. Эта опция позволяет также создавать записи последовательно, без возвращения в меню ввода данных между записями. Она также позволяет переключаться из режима редактирования записей в режим создания записей.
R - восстанавливает экран (это может быть необходимо, если ваш терминал является системной консолью, в этом случае операционная система может выводить на экран сообщения, частично заполняющие рабочий лист).
Т - оставляет запись неизмененной и прерывает действие операторов исправления. Если никаких исправлений не было сделано, то эта опция действует также как и "С".
Х - запоминает запись в файле документов.
Опции "С", "X" и "D" прекращают обработку записи так как это описано выше и передают управление меню xXE1 (если вы редактировали единственную запись), или продолжают процесс исправления для следующей записи, если она есть (если вы находились в режиме редактирования некоторой последовательности записей).
Опция "Т" является эквивалентной опции "С" относительно текущей записи, кроме того дополнительно прерывает последовательность и выводит на экран меню по вводу данных.
Если выбирается опция "М", CDS/ISIS переходит в режим редактирования и устанавливает курсор на первом поле рабочего листа выведенного на экран. Затем можно добавить данные в поле и/или модифицировать или удалить их содержимое (см. раздел "Редактор поля"). Когда курсор устанавливается на данном поле, можно использовать следующие функциональные клавиши для выполнения указанных действий:
CR - переход к следующему полю;
TAB - переход к предыдущему полю;
F1 - вывод на экран HELP - сообщения, определенного для поля при создании рабочего листа.
HELP - сообщение обычно содержит специальное руководство для правильного ввода поля. Если специальное HELP - сообщение не определено для поля, CDS/ISIS выведет на экран тип поля (цифровое, алфавитное и т. д.)
F2 - удаляет содержимое поля.
3.5.3. Удаление записи.
Можно удалить запись, ответив "D" на подсказку 103/104 (см. выше). Заметим однако, что запись удаляется логически, но не физически. Другими словами, CDS/ISIS только помечает запись для ее дальнейшего физического удаления, тем не менее, такую запись нельзя будет в дальнейшем найти или выдать на дисплей. Записи, помеченные для удаления, физически удаляются (т. е. полностью разрушаются) только при реорганизации файла документов. До наступления этого момента, существует возможность восстановить логически удаленную запись, т. е. удалить пометку на удаление, что объяснено ниже.
Если выбирается удаленная запись на редактирование (ипользуя опции "Е" или "R" меню хХЕ1, CDS/ISIS выдаст информацию о наличии этого состояния следующей подсказкой:
Подсказка 26 : Запись удалена. Введите один из следующих кодов: R - восстановить, N - создать новую запись, CR - оставить удаленной.
Ответ может быть следующий :
CR - оставить запись удаленной;
N- заменить удаленную запись на новую.
В данном случае CDS/ISIS будет вести себя так, как будто затребовано создание новой записи (см. раздел 3.5.1 "Создание новых записей"), эта новая запись будет иметь тот же MFN, что и удаленная запись, которая заменяется;
R - повторно активизировать запись.
В этом случае CDS/ISIS уничтожит метку удаления и выдаст на экран запись в режиме редактирования (см. раздел 3.5.2 "Редактирование записи"). Все данные, которые находились в записи в момент ее удаления, появятся на экране в рабочем листе. Заметим, что это имеет место только для логически удаленных записей. Если запись является физически удаленной, то ответ "R" эквивалентен ответу "N".
Ниже приводятся основные правила, которые должны быть соблюдены при вводе данных. Если создается специальное руководство для специфического применения, можно включить эти разделы.
Как правило, печатайте данные, как будто используете пишущую машинку. Помните, однако, что вы используете редактор поля CDS/ISIS, который предлагает специальные возможности для корректироваки данных, задействуя функциональные клавиши. Все они полностью описываются в разделе 13 "Редактор поля".
Если пространство, выделенное на экране для ввода данных, больше, чем одна строка, печатайте CR или пробелы в конце каждой строки, CDS/ISIS будет автоматически переходить на следующую строку. Несмотря на то, что слова не будут разделяться по правилам грамматики, это не существенно, когда в дальнейшем поле будет выводиться на экран или на принтер, CDS/ISIS обеспечит вывод текста таким образом, что разделяться будут только строки.
При вводе полей, содержащих подполя, необходимо указать разделитель подполя впереди каждого значения подполя. Разделитель подполя - это двухсимольный код предшествующий и указывающий переменную длину подполя внутри поля. Он состоит из символа "^" и следующего за ним буквенного или цифрового символа, например ^а. Если код подполя является алфавитным, его можно ввести на верхнем или на нижнем регистре. CDS/ISIS не воспринимает разницы между ^a или ^A. Поэтому, можно использовать наиболее удобную форму.
Не оставляйте пробелов и не вставляйте знаки препинания ни перед, ни после разделителя подполя, если нет специального указания сделать это.
Пример поля с тремя подполями :
^aUNESCO^bParis^c1985
Введение пробелов или знаков препинания может вызвать неправильный вывод поля на печать.
Если вводимое поле является повторяющимся и необходимо ввести более одного значения, введите все значения один за другим, разделив каждое значение знаком процента (%). Нет необходимости вводить знак % после последнего повторителя поля. Знак % является зарезервированным символом системы. Когда поле вызывается на редактирование, CDS/ISIS будет автоматически устанавливать знак % для каждого значения повторяющегося поля, где это требуется. Можно, если необходимо, вставить новое значение между существующими значениями или использовать функции редактора поля "вырезание" или "наклеивание" для изменения порядка значений.
Нельзя вводить пробелы перед и после знака %. Если сделать это, пробелы будут восприняты как часть поля.
Пример поля "автор", содержащего два имени:
BROWN.J.%Jonson.Archibald
Когда CDS/ISIS устанавливает курсор на поле типа шаблон, то на экран выдается шаблон поля (при условии, что поле не имеет значения по умолчанию) для указания того, что можно вводить в каждую позицию поля. Сообщение:
"Введите поле согласно указанному шаблону" также появится в нижней части экрана. Шаблон - это посимвольное описание содержимого поля, который может быть следующим:
Х - позиция может содержать любой алфавитно-цифровой символ;
А - позиция должна содержать алфавитный символ;
9 - позиция должна содержать цифру;
другой символ - позиция должна содержать указанный символ.
Пример шаблона с некоторыми значениями:
CDS/ISIS проверяет правильность каждого вводимого поля на соответствие типу поля, определенному в ТОП базы данных.
Если вводимый символ не соответствует заданному типу поля, CDS/ISIS выдает сообщение об ошибке и повторно устанавливает курсор на начало поля. Необходимо сделать исправления перед повторным вводом поля.
Необходимо иметь в виду, что CDS/ISIS автоматически не обновляет инвертированный файл при каждом добавлении, модификации или удалении записи. Это необходимо помнить, т. к. пока инвертированный файл не обновлен, могут возникнуть следующие ситуации:
Тем не менее, CDS/ISIS хранит в файле документов всю информацию, требуемую для обновления инвертированного файла и его можно выполнить в любое время. Эта операция требует затрат времени, зависящих от количества обновляемых записей, используемого компьютера и среднего количества поисковых терминов, генерируемых для каждой записи.
После нескольких экспериментов с данной базой данных, можно установить примерное время, требуемое для обновления записи и, если это время вас удовлетворяет, рекомендуется выполнять обновление инвертированного файла после каждого сеанса ввода данных (или при работе программы, как объясняется ниже). Исходя из этих соображений, можно отложить обновление инвертированного файла на более удобное время (на конец дня, недели и т. д.). Для выполнения обновления инвертированного файла вызывается программа ISISINV через главное меню системы xXISI (см. раздел 5.1 "Меню xXISI"), затем опция "U" в меню xXG1 (см. раздел 9.1 "U - обновление инвертированного файла").
Заметим также, что каждый раз при выходе из программы ISIS и смены базы данных, CDS/ISIS проверит сначала, были ли сделаны какие-то изменения в текущей базе данных. Если да, система выведет на экран общее количество сделанных изменений (укажет, сколько записей было добавлено, модифицировано или удалено), затем предложит обновить инвертированный файл, выдав на экран сообщение :
Подсказка 267 : Хотите обновить инвертированный файл
(Y/N)?
Если последует ответ "Y", CDS/ISIS начнет обновление инвертированного файла (любой другой ответ отложит обновление).
Во время обновления инвертированного файла, CDS/ISIS может обнаружить какие-то отклонения либо в файле документов, либо в инвертированном файле. Обычно это не происходит, т. к. инвертированный файл является полным отражением файла документов. Но если отклонения все же обнаружены, (они будут отражены на экране соответствующим сообщением) необходимо будет сделать требуемые исправления как только появится возможность, т. к. при наличии отклонений файл документов и инвертированный файл будут несинхронизированны.
Следующие сообщения указывают на наличие ненормальных условий :
391 Внимание! Ссылка не найдена. Нельзя удалить.
392 Внимание! Повторная связь.
393 Системная ошибка. В файле документов ошибка несоответствия. Восстановите последнее значение и перегенерируйте инвертированный файл.
Объяснение и возможные причины приведены ниже.
Сообщение 391. Внимание! Ссылка не найдена. Нельзя удалить. Это сообщение касается удаленных или модифицированных записей. CDS/ISIS пытается удалить из инвертированного файла ссылки, соответствующие удаленной записи или старую версию модифицированной записи (т. е. версию существовавшую до сделанной модификации ), но не может найти одну из ссылок, которую нужно удалить. Ссылка, вызывающая это сообщение, будет также выведена на дисплей в таком виде:
MFN/идентификатор поля/значение/последовательный номер
См. раздел 3.4.2. "ТВП для инвертированого файла". Это сообщение может быть обусловлено следующим:
* изменение ТВП для инвертированного файла без переинвертирования базы данных;
* восстановление файла документов после инвертированного файла;
* аварийное прерывание процесса обновления инвертированного файла (отключение электроэнергии).
Сообщение 392. Внимание! Повторная ссылка. Оно касается новых или модифицированных записей. CDS/ISIS пытается добавить в инвертированный файл ссылки, соответствующие новой записи или модифицированной версии записи, но находит, что одна из ссылок уже существует (обычно потому, что создаваемые ссылки должны быть уникальными). Ссылка, вызывающая это сообщение, будет выведена на экран, как и предыдущая. Это сообщение может быть обусловлено следующим :
* использование одинакового идентификатора поля более, чем для одной строки ТВП, особенно если используется техника индексирования 4;
* аварийное прерывание процесса обновления инвертированного файла (отключение электроэнергии).
Сообщение 393. Оно обычно указывает на испорченность фала документов, которое может быть причиной внезапного или ненормального выхода из CDS/ISIS (т. е. отключение электроэнергии или выключения компьютера во время процесса обновления).
Проблемы, связанные с этими сообщениями, обычно разрешаются путем переинвертирования базы данных (после корректировки ТВП, если необходимо).
The UNESCO micro CDS/ISIS Software
Поисковый язык СDS/ISIS базируется на булевой алгебре, которая обеспечивает удобный способ выражения логических операций между классами. Каждый поисковый термин, ассоциируемый с данной записью, фактически может рассматриваться как представитель класса всех записей, ассоциируемых с данным термином. Так, выражая логические операции между поисковыми терминами, вы можете точно определить класс записей, которые должны быть найдены в ответ на ваш запрос.
В следущих параграфах примеры приведены не для того, чтобы показать, как формировать специфические запросы, они просто иллюстрируют возможности поискового языка CDS/ISIS. Однако, поисковый язык сам по себе не даст вам возможности проводить поиск в конкретной базе данных. Ключ к полному и эффективеому поиску - это знание всех поисковых терминов, употребляемых в данной БД. Следовательно, важно, чтобы вы ознакомились со словарем поисковых терминов, доступных для БД, в которой вы хотите проводить поиск и с правилами индексирования записей в этой БД. Заметьте, что опция "Т" в меню ISISRET, позволит вам не только вывести словарь на экран компьютера, но и строить поисковый запрос путем выбора терминов непосредственно на экране. (см. раздел 7.1 "Т- вывод на экран терминов доступа").
Наиболее эффективный путь выполнения поиска в CDS/ISIS -через инвертированный файл (и основная причина поддерживать инвертированный файл - обеспечить быстрый поиск). Однако, вы можете это сделать только в том случае, если ваши поисковые запросы укладываются в рамки словаря поисковых терминов для данной БД, т. е. если они были выбраны, когда определялось содержание инвертированного файла. При этом, как бы хорошо ни была продумана ваша БД, все равно будут случаи, когда вы не сможете сформировать поисковый запрос через инвертированный файл. Для этих случаев СDS/ISIS обеспечивает альтернативный поисковый метод, называемый свободным поиском по тексту, который позволяет вам удовлетворить любой поисковый запрос независимо от содержания инвертированного файла. Поскольку этот второй метод менее эффективен, он обычно используется вместе с поиском по инвертированному файлу для улучшения поисковой стратегии, но может, если необходимо, использоваться независимо. Если вы обнаружите, что вам довольно часто приходится формулировать длинные запросы свободного поиска по тексту,то, возможно, вам стоит рассмотреть вопрос о переопределении инвертированного файла. Следущие несколько параграфов описывают метод поиска по инвертированному файлу. Свободный поиск по тексту описан в разделе 3.6.7. "Свободный поиск по тексту".
При формулировании вашего поискового выражения вы можете использовать три типа терминов: точные термины, термины, усеченные справа, ANY-термины. Все они описаны ниже.
Точным термином является любой поисковый элемент, определенный для данной БД, такой как предметный дескриптор, ключевое слово, ключевое выражение, слово из заголовков, имя автора и т. д. Вы должны быть знакомы с поисковыми терминами, доступными в БД, в которой вы намереваетесь проводить поиск.
Когда вы используете точный поисковый термин, вы должны его определить точно так, как он известен CDS/ISIS. Рекомендуется иметь список поисковых терминов под рукой во время формулировки запроса (или использовать опцию Т программы ISISRET, описанную в разделе 7.1. "Т- вывод на экран терминов доступа"), для вывода на экран поисковых терминов.
Даже небольшие изменения в написании термина заставят CDS/ISIS отвергнуть его.
Так, например, если CDS/ISIS известен термин COLOR (американское написание), вы не можете использовать этот термин в английском написании COLOUR, т. к. он будет отвергнут.
Важно помнить, что, если поисковый термин содержит скобки или любой из знаков поисковых операций (* + (G) (F) . $ ^) или начинается со знака #, вы должны заключить его в двойные кавычки с целью избежать возможной неоднозначности. Так, если ваш поисковый термин:
GERMANY (FEDERAL REPUBLIC)
вы должны ввести его в следующем виде
"GERMANY (FEDERAL REPUBLIC)"
иначе CDS/ISIS выдаст сообщение о синтаксической ошибке.
Вместо использования точных поисковых терминов, вы можете дать только его основу. Эта техника, называемая поиском по основе или усечением справа, позволяет вам искать по ведущей последовательности символов. CDS/ISIS автоматически выполнит логическую операцию OR между всеми поисковыми терминами, имеющими указанную основу.
Усечение справа обозначается знаком доллара $, который ставится сразу после последнего символа основы. Предположим, например, что ваш список терминов содержит следующий набор терминов:
file organization
film industry
film libraries
film-maker
film-making
film-making trainig
filmstrip
filtration
Тогда FILM $ является эквивалентом списку:
film
film industry
film libraries
film-maker
film-making
filmstip,
а FILM - $ является эквивалентом списку:
film-maker
film-making
film-making training
Как и для точных поисковых терминов, если ваша основа содержит скобки, или любой знак поискового оператора или начинается со знака #, вы должны заключить ее в двойные кавычки ("). "Например, "FILM $" является эквивалентом:
FILM
FILM INDUSTRY
FILM LIBRARIES
но FILM $ (без кавычек) выдаст сообщение об ошибке.
ANY термины - это коллективный термин ранее определенного набора поисковых терминов. Когда вы используете ANY термин в вашей поисковой формулировке, CDS/ISIS автоматически выполнит логическое OR между всеми терминами, ассоциируемыми с этим ANY термином.
ANY термин состоит из слова ANY, за которым следует уникальный идентификатор, обычно мнемонический, назначенный ассоциируемому набору терминов. Например, термин ANY BENELUX COUNTRY может быть использован для поиска записей, заиндексированных названием любой страны группы Benelux (Бельгия, Hидерланды, Люксембург). Прежде чем ANY- термин может быть использован в поисковой формулировке, его значение должно быть определено путем определения множества ассоциируемых с ним терминов (см. раздел 17.4. "Создание ANY файла"). Заметим, что не все базы данных должны пользоваться этим средством. Поэтому прежде чем пытаться использовать ANY термин, вы должны убедиться, что он доступен БД, в которой вы проводите поиск и, если да, то, что он действительно определен.
Вы можете объединять два или более поисковых терминов в поисковые выражения с помощью поисковых операторов, обозначающих отношения, которые вы хотите установить между терминами. Три основных оператора OR, AND, NOT схематически представлены на рис. 31, где каждый прямоугольник представляет записи, заиндексированные указанным термином, а заштрихованное пространство представляет множество записей, которые получатся в результате применения различных операторов.
Логическое OR - это оператор объединения классов. Результатом логического OR между двумя классами является класс, полученный путем слияния этих двух классов, без дублирования совпадающих элементов.
Так, если А и В - два термина, представляющие два класса документов, заиндексированных терминами А и В соответственно, логическим OR между этими двумя классами является класс документов, заиндексированных термином А, термином В или обоими терминами.
Логическое OR, следовательно, используется для расширения поиска и будет, в общем случае, увеличивать количество найденных записей. Символ, используемый для обозначения логической операции OR - знак "+".
Так, например, для того чтобы найти документы о странах Бенелюкс, можно использовать логический оператор OR следующим образом:
Бельгия + Нидерланды + Люксембург
Заметьте, что порядок, в котором даны три страны безразличен.
Рис. 31: Основные поисковые операторы
Логическое AND - оператор пересечения классов. Результатом логического AND между двумя классами является класс, содержащий только элементы, совпадающие для этих классов.
Так, если А и В - два термина, представлющие два класса документов, заиндексированных терминами А и В соответственно, логическим AND между этими двумя классами является класс документов, заиндексированных одновременно обоими терминами А и В.
Логическое AND, следовательно, используется для сужения поиска путем требования одновременного присутствия терминов и будет, в общем случае, снижать количество найденных записей. Символ, используемый для обозначения логической операции AND - знак "*".
Так, например, для того, чтобы найти документы о диалоговых и поисковых информационных системах, можно использовать логический оператор AND следующим образом:
on-line systems * information retrieval
Отметьте, что порядок, в котором приведены термины, безразличен.
Результатом логического AND может быть пустой класс, т. е. класс, не содержащий элементов. В этом случае при поиске не находится ни одной записи. В приведенном выше примере будет получен пустой класс, если ни одна запись в БД не содержит одновременно оба термина: on-line systems и information retrieval.
Эти операторы наиболее ограничительный тип логического оператора AND и, практически, полезны для поиска по естественному языку.
Операторами уровня поля и близости являются:
(G) - то же поле (все повторения повторяющегося поля рассматриваются как одно поле), например:
water / (G) / soil (на этот запрос) будут найдены все записи, в которых и вода, и соль встречаются в одном поле.
(F) - то же поле или повторение в повторяющемся поле, например:
water / (F) / soil будут найдены все записи, в которых и water, и soil встречаются в одном поле или, если поле повторяющееся, то в одном повторении повторяющегося поля ((G) и (F) эквивалентны для неповторяющихся полей).
. как (F), но с дополнительным ограничением: между терминами должно быть не более n слов минус 1, где n - количество точек. Например: А . В - между терминами недолжно быть слов; А .. В - не более одного слова между А и В; А ... В - не более двух слов между А и В;
$ как (F), но с дополнительным ограничением: между терминами должно быть точно n слов минус 1, где n - количество знаков $.
Например:
А $ В между А и В не должно быть слов.
А $$ В точно одно слово должно быть между А и В.
А $$$ В точно два слова должно быть между А и В.
Отметим, что непосредственно до и после оператора должен быть пробел.
Логическое NOT - оператор исключения класса. Результатом логического NOТ между двумя классами является класс, содержащий все элементы первого класса, которые не совпадают с элементами второго класса.
Так, если А и В - два термина, представляющие два класса документов, заиндексированных А и В соответственно, логическим NOT между А и В является класс документов, заиндексированных только термином А, но не А и В или В. Символ, используемый для обозначения логической операции NOT - знак ^ .
Логическое NOT должно использоваться только в крайних случаях, поскольку оно может повлечь неадекватную потерю релевантных документов.
Например, поисковый запрос может относиться к документам о группах, находящихся в невыгодном положении, исключая при этом ссылки на детей, находящихся в невыгодном положении (disadvanbaged children). Можно сформировать запрос следующим образом:
disadvantaged group ^ disadvantaged children
Это возможно, однако, для документов содержащих раздел о детях, находящихся в невыгодном положении. Эти документы будут опущены,если сформировать запрос так, как указано выше.
Отметим далее, что операция NOT, в отличие от логических операций AND и OR, не дает тех же результатов при инверсии операндов. Так, А ^ В не то же самое, что В ^ А (за исключением частного случая, когда А и В представляют один и тот же класс; в этом случае результатом этой логической операции будет пустой класс).
Вы можете формировать сложные поисковые выражения путем комбинирования двух или более поисковых терминов с помощью поисковых операторов, описанных выше.
Как в обычной алгебре, вы можете применять скобки для изменения порядка выполнения операций. При вычислении выражений принят следующий приоритет операторов:
Если встречаются два или более операторов одного приоритета в пределах одного уровня скобок, они вычисляются слева направо. Так, например, при вычислении следующего выражения
А + В * С
CDS/ISIS сначала вычислит В * С, а затем логическое OR между А и (В * С). В то время как при вычислении
(А + В) * С
она сначала вычислит А + В и затем логическое AND между (А + В) и С. Вы можете вкладывать скобки, если нужно, как в следующем примере:
((А + В) * С + (D + E) + F) ^ G
При формировании поисковых выражений вы должны придерживаться простых синтаксических правил:
1) никакие два логические оператора не могут располагаться рядом, исключая повторения знаков "." и "$" (которые не могут,однако, смешиваться);
2) используемые скобки должны быть сбалансированы, т. е. количество открыващихся скобок должно быть равно количеству закрывающихся скобок.
Вы можете использовать квалификатор для определения поля или группы полей, в которых вы хотите искать термины. Это особенно удобно для баз данных, которые содержат одинаковые данные в нескольких полях.
Квалификатор имеет следующий формат:
поисковый термин/(t1, t2, t3, ...)
где t1, t2, t3 - идентификаторы полей, в которых вы хотите искать ваши термины.
Идентификатор поля - это, обычно, метка поля. Однако могут быть исключения. См. раздел 3.4.2. "ТВП для инвертированного файла" для уточнения понятия "идентификатор поля".
Квалификаторы поля могут использоваться вместе с поисковыми операторами для поиска по ограниченному количеству полей и могут также применяться к поисковым терминам усеченным справа или ANY терминам. Например, рассмотрим БД, в которой все термины выбираются из всех полей пословно.
Простым применением оператора AND можно найти записи, содержащие термины INTERNATIONAL, EXPERT и MEETING:
internanional * expert * meeting
Однако, количество записей, удовлетворяющих этому запросу может быть очень велико, поскольку каждое слово может быть найдено в любом из нескольких полей, например, заголовок, корпорация, предмет и т.д. Путем использования (F) оператора
international (F) expert (F) meeting
количество используемых записей может быть сокращено, но все же вы не можете быть совершенно уверены в результате, т. к. термины могут появиться и в аннотации, и в заголовке, и в издательстве и т.д.
Однако, если вы добавите квалификатор /(62)
international (F) expert (F) meeting / (62),
то будут найдены только те записи, которые имеют все эти термины в одном повторении поля 62 (отметьте, что в данном случае можно применять квалификатор только к одному термину).
Если оператором является поисковый термин, усеченный справа, или ANY- термин, CDS/ISIS будет применять квалификатор ко всем членам соответствующего множества.
Так, например,
ANY Benelux country / (64)
эквивалентно
Belgium / (64) + Netherlands / (64) + Luxembourg / (64)
Основным блоком при построении поисковой формулировки является поисковое выражение, как определено выше. Каждый раз, когда вы выбираете опцию S меню xXGEN программы ISISRET, вы фактически создаете новое поисковое выражение. В ответ на поисковое выражение CDS/ISIS:
1) назначает уникальный номер, называемый номером запроса к поисковому выражению, которое вы ввели (если оно не содержит синтаксические ошибки);
2) выводит на экран количество регистраций для каждого термина в выражении, для каждого подвыражения.
Так, например, если вы введете поисковое выражение
(отметьте, что номера строк не появляются на экране, они включены для облегчения ссылки на каждую строку при объяснении, приведенном ниже):
Строка 1 содержит номер запроса, приписываемый CDS/ISIS поисковому выражению (1 в данном случае).
Строки 2-3 содержит количество регистраций (р=nnnnnn) для каждого термина, используемого на самом низком уровне выражения.
Строка 4 содержит количество записей (Т=2192), номер подвыражения (#2) и выделено само подвыражение (ITALY+FRANCE). В данном примере БД содержит 2192 записи, содержащие термин ITALY или термин FRANCE, или оба.
Строка 5 содержит количество регистраций (р=nnnnnn) для каждого термина, используемого на более высоком уровне выражения, в данном случае, на самом высоком уровне.
Строка 6 содержит количество записей (Т=8), номер подвыражения (#3:) и выделено второе подвыражение ART + #2 (строка 4).
Строка 7 содержит количество записей (Т=8), номер запроса (#1:) и номер подвыражения (#3) со строки 6.
Если поисковое выражение содержит ANY-термин, то на экран будет выдано количество регистраций всех поисковых терминов, принадлежащих данному ANY- термину, и общее количество регистраций. Аналогично, если поисковое выражение содержит поисковый термин, усеченный справа, то будут выведены на экран количество регистраций для каждого отдельного поискового термина также, как общее количество регистраций для усеченного термина.
Если вы используете недоступный поисковый термин, CDS/ISIS установит количество его регистраций равным нулю и выдаст сообщение:
** не найден **
Как было упомянуто выше, CDS/ISIS присваивает уникальный номер каждому поисковому выражению. Он также сохраняет все поисковые выражения. В последующих поисковых выражениях вы можете ссылаться на ранее введенные с помощью номера запросы, присвоенные CDS/ISIS, со знаком # перед ним.
Эта возможность позволит вам развивать свою поисковую стратегию шаг за шагом. Разделение запроса на элементы также позволяет вам не только контролировать на каждом шаге количество найденных записей, но и выдавать на экран сами записи, так, что вы можете проверить в любой момент логическую правильность поисковой формулировки, в смысле релевантности найденных записей.
Предположим, например, что после вывода на экран записей, найденных в ответ на запрос (ITALY + FRANCE) * ART вы обнаружили, что были найдены некоторые нерелевантные документы, потому что они касаются conservation of monuments. Вы можете изменить формулировку запроса следующим образом:
#1 ^ conservation of monuments
Ссылка на ранее определенное поисковое выражение называется обратной ссылкой. Заметьте, что к обратной ссылке можно применять квалификатор поля. Например,
# 1 / (64)
выберет среди записей, найденных в ответ на запрос #1, только те, в которых поисковые термины найдены в поле 64.
Для формулировки запросов нет набора правил. Вы будете развивать свои навыки, приобретая опыт при работе с CDS/ISIS. В общем, неопытному человеку не следует сразу использовать сложные поисковые выражения, а начать с простых, которые затем можно комбинировать для создания окончательной поисковой формулировки. Если опять сослаться на приведенный выше пример, этот же поисковый запрос может быть сформулирован за 4 шага:
номер запроса #1: ART
номер запроса #2: ITALY+FRANCE
номер запроса #3: CONSERVATION OF MONUMENTS
номер запроса #4: #1 * #2 ^ #3
Этот метод позволяет вам специализировать поисковые требования по полям, которые не инвертируются и/или специфицировать условия, которые вы не могли бы определить, пользуясь методом, описанным выше, такие как сравнение полей или сравнение числовых значений полей.
Свободный поиск по тексту подключается при выборе опции S меню ISISRET. Чтобы отличать его от обычного поиска, перед булевым выражением ставится знак "?":
? булево выражение или
? #n булево выражение,
где
? - идентифицирует свободный поиск по тексту
#n - ограничивает свободный поиск по тексту результатами ранее введенного запроса (n - номер поискового запроса, в котором может проводиться как поиск по инвертированному файлу, так и свободный поиск по тексту или комбинация обоих типов поиска); если n опущено, то свободный поиск по тексту проводится по всей базе данных.
булево выражение - булево выражение CDS/ISIS, как определено в разделе 3.2.6.3. "Булевые выражения".
В ответ на запрос свободного поиска CDS/ISIS вычислит булево выражение для каждой записи файла документов и построит hit список записей, удовлетворяющих специфицированным условиям (т. е. все записи, для которых булево выражение получает значение "Верно").
Например:
? V24: 'Unesco' and val(V26^C) )=1986
найдет все записи, содержащие Unesco в поле 24 с датой публикации (v26^c) больше или равно 1986. Следующее выражение:
? #2 (p(V24) or p(V29)) and V26^b : 'unesco'
найдет среди записей, найденных на запрос #2, только те записи, которые содержат unesco в подполе поля 26 и при этом содержат поле 24, поле 29 или оба поля вместе.
Булево выражение может быть настолько сложным, насколько хочет пользователь, но оно не должно превышать границу в 250 символов (немногим более трех строк на экране). Как при поиске по инвертированному файлу, при свободном поиске по тексту запросу присваивается номер, который вы затем можете использовать в других поисковых выражениях.
Отметьте, что хотя выражения при поиске по инвертированному файлу и свободном поиске по тексту не могут смешиваться в одном выражении, однако можно, используя обратную ссылку, комбинировать любое количество выражений в отдельном поисковом выражении, например:
запрос 1 water * soil
запрос 2 ? # 1 val(v26^c) )1985
запрос 3 ANY LATIN AMERICA
запрос 4 #2 * #3
Поскольку CDS/ISIS должна читать каждую запись файла документов, чтобы проверить удовлетворяются ли условия, время обработки запроса по свободному поиску может быть очень большим, особенно если запрос применяется ко всей базе данных.
CDS/ISIS информирует вас о процессе обработки с помощью четырех окон, показываемых на экране, так что вы можете следить за процессом поиска.
Рис. 32 показывает, как выглядит экран во время свободного поиска по тексту.
Окна помечены следующим образом:
MFN - показывает номер обрабатываемой записи файла документов;
Hits - показывает текущее количество найденных записей (оно возрастает на 1 каждый раз, когда находится запись, удовлетворяющая булеву выражению);
% - показывает текущую hit запись, т. е. процентное соотношение найденных записей, вычисленное в отношении к обработанным записям;
Зап - общее количество записей, которые должны быть обработаны.
Вы можете в любое время прервать выполнение свободного поиска по тексту нажатием любой клавиши, чтобы обдумать частичные результаты. Затем вы можете продолжить либо прекратить поиск.