Документация по Дейталог-системе,

версия 1.0.0

Спецификация требований. 1

Описание структуры проекта. 2

Синтаксис используемого Дейталога. 3

Документация пользователя. 4

Сборка из исходных кодов. 4

Unix. 4

Windows 2000, XP. 4

Использование Дейталог-системы.. 5

Пример Дейталог-программы: 5

Спецификация требований

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

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

Система должна:

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

2.      вычислять программы на Дейталоге различными вычислительными методами, как восходящими, так и нисходящими;

3.      хранить факты (кортежи) в какой-либо СУБД и уметь извлекать их оттуда и предоставлять вычислителю.

 

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

Реализация должна быть:

1.      открытой;

2.      легко расширяемой;

3.      по возможности переносимой.

 

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

Итак, требования к интерфейсам:

1.      Обращение с СУБД, в которой Дейталог-система хранит кортежи должно происходить через стандартный интерфейс, СУБД должна быть легко заменяема.

2.      Необходимо предоставить пользователям программный интерфейс для потенциальной интеграции Дейталог-системы с другими программными продуктами.

Описание структуры проекта

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


Перед началом вычислений система выкачивает кортежи необходимых отношений из базы данных, используя программный интерфейс СУБД. Полученная программа и запросы к ней вычисляются с помощью восходящих методов (Якоби, Гаусса-Зейделя, полунепосредственного) и  восходящего QSQ (запрос-подзапрос). Затем выдается результат.

Синтаксис используемого Дейталога

Синтаксический анализатор работает, используя следующую грамматику:

<Program>                              ::=        <Statement List>

<Statement List>                     ::=        <Statement> | <Statement List> <Statement>

<Statement>                            ::=        <Rule> | <Query> | <Processing Instruction>

<Processing Instruction>          ::=        ! <Instruction>

<Instruction>                           ::=        Edb filename

<Rule>                                    ::=        <Predicate> :- <Predicate List> .

<Predicate>                            ::=        constant ( <Term List> )

<Term List>                            ::=        <Term>  | <Term List>, <Term>

<Term>                                   ::=        constant | <variable>

<variable>                               ::=        identifier | _

<Predicate List>                      ::=        <Predicate> | <Predicate List>, <Predicate>

<Query>                                 ::=        ? <Predicate List> .

Строчка, начинающаяся с `;' – комментарий.

Документация пользователя

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

Дейталог-система тестировалась с СУБД SQLite [http://www.sqlite.org], версия 2.8.11.

 

Сборка из исходных кодов

Для сборки Дейталог-системы вам потребуется компилятор Bigloo [http://www-sop.inria.fr/mimosa/fp/Bigloo], СУБД SQLite.

Распакуйте dtlog-1.0.0.tar.gz в какую-нибудь директорию.

Если вы работает с Unix-подобной ОС, переименуйте файл Makefile.unix в Makefile.

Если вы работает под Windows2000, XP переименуйте файл Makefile.vc6 в Makefile.

Отредактируйте Makefile/

Unix

Переименуйте файл Makefile.unix в Makefile. Отредактируйте Makefile: пропишите (с полными путями, если это необходимо)

·        компилятор Bigloo – BIGLOO

·        утилита afile, входящая в дистрибутив BiglooBIGLOO_AFILE_TOOL

·        компилятор СCC

·        директории .h файлов и библиотек Bigloo - BIGLOO_INC_DIR, BIGLOO_LIB_DIR

·        директории .h файлов и библиотек SQLite - SQLITE_INC_DIR , SQLITE_LIB_DIR

·        прописать директории для компилятора INC_DIRS

·        прописать директории для компоновщика LIB_DIRS

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

Наберите make.

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

Windows 2000, XP

Вам потребуется Microsoft Visual Studio 6.0. Возможно, вам потребуется запустить vcvars32.bat для установки переменных окружения MSVC.

Переименуйте файл Makefile.vc6 в Makefile. Отредактируйте Makefile: пропишите (с полными путями, если это необходимо)

·        компилятор Bigloo – BIGLOO

·        утилита afile, входящая в дистрибутив BiglooBIGLOO_AFILE_TOOL

·        компилятор СCC

·        утилиту сборки (линковки) LNK

·        директории .h файлов и библиотек Bigloo - BIGLOO_INC_DIR, BIGLOO_LIB_DIR

·        директории .h файлов и библиотек SQLite - SQLITE_INC_DIR , SQLITE_LIB_DIR

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

Наберите nmake.

После того, как система будет откомпилирована, можно запускать исполняемый файл dtlog.exe.

Использование Дейталог-системы

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

dtlog.exehelp

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

Usage:

dtlog-bigloo [options]

 

help:

   -h, --help                  -- Печать этого вспомогательного сообщения

   -v, --version -- Печать версии

 

options:

   -f <file>                    -- Дейталог-программа для выполнения

   -edb <file>                -- База данных SQLite, перекрывающая файл, прописанный в инструкции Дейталог-программы

 

calculations:

   -sn                            -- Вычислить программу, используя обобщенный полунепосредственный метод (по умолчанию)

   -ya                           -- Вычислить программу, используя метод Якоби

   -gz                            -- Вычислить программу, используя метод Гаусса-Зейделя

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

Пример Дейталог-программы:

!edb "anc/1.sqlite"

anc(X, Y) :- par(X, Y).

anc(X, Y) :- anc(X, Z), par(Z, Y).

? anc(_, _).

? anc("a", _).

? anc("12", "10").

;end of program

Если в файле 1.sqlite находятся кортежи отношения par: (a, b), (b, c), p(b, d), (c, e), то результат выполнения программы будет таким:

((anc _ _)) = (#(a, b), #(b, c), #(b, d), #(c, e), #(b, d), #(c, e), #(a, c), #(a, d), #(b, e), #(a, e))

((anc a _))  = (#(a, b), #(a, c), #(a, d), #(a, e))

((anc c a))  = (#(a, b))