powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как такое записать на прологе?
18 сообщений из 18, страница 1 из 1
Как такое записать на прологе?
    #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
Как такое записать на прологе?
    #39883273
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо того чтоб описывать факты.

Код: python
1.
2.
3.
4.
primarysource(zebra, oracle).
primarysource(begemot, S3).
primarysource(donkey, S3).
.... тут еще куча однотипных будет....
...
Рейтинг: 0 / 0
Как такое записать на прологе?
    #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
Как такое записать на прологе?
    #39884516
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКак AND задать?
емнип. ЭНД - через запятую.
ОР - через точку с запятой.

но лет 7 как пролога не видел, могу путать.
...
Рейтинг: 0 / 0
Как такое записать на прологе?
    #39884527
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О. Шикарно. Проверю чуть позже. Щас с телефона.
...
Рейтинг: 0 / 0
Как такое записать на прологе?
    #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
Как такое записать на прологе?
    #39884684
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Вот это с тобой приключилось, прямо нет слов.
...
Рейтинг: 0 / 0
Как такое записать на прологе?
    #39884685
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не переживай. Это - факультатив и нет deadlines.
...
Рейтинг: 0 / 0
Как такое записать на прологе?
    #39884687
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, денег, упс, ответов нет, но ты крепись
Я уже с 93 года в пролог ни ногой
...
Рейтинг: 0 / 0
Как такое записать на прологе?
    #39884753
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Как такое записать на прологе?
    #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
Как такое записать на прологе?
    #39885964
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм.. Как distinct сделать?

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

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

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


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

первые две недели, пролог менятоже привлекал лаконичностью, но потом выработали во мне стойкое убеждение, что чтолибо длиннее 100 строчек на нем, невозможно отладить
...
Рейтинг: 0 / 0
Как такое записать на прологе?
    #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
Как такое записать на прологе?
    #39893380
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще поинт.

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

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

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

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

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

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


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