Базовая конъюнкция - Большая Энциклопедия Нефти и Газа, статья, страница 3
Если третье лезвие бреет еще чище, то зачем нужны первые два? Законы Мерфи (еще...)

Базовая конъюнкция

Cтраница 3


Базовая конъюнкция называется соединенной тогда и только тогда, когда ее нельзя разделить на две части, не содержащие общих переменных. В дальнейшем будем полагать, что базовая конъюнкция является соединенной. Если некоторая базовая конъюнкция не является соединенной, будем рассматривать каждую соединенную часть как отдельную базовую конъюнкцию.  [31]

Такая перестановка предикатов приводит к тому, что базовые конъюнкции становятся большими, но, возможно, менее ограниченными. Уместность такой трансформации следует оценивать в каждом конкретном случае.  [32]

Разные интерфейсы Пролога обладают различными возможностями для конструирования базовых конъюнкций. Мы рассмотрим случаи, в которых при конструировании базовых конъюнкций необходимо использовать композицию правил, перестановку предикатов, специальный предикат отсечения, дизъюнкцию, отрицание и рекурсию. Не все интерфейсы Пролога способны обрабатывать каждый из перечисленных случаев.  [33]

Пусть POS и NEG представляют два отношения, соответствующие базовым конъюнкциям слева от отрицания и в области действия отрицания.  [34]

В первом правиле производится попытка сопоставить текущую базовую конъюнкцию с данными в основной памяти. Первое правило удовлетворяется, если в памяти Пролога имеются унифицируемые с текущей базовой конъюнкцией кортежи, иначе попытка выполнения правила завершается неудачей.  [35]

Дизъюнкции внутри правил порождают очевидные проблемы. Решение, принятое в большинстве интерфейсов Пролога, состоит в построении дизъюнктивной нормальной формы, содержащей максимальные базовые конъюнкции.  [36]

Второе правило активизирует интерфейс базы данных. Предположим, что второе правило удовлетворяется, когда запросу к базе данных соответствует непустой ответ; при этом новые результирующие кортежи загружаются в резидентную в оперативной памяти базу данных Пролога и производится унификация текущей базовой конъюнкции с первым из них. Чтобы предотвратить неоднократные сопоставления с одними и теми же фактами, загружаться должны только кортежи, отсутсутвующие в резидентной базе данных Пролога. Это означает, что отношения базы данных рассматриваются не как мультимножества кортежей ( как принято в большинстве реализаций реляционных БД), а как множества кортежей, что согласуется с понятием отношения.  [37]

Отсечение не может появляться внутри базовой конъюнкции. Таким образом, отсечение делит правило на две части: до и после отсечения. Базовые конъюнкции одыскиваются внутри каждой из этих частей.  [38]

Базовая конъюнкция называется соединенной тогда и только тогда, когда ее нельзя разделить на две части, не содержащие общих переменных. В дальнейшем будем полагать, что базовая конъюнкция является соединенной. Если некоторая базовая конъюнкция не является соединенной, будем рассматривать каждую соединенную часть как отдельную базовую конъюнкцию.  [39]

Интерфейс ESTEAM включает алгоритм последовательного построения базовых конъюнкций, начиная с целей Пролога. При слабом связывании все взаимодействия с базой данных происходят перед активацией механизма Пролога. При сильном связывании построение базовых конъюнкций запросов происходит одновременно с вычислением Пролог-программы. Интерфейс ESTEAM допускает дизъюнкцию, отрицание, рекурсию и специальный предикат отсечения ( рассмотренный в разд. Допускаются также агрегатные запросы.  [40]

В СРЯ-системах интерфейс Пролога решает задачу определения максимальных базовых конъюнкций, интерфейс базы данных формирует соответствующий запрос-соединение и управляет его выполнением. Когда результирующие кортежи извлечены из базы данных, интерфейс базы данных передает их либо по одному, либо все вместе ( как обсуждалось в разд. Следует отметить, что сборка базовых конъюнкций изменяет семантику программы Пролога, поскольку при этом модифицируется выполнение по отношению к первоначальной программе. Предложенные трансформации программы влияют на порядок и повторяемость кортежей в результирующем множестве, хотя само результирующее множество остается тем же. Таким образом, механизм Пролога, возвращающий множество ответов, должен маскировать указанные различия, тогда как в традиционном механизме Пролога этого делать не нужно.  [41]

Базовая конъюнкция называется соединенной тогда и только тогда, когда ее нельзя разделить на две части, не содержащие общих переменных. В дальнейшем будем полагать, что базовая конъюнкция является соединенной. Если некоторая базовая конъюнкция не является соединенной, будем рассматривать каждую соединенную часть как отдельную базовую конъюнкцию.  [42]

Система PRIMO рассматривает базовые конъюнкции как единичные запросы типа соединения. Таким образом, интерфейс базы данных использует избирательность оператора соединения для уменьшения числа кортежей, загружаемых в основную память. С другой стороны, факты помещаются в память в том же формате, что и исходные предикаты базы данных, и механизм Пролога повторяет выполнение соединения в основной памяти. Этим достигается максимальная прозрачность: механизм Пролога выполняет исходную программу пользователя, а не трансформированную программу с явными правилами для базовых конъюнкций.  [43]

Пролог является довольно выразительным языком запросов. В этой главе показано, как создавать системы, которые реализуют интерфейс Пролога с базами данных, обеспечивая при этом эффективный доступ к данным. С этой целью рассмотрены компоненты и альтернативные архитектуры систем для связывания Пролог-систем и реляционных баз данных. В рамках альтернативных архитектур обсуждены методы организации интерфейса между базой данных и Пролог-системой. Введено понятие базовой конъюнкции как единицы взаимодействия между Прологом и средой баз данных. Описаны разнообразные методы повышения эффективности такого интерфейса. Главное, на чем мы здесь остановимся, - экономия операций доступа к базе данных. В частности, при запоминании данных и промежуточных запросов используется кэш-память. Это позволяет устранить повторение одних и тех же операций во время выполнения программы.  [44]



Страницы:      1    2    3