Гость
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как такое записать на прологе? / 18 сообщений из 18, страница 1 из 1
30.10.2019, 11:20
    #39883018
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
Пишу сведенья по метатадам и провадерам в свой файлик. Такой себе свод знаний. Ну не просто текстовый файлик
а такой чтоб впоследствии можно было какой-то вопрос задать и получить ответ.

Провайдеры:
Код: python
1.
2.
3.
4.
5.
6.
7.
provider(zebra).
provider(begemot).
provider(donkey).

source(FTP).
source(S3).
source(oracle).


Рулы.

Праймари датасорс для бегемота - БД.
А для всех остальных - файловое хранилище.

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
primarysource(X, oracle) :-
{
   return X == begemot;
}


primarysource(X, s3) :-
{
   return X != begemot;
}


Вот как такое описать? Или лучше в виде 1 правила.
...
Рейтинг: 0 / 0
30.10.2019, 18:35
    #39883273
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
Вместо того чтоб описывать факты.

Код: python
1.
2.
3.
4.
primarysource(zebra, oracle).
primarysource(begemot, S3).
primarysource(donkey, S3).
.... тут еще куча однотипных будет....
...
Рейтинг: 0 / 0
01.11.2019, 18:49
    #39884454
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
Как AND задать?

(Использую SWI-Prolog.)

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
|: attr_code_issuer(X) :- attr(X, code) & attr(X, issuername).

ERROR: user://2:1025:37: Syntax error: Operator expected
|: attr_code_issuer(X) :- attr(X, code) && attr(X, issuername).

ERROR: user://2:1028:37: Syntax error: Operator expected
|: attr_code_issuer(X) :- attr(X, code) and attr(X, issuername).

ERROR: user://2:1031:37: Syntax error: Operator expected
|:
...
Рейтинг: 0 / 0
01.11.2019, 21:14
    #39884516
ZyK_BotaN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
maytonКак AND задать?
емнип. ЭНД - через запятую.
ОР - через точку с запятой.

но лет 7 как пролога не видел, могу путать.
...
Рейтинг: 0 / 0
01.11.2019, 21:56
    #39884527
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
О. Шикарно. Проверю чуть позже. Щас с телефона.
...
Рейтинг: 0 / 0
02.11.2019, 13:10
    #39884594
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
Да. Так работает.

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
attr(a, code).
attr(a, issuername).

attr(b, code).

attr(c, issuername).

code_and_iss(X) :- attr(X, code) , attr(X, issuername).
code_or_iss(X) :- attr(X, code) ; attr(X, issuername).



А как быть с предикатом primarysource?
...
Рейтинг: 0 / 0
02.11.2019, 23:12
    #39884684
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
mayton,
Вот это с тобой приключилось, прямо нет слов.
...
Рейтинг: 0 / 0
02.11.2019, 23:19
    #39884685
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
Не переживай. Это - факультатив и нет deadlines.
...
Рейтинг: 0 / 0
02.11.2019, 23:34
    #39884687
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
Ок, денег, упс, ответов нет, но ты крепись
Я уже с 93 года в пролог ни ногой
...
Рейтинг: 0 / 0
03.11.2019, 13:50
    #39884753
dimonz80
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
...
Рейтинг: 0 / 0
05.11.2019, 15:17
    #39885297
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
Уже вот чисто по SWI-prolog.

С таким правилом

Код: sql
1.
field(X, Y) :- attr(X, Y) ;  dim(X, Y) ;  prop(X, Y).



Спрашиваю систему - обладает ли провадер zebra полем code.
Фактически - да. У зебры есть атрибут attr(eq,code).

Код: sql
1.
2.
3.
4.
?- field(eq,code).
true .

?-


Но после нажатия enter получаю ответ true - и input блокируется ожидая что я еще раз нажму ENTER.

И после этого печатается символ "." и я система показывает промпт к следующему вопросу.

Как отключить этот эффект?
...
Рейтинг: 0 / 0
06.11.2019, 19:25
    #39885964
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
Хм.. Как distinct сделать?

Много фактов подходят под поиск. Мне надо комактный отчот получить.
...
Рейтинг: 0 / 0
07.11.2019, 14:51
    #39886242
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
maytonКак такое записать на прологе?

Лучше никак. Prolog давно не существует и никогда не имел практического применения.
Узнайте, какие современные программные средства подойдут для вашей задачи.
...
Рейтинг: 0 / 0
07.11.2019, 14:56
    #39886247
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
Теоретически подходят графовые БД. Типа SPARQL.
Но запросы к таким системам писать 3.14дец как неудобно.

Пролог привлекает лаконичностью.
...
Рейтинг: 0 / 0
09.11.2019, 09:54
    #39887005
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
mayton


Пролог привлекает лаконичностью.

первые две недели, пролог менятоже привлекал лаконичностью, но потом выработали во мне стойкое убеждение, что чтолибо длиннее 100 строчек на нем, невозможно отладить
...
Рейтинг: 0 / 0
22.11.2019, 21:18
    #39893168
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
А ларчик то просто открывался. Distinct он и в Африке distinct.

https://www.swi-prolog.org/pldoc/man?predicate=distinct/1

Код: sql
1.
2.
3.
4.
distinct(Goal) :-
    findall(Goal, Goal, List),
    list_to_set(List, Set),
    member(Goal, Set).
...
Рейтинг: 0 / 0
23.11.2019, 17:32
    #39893380
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
Еще поинт.

Есть у меня один могильничек исходничек (3.5 тысячи строк). Он содержит базу фактов онтологии крупной инфо-системы.
База - получена искусственно мной путем переноса мета-данных из прикладной системы в prolog.

Собсно что я хочу. Я хочу, посмотрев примеры экспертных систем на Прологе построить несколько своих
сценариев диалога когда пользователь что-то спрашивает у система а она ему отвечает.
Насполько я понял - запрашивается цель (goal).

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

Что предполагается хранить.
- провайдеры
- equities
- dept (bond)
- company/ownership (и атрибуты)
- indices
- measures (факты верхнего уровня)
- куча всякой технгической инфы по мета-дате. А имеено из какого поля
какого провайдера инфа въехала в систему. Формат. Тип (если дата - то какой
формат. Если валюта то какая. Если страна то какая).

Что предполагается извлекать. Хм. Над этим я щас думаю. Онтология предполагает знание фактов верхнего уровня.
Тоесть я не буду хранить сведенья по конкретной акции а скорее буду информировать о том как вообще эта акция
заехала в систему. Из какого провайдера.

На задание пока нету сроков. Это investigation по возможностям.
...
Рейтинг: 0 / 0
25.11.2019, 23:56
    #39894210
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое записать на прологе?
Чорт с ними с провайдерами. Пока не хватает сноровки. Особенно с тривиальными вопросами.
Отладка и ввод вывод.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как такое записать на прологе? / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]