Примеры использования PL-объектов
см. Система логического программирования на встроенном SWI‑Prolog
Содержание |
Установка
- При отсутствии на компьютере программы Гедымин предварительно скачать и установить
Прикладные решения. Комплексная автоматизация предприятия
илиПлатформа Гедымин. Разработчик
- Клонировать проект
gedemin-prolog
- Установить пространство имен
GS.Пролог.Примеры использования PL-объектов.yml
Выполнение
- Меню
Сервис
⇒Редактор скрипт объектов...
- Проводник
Глобальные макросы
⇒Примеры использования PL-объектов
Результат выполнения отражается в диалоговом окне в виде протокола
Описание
Макрос Примеры использования PL-объектов
представлен главной процедурой pl_Examples
и сопутствующими функциями вида pl_ExampleN
, предназначенными для изучения материала из раздела PL-классы. Функции pl_ExampleN
выполняются в цикле с записью результата, как части выходного протокола.
В главной процедуре pl_Examples
производится создание объекта PL
класса TgsPLClient
и инициализация встроенного SWI-Prolog.
- Dim PL
- Set PL = Designer.CreateObject(nil, "TgsPLClient", "")
- If Not PL.IsInitialised Then
- If Not PL.Initialise("") Then
- Msg = "Ошибка инициализации SWI-Prolog!"
- Call MsgBox(Msg, vbCritical + vbOkOnly, Title)
- PL.DestroyObject
- Exit Sub
- End If
- End If
Далее объект PL
передается ссылочным параметром в каждую из функций примеров.
- Dim FuncIndex, FuncName, FuncBegin, FuncEnd
- FuncName = "pl_Example"
- FuncBegin = 1
- FuncEnd = 8
- For FuncIndex = FuncBegin To FuncEnd
- PL.Debug = False
- Msg = Msg & vbCrLf & _
- Eval(FuncName & FuncIndex & "(PL)")
- Next
При необходимости, можно модифицировать часть кода для изучения меньшего количества примеров, либо отдельно взятого примера.
Приложение
pl_Examples
см. также pl_Examples_Script, Протокол
- Option Explicit
- Sub pl_Examples()
- Dim Title, Msg, Ret
- Title = "Гедымин - Пролог"
- Msg = _
- "/* Примеры использования PL-объектов */" & vbCrLf & vbCrLf & _
- "%%%%" & vbCrLf & _
- "% pl_Examples" & vbCrLf & _
- "% TgsPLClient: Initialise, IsInitialised"
- Dim PL
- Set PL = Designer.CreateObject(nil, "TgsPLClient", "")
- If Not PL.IsInitialised Then
- If Not PL.Initialise("") Then
- Msg = "Ошибка инициализации SWI-Prolog!"
- Call MsgBox(Msg, vbCritical + vbOkOnly, Title)
- PL.DestroyObject
- Exit Sub
- End If
- End If
- Dim FuncIndex, FuncName, FuncBegin, FuncEnd
- FuncName = "pl_Example"
- FuncBegin = 1
- FuncEnd = 8
- For FuncIndex = FuncBegin To FuncEnd
- PL.Debug = False
- Msg = Msg & vbCrLf & _
- Eval(FuncName & FuncIndex & "(PL)")
- Next
- Msg = Msg & vbCrLf & "%%%%"
- PL.DestroyObject
- Dim frmMsg
- Set frmMsg = Designer.CreateObject(nil, "usrf_Msg", "")
- frmMsg.Caption = Title
- frmMsg.GetComponent("usrg_Msg").Lines.Text = Msg
- frmMsg.ShowModal
- frmMsg.DestroyObject
- End Sub
- Function pl_Example1(ByRef PL)
- Dim Title, Msg
- Title = vbCrLf & _
- "%%" & vbCrLf & _
- "% 1. pl_Example1(PL)" & vbCrLf & _
- "% TgsPLClient: Call" & vbCrLf & _
- "% TgsPLTermv: PutAtom, ToString"
- pl_Example1 = ""
- Dim PredicateName, Params
- PredicateName = "current_prolog_flag"
- Set Params = Designer.CreateObject(2, "TgsPLTermv", "")
- Params.PutAtom 0, "executable"
- Msg = _
- "% Запрос" & vbCrLf & _
- "?- " & PredicateName & "(" & Params.ToString(0) & ", AppPath)."
- If PL.Call(PredicateName, Params) Then
- Dim AppPath
- AppPath = Params.ToString(1)
- Msg = Msg & vbCrLf & _
- "AppPath = " & AppPath & "."
- Else
- Msg = Msg & vbCrLf & "false."
- End If
- pl_Example1 = Title & vbCrLf & Msg & vbCrLf & "%" & vbCrLf & "%%"
- Params.DestroyObject
- End Function
- Function pl_Example2(ByRef PL)
- Dim Title, Msg
- Title = vbCrLf & _
- "%%" & vbCrLf & _
- "% 2. pl_Example2(PL)" & vbCrLf & _
- "% TgsPLClient: Call2, Call" & vbCrLf & _
- "% TgsPLTermv: PutAtom, ToString"
- pl_Example2 = ""
- Dim Code
- Code = "assertz( pl_Example(pl_Example2, 'Пример 2') )"
- Msg = _
- "% Выполнение кода" & vbCrLf & _
- "?- " & Code & "."
- If PL.Call2(Code) Then
- Msg = Msg & vbCrLf & "true."
- Else
- Msg = Msg & vbCrLf & "false."
- End If
- Dim PredicateName, Params
- PredicateName = "pl_Example"
- Set Params = Designer.CreateObject(2, "TgsPLTermv", "")
- Params.PutAtom 0, "pl_Example2"
- Msg = Msg & vbCrLf & _
- "% Запрос" & vbCrLf & _
- "?- " & PredicateName & "(" & Params.ToString(0) & ", Text)."
- If PL.Call(PredicateName, Params) Then
- Msg = Msg & vbCrLf & _
- "Text = " & Params.ToString(1) & "."
- Else
- Msg = Msg & vbCrLf & "false."
- End If
- pl_Example2 = Title & vbCrLf & Msg & vbCrLf & "%" & vbCrLf & "%%"
- Params.DestroyObject
- End Function
- Function pl_Example3(ByRef PL)
- Dim Title, Msg
- Title = vbCrLf & _
- "%%" & vbCrLf & _
- "% 3. pl_Example3(PL)" & vbCrLf & _
- "% TgsPLClient: Compound, Term, Call" & vbCrLf & _
- "% TgsPLTermv: PutAtom, ToString"
- pl_Example3 = ""
- Dim Goal, Functor, Termv
- Set Goal = Designer.CreateObject(1, "TgsPLTermv", "")
- Functor = "pl_Example"
- Set Termv = Designer.CreateObject(2, "TgsPLTermv", "")
- Termv.PutAtom 0, "pl_Example3"
- Termv.PutAtom 1, "Пример 3"
- Call PL.Compound(Goal.Term(0), Functor, Termv)
- Dim Code
- Code = "assertz"
- Msg = _
- "% Выполнение кода" & vbCrLf & _
- "?- " & Code & "( " & Goal.ToString(0) & " )."
- If PL.Call(Code, Goal) Then
- Msg = Msg & vbCrLf & "true."
- Else
- Msg = Msg & vbCrLf & "false."
- End If
- Dim PredicateName, Params
- PredicateName = "pl_Example"
- Set Params = Designer.CreateObject(2, "TgsPLTermv", "")
- Params.PutAtom 0, "pl_Example3"
- If PL.Call(PredicateName, Params) Then
- Msg = Msg & vbCrLf & _
- "% Запрос" & vbCrLf & _
- "?- " & PredicateName & "(" & Params.ToString(0) & ", Text)." & vbCrLf & _
- "Text = " & Params.ToString(1) & "."
- Else
- Msg = Msg & vbCrLf & "false."
- End If
- pl_Example3 = Title & vbCrLf & Msg & vbCrLf & "%" & vbCrLf & "%%"
- Termv.DestroyObject
- Goal.DestroyObject
- Params.DestroyObject
- End Function
- Function pl_Example4(ByRef PL)
- Dim Title, Msg
- Title = vbCrLf & _
- "%%" & vbCrLf & _
- "% 4. pl_Example4(PL)" & vbCrLf & _
- "% TgsPLClient: LoadScriptByName, Call" & vbCrLf & _
- "% TgsPLTermv: ToString"
- pl_Example4 = ""
- Dim ScriptName
- ScriptName = "pl_Examples_Script"
- PL.Debug = True
- If Not PL.LoadScriptByName(ScriptName) Then
- PL.Debug = False
- Exit Function
- End If
- PL.Debug = False
- Dim PredicateName, Params
- PredicateName = "hello_world"
- Set Params = Designer.CreateObject(1, "TgsPLTermv", "")
- Msg = _
- "% Запрос" & vbCrLf & _
- "?- " & PredicateName & "(Hello)."
- If PL.Call(PredicateName, Params) Then
- Msg = Msg & vbCrLf & _
- "Hello = " & Params.ToString(0) & "."
- Else
- Msg = Msg & vbCrLf & "false."
- End If
- pl_Example4 = Title & vbCrLf & Msg & vbCrLf & "%" & vbCrLf & "%%"
- Params.DestroyObject
- End Function
- Function pl_Example5(ByRef PL)
- Dim Title, Msg
- Title = vbCrLf & _
- "%%" & vbCrLf & _
- "% 5. pl_Example5(PL)" & vbCrLf & _
- "% TgsPLClient: Debug, LoadScriptByName" & vbCrLf & _
- "% TgsPLTermv: ToString" & vbCrLf & _
- "% TgsPLQuery: OpenQuery, EOF, NextSolution, Close, Cut"
- pl_Example5 = ""
- Dim ScriptName
- ScriptName = "pl_Examples_Script"
- PL.Debug = True
- If Not PL.LoadScriptByName(ScriptName) Then
- PL.Debug = False
- Exit Function
- End If
- PL.Debug = False
- Dim Params
- Set Params = Designer.CreateObject(1, "TgsPLTermv", "")
- Dim PredicateName, Query
- PredicateName = "hello_world"
- Set Query = Designer.CreateObject(nil, "TgsPLQuery", "")
- Query.PredicateName = PredicateName
- Query.Termv = Params
- Query.OpenQuery
- Msg = _
- "% Запрос" & vbCrLf & _
- "?- " & PredicateName & "(Hello)."
- If Not Query.EOF Then
- Do Until Query.EOF
- Msg = Msg & vbCrLf & _
- "Hello = " & Params.ToString(0)
- Query.NextSolution
- If Query.EOF Then
- Msg = Msg & "."
- Else
- Msg = Msg & " ;"
- End If
- Loop
- Else
- Msg = Msg & vbCrLf & "false."
- End If
- Query.Close
- Msg = Msg & vbCrLf & _
- "% Запрос" & vbCrLf & _
- "?- " & PredicateName & "(Hello), !."
- Query.OpenQuery
- If Not Query.EOF Then
- Do Until Query.EOF
- Msg = Msg & vbCrLf & _
- "Hello = " & Params.ToString(0)
- Query.Cut
- Query.NextSolution
- If Query.EOF Then
- Msg = Msg & "."
- Else
- Msg = Msg & " ;"
- End If
- Loop
- Else
- Msg = Msg & vbCrLf & "false."
- End If
- Query.Close
- pl_Example5 = Title & vbCrLf & Msg & vbCrLf & "%" & vbCrLf & "%%"
- Query.DestroyObject
- Params.DestroyObject
- End Function
- Function pl_Example6(ByRef PL)
- Dim Title, Msg
- Title = vbCrLf & _
- "%%" & vbCrLf & _
- "% 6. pl_Example6(PL)" & vbCrLf & _
- "% TgsPLClient: LoadScriptByName" & vbCrLf & _
- "% TgsPLTermv: DataType, ReadInteger, ReadAtom, ReadDate, ReadString" & vbCrLf & _
- "% TgsPLQuery: OpenQuery, EOF, NextSolution, Close"
- pl_Example6 = ""
- Const PL_VARIABLE = 1
- Const PL_ATOM = 2
- Const PL_INTEGER = 3
- Const PL_FLOAT = 4
- Const PL_STRING = 5
- Const PL_TERM = 6
- Dim ScriptName
- ScriptName = "pl_Examples_Script"
- PL.Debug = True
- If Not PL.LoadScriptByName(ScriptName) Then
- PL.Debug = False
- Exit Function
- End If
- PL.Debug = False
- Dim Params
- Set Params = Designer.CreateObject(2, "TgsPLTermv", "")
- Dim PredicateName, Query
- Dim Arg1, Arg2
- PredicateName = "some_fact"
- Set Query = Designer.CreateObject(nil, "TgsPLQuery", "")
- Query.PredicateName = PredicateName
- Query.Termv = Params
- Query.OpenQuery
- Msg = _
- "% Запрос" & vbCrLf & _
- "?- " & PredicateName & "(Arg1, Arg2)."
- Msg = Msg & vbCrLf & _
- "% Обработка фактов"
- If Not Query.EOF Then
- Do Until Query.EOF
- Select Case Params.DataType(0)
- Case PL_INTEGER
- Arg1 = Params.ReadInteger(0) & ": "
- Case PL_ATOM
- If IsDate(Params.ReadAtom(0)) Then
- Arg1 = Year(Params.ReadDate(0)) & " - "
- Else
- Arg1 = ""
- End If
- Case Else
- Arg1 = ""
- End Select
- If Not Arg1 = "" Then
- Select Case Params.DataType(1)
- Case PL_ATOM
- Arg2 = Params.ReadAtom(1)
- Case PL_STRING
- Arg2 = Params.ReadString(1)
- Case Else
- Arg2 = ""
- End Select
- Msg = Msg & vbCrLf & _
- "% " & Arg1 & Arg2
- End If
- Query.NextSolution
- Loop
- Else
- Msg = Msg & vbCrLf & "false."
- End If
- Query.Close
- pl_Example6 = Title & vbCrLf & Msg & vbCrLf & "%" & vbCrLf & "%%"
- Query.DestroyObject
- Params.DestroyObject
- End Function
- Function pl_Example7(ByRef PL)
- Dim Title, Msg
- Title = vbCrLf & _
- "%%" & vbCrLf & _
- "% 7. pl_Example7(PL)" & vbCrLf & _
- "% TgsPLClient: LoadScriptByName, Debug, MakePredicatesOfSQLSelect" & vbCrLf & _
- "% TgsPLTermv: PutAtom, ReadString, PutString" & vbCrLf & _
- "% TgsPLQuery: OpenQuery, EOF, NextSolution, Close"
- pl_Example7 = ""
- Dim ScriptName
- ScriptName = "pl_Examples_Script"
- PL.Debug = True
- If Not PL.LoadScriptByName(ScriptName) Then
- PL.Debug = False
- Exit Function
- End If
- PL.Debug = False
- Dim P_sql, Tv_sql, Q_sql
- Dim FactName, SQL
- P_sql = "gd_sql"
- Set Tv_sql = Designer.CreateObject(2, "TgsPLTermv", "")
- Set Q_sql = Designer.CreateObject(nil, "TgsPLQuery", "")
- Q_sql.PredicateName = P_sql
- Q_sql.Termv = Tv_sql
- FactName = "gd_place"
- Tv_sql.PutAtom 0, FactName
- Q_sql.OpenQuery
- Msg = _
- "% Запрос" & vbCrLf & _
- "?- " & P_sql & "(" & FactName & ", SQL)."
- Dim Ret
- Msg = Msg & vbCrLf & _
- "% Обработка фактов, наполнение базы знаний"
- If Not Q_sql.EOF Then
- Do Until Q_sql.EOF
- SQL = Tv_sql.ReadString(1)
- Msg = Msg & vbCrLf & _
- "/*" & SQL & "*/" & vbCrLf
- PL.Debug = True
- Ret = PL.MakePredicatesOfSQLSelect( _
- SQL, _
- gdcBaseManager.ReadTransaction, _
- FactName, FactName, False)
- PL.Debug = False
- Msg = Msg & _
- "% Добавлено " & Ret & " фактов " & FactName
- Q_sql.NextSolution
- Loop
- Else
- Msg = Msg & vbCrLf & "false."
- End If
- Q_sql.Close
- Q_sql.DestroyObject
- Tv_sql.DestroyObject
- Dim P_info, Tv_info, Q_info
- Dim PlaceNameIn, PlaceNameOut, PlaceTypeOut
- P_info = "place_info"
- Set Tv_info = Designer.CreateObject(3, "TgsPLTermv", "")
- Set Q_info = Designer.CreateObject(nil, "TgsPLQuery", "")
- Q_info.PredicateName = P_info
- Q_info.Termv = Tv_info
- PlaceNameIn = "Минск"
- Tv_info.PutString 0, PlaceNameIn
- Q_info.OpenQuery
- Msg = Msg & vbCrLf & _
- "% Запрос" & vbCrLf & _
- "?- " & P_info & "(""" & PlaceNameIn & """, PlaceNameOut, PlaceTypeOut)."
- Msg = Msg & vbCrLf & _
- "% Поиск решений"
- If Not Q_info.EOF Then
- Do Until Q_info.EOF
- Msg = Msg & vbCrLf & _
- "% " & Tv_info.ReadString(1) & " (" & Tv_info.ReadString(2) & ")"
- Q_info.NextSolution
- Loop
- Else
- Msg = Msg & vbCrLf & "false."
- End If
- Q_info.Close
- Q_info.DestroyObject
- Tv_info.DestroyObject
- pl_Example7 = Title & vbCrLf & Msg & vbCrLf & "%" & vbCrLf & "%%"
- End Function
- Function pl_Example8(ByRef PL)
- Dim Title, Msg
- Title = vbCrLf & _
- "%%" & vbCrLf & _
- "% 8. pl_Example8(PL)" & vbCrLf & _
- "% TgsPLClient: LoadScriptByName, ExtractData, MakePredicatesOfDataSet" & vbCrLf & _
- "% TgsPLTermv: PutInteger, ReadInteger, ReadString" & vbCrLf & _
- "% TgsPLQuery: OpenQuery, EOF, NextSolution, Close"
- pl_Example8 = ""
- Const ftString = 1
- Const ftInteger = 3
- Dim ScriptName
- ScriptName = "pl_Examples_Script"
- If Not PL.LoadScriptByName(ScriptName) Then
- Exit Function
- End If
- Dim P_rec, Tv_rec, RecNum
- P_rec = "generate_some_rec"
- Set Tv_rec = Designer.CreateObject(3, "TgsPLTermv", "")
- RecNum = 8
- Tv_rec.PutInteger 2, RecNum
- Msg = _
- "% Запрос" & vbCrLf & _
- "?- " & P_rec & "(ID, Name, " & RecNum & ")."
- Dim CDS
- Set CDS = Designer.CreateObject(nil, "TClientDataset", "")
- CDS.FieldDefs.Add "ID", ftInteger, 0, True
- CDS.FieldDefs.Add "Name", ftString, 20, True
- CDS.CreateDataSet
- CDS.Open
- Msg = Msg & vbCrLf & _
- "% Заполнение клиентского набора данных из Пролог-запроса"
- Call PL.ExtractData(CDS, P_rec, Tv_rec)
- Msg = Msg & vbCrLf & _
- "% Добавлено записей: " & CDS.RecordCount
- If Not CDS.RecordCount = 0 Then
- Msg = Msg & vbCrLf & _
- "% Считывание клиентского набора данных"
- Msg = Msg & vbCrLf & _
- "% ID Name"
- CDS.First
- Do Until CDS.Eof
- Msg = Msg & vbCrLf & _
- "% " & CDS.FieldByName("ID").AsInteger & _
- " " & CDS.FieldByName("Name").AsString
- CDS.Next
- Loop
- End If
- Tv_rec.DestroyObject
- Dim P_cds, Tv_cds, Q_cds
- P_cds = "gd_some_rec"
- Set Tv_cds = Designer.CreateObject(2, "TgsPLTermv", "")
- Set Q_cds = Designer.CreateObject(nil, "TgsPLQuery", "")
- Q_cds.PredicateName = P_cds
- Q_cds.Termv = Tv_cds
- Dim I, DelCount
- DelCount = 3
- CDS.First
- For I = 1 To DelCount
- CDS.Delete
- Next
- Msg = Msg & vbCrLf & _
- "% Удалено первых записей: " & DelCount
- Msg = Msg & vbCrLf & _
- "% Наполнение базы знаний из клиентского набора данных"
- Dim Ret
- PL.Debug = True
- Ret = PL.MakePredicatesOfDataSet(CDS, "ID,Name", P_cds, P_cds, False)
- PL.Debug = False
- Msg = Msg & vbCrLf & _
- "% Добавлено фактов " & P_cds & ": " & Ret
- CDS.Close
- CDS.DestroyObject
- Msg = Msg & vbCrLf & _
- "% Запрос" & vbCrLf & _
- "?- " & P_cds & "(ID, Name)"
- Q_cds.OpenQuery
- Msg = Msg & vbCrLf & _
- "% Обработка фактов"
- If Not Q_cds.EOF Then
- While Not Q_cds.EOF
- Msg = Msg & vbCrLf & _
- "% " & Tv_cds.ReadInteger(0) & ": " & Tv_cds.ReadString(1)
- Q_cds.NextSolution
- Wend
- Else
- Msg = Msg & vbCrLf & "false."
- End If
- Q_cds.Close
- Q_cds.DestroyObject
- Tv_cds.DestroyObject
- pl_Example8 = Title & vbCrLf & Msg & vbCrLf & "%" & vbCrLf & "%%"
- End Function
pl_Examples_Script
см. также pl_Examples, Протокол
- % Примеры использования PL-объектов
- hello_world(Msg) :-
- format(atom(Msg), '~w~w~w', ['Hello', ' ', 'World']).
- hello_world(Msg) :-
- findall(X, some_fact(X), Xs),
- atomic_list_concat(Xs, Msg).
- hello_world("Hello last World").
- some_fact(hello).
- some_fact('Next').
- some_fact("World").
- some_fact(1, 'Delphi').
- some_fact(2, 'VBScript').
- some_fact(3, 'Firebird').
- some_fact(4, 'FastReport').
- some_fact(5, 'SWI-Prolog').
- some_fact(none, 0).
- some_fact('1995-01-01', "Анжелика").
- some_fact('2003-01-01', "Гедымин").
- some_fact('2015-01-01', 2.6).
- :- dynamic([gd_place/4]).
- % gd_place(ID, Parent, Name, PlaceType)
- place_info(Name, PlaceName, PlaceType) :-
- place_name_type(_, Name, PlaceName, PlaceType).
- place_name_type(ID, Name, Name, PlaceType) :-
- gd_place(ID, _, Name, PlaceType).
- place_name_type(ID, Name, PlaceName, PlaceType) :-
- gd_place(ID, Parent, Name, _),
- place_name_type(Parent, _, PlaceName, PlaceType).
- :- style_check(-atom).
- gd_sql(gd_place,
- "
- SELECT
- p.ID, p.PARENT, p.NAME, p.PLACETYPE
- FROM
- GD_PLACE p
- "
- ).
- generate_some_rec(ID, Name, Number) :-
- integer(Number),
- between(1, Number, ID),
- atomic_list_concat(["Record", ID], Name).
Протокол
см. также pl_Examples, pl_Examples_Script
%%%%
% pl_Examples
% TgsPLClient: Initialise, IsInitialised
%%
% 1. pl_Example1(PL)
% TgsPLClient: Call
% TgsPLTermv: PutAtom, ToString
% Запрос
?- current_prolog_flag(executable, AppPath).
AppPath = 'C:\\Golden Software\\Gedemin\\gedemin.exe'.
%
%%
%%
% 2. pl_Example2(PL)
% TgsPLClient: Call2, Call
% TgsPLTermv: PutAtom, ToString
% Выполнение кода
?- assertz( pl_Example(pl_Example2, 'Пример 2') ).
true.
% Запрос
?- pl_Example(pl_Example2, Text).
Text = 'Пример 2'.
%
%%
%%
% 3. pl_Example3(PL)
% TgsPLClient: Compound, Term, Call
% TgsPLTermv: PutAtom, ToString
% Выполнение кода
?- assertz( pl_Example(pl_Example3,'Пример 3') ).
true.
% Запрос
?- pl_Example(pl_Example3, Text).
Text = 'Пример 3'.
%
%%
%%
% 4. pl_Example4(PL)
% TgsPLClient: LoadScriptByName, Call
% TgsPLTermv: ToString
% Запрос
?- hello_world(Hello).
Hello = 'Hello World'.
%
%%
%%
% 5. pl_Example5(PL)
% TgsPLClient: Debug, LoadScriptByName
% TgsPLTermv: ToString
% TgsPLQuery: OpenQuery, EOF, NextSolution, Close, Cut
% Запрос
?- hello_world(Hello).
Hello = 'Hello World' ;
Hello = helloNextWorld ;
Hello = "Hello last World".
% Запрос
?- hello_world(Hello), !.
Hello = 'Hello World'.
%
%%
%%
% 6. pl_Example6(PL)
% TgsPLClient: LoadScriptByName
% TgsPLTermv: DataType, ReadInteger, ReadAtom, ReadDate, ReadString
% TgsPLQuery: OpenQuery, EOF, NextSolution, Close
% Запрос
?- some_fact(Arg1, Arg2).
% Обработка фактов
% 1: Delphi
% 2: VBScript
% 3: Firebird
% 4: FastReport
% 5: SWI-Prolog
% 1995 - Анжелика
% 2003 - Гедымин
% 2015 -
%
%%
%%
% 7. pl_Example7(PL)
% TgsPLClient: LoadScriptByName, Debug, MakePredicatesOfSQLSelect
% TgsPLTermv: PutAtom, ReadString, PutString
% TgsPLQuery: OpenQuery, EOF, NextSolution, Close
% Запрос
?- gd_sql(gd_place, SQL).
% Обработка фактов, наполнение базы знаний
/*
SELECT
p.ID, p.PARENT, p.NAME, p.PLACETYPE
FROM
GD_PLACE p
*/
% Добавлено 265 фактов gd_place
% Запрос
?- place_info("Минск", PlaceNameOut, PlaceTypeOut).
% Поиск решений
% Минск (Нас. пункт)
% Минский (Район)
% Минская (Область)
% Беларусь (Страна)
%
%%
%%
% 8. pl_Example8(PL)
% TgsPLClient: LoadScriptByName, ExtractData, MakePredicatesOfDataSet
% TgsPLTermv: PutInteger, ReadInteger, ReadString
% TgsPLQuery: OpenQuery, EOF, NextSolution, Close
% Запрос
?- generate_some_rec(ID, Name, 8).
% Заполнение клиентского набора данных из Пролог-запроса
% Добавлено записей: 8
% Считывание клиентского набора данных
% ID Name
% 1 Record1
% 2 Record2
% 3 Record3
% 4 Record4
% 5 Record5
% 6 Record6
% 7 Record7
% 8 Record8
% Удалено первых записей: 3
% Наполнение базы знаний из клиентского набора данных
% Добавлено фактов gd_some_rec: 5
% Запрос
?- gd_some_rec(ID, Name)
% Обработка фактов
% 4: Record4
% 5: Record5
% 6: Record6
% 7: Record7
% 8: Record8
%
%%
%%%%