Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
 Как такое записать на прологе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42891
Пишу сведенья по метатадам и провадерам в свой файлик. Такой себе свод знаний. Ну не просто текстовый файлик
а такой чтоб впоследствии можно было какой-то вопрос задать и получить ответ.

Провайдеры:
provider(zebra).
provider(begemot).
provider(donkey).

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

Рулы.

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

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


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

Вот как такое описать? Или лучше в виде 1 правила.
30 окт 19, 11:20    [22005814]     Ответить | Цитировать Сообщить модератору
 Re: Как такое записать на прологе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42891
Вместо того чтоб описывать факты.

primarysource(zebra, oracle).
primarysource(begemot, S3).
primarysource(donkey, S3).
.... тут еще куча однотипных будет....
30 окт 19, 18:35    [22006432]     Ответить | Цитировать Сообщить модератору
 Re: Как такое записать на прологе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42891
Как AND задать?

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

|: 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
|:
1 ноя 19, 18:49    [22008396]     Ответить | Цитировать Сообщить модератору
 Re: Как такое записать на прологе?  [new]
ZyK_BotaN
Member

Откуда: Новгород-Северский
Сообщений: 107750
mayton
Как AND задать?

емнип. ЭНД - через запятую.
ОР - через точку с запятой.

но лет 7 как пролога не видел, могу путать.
1 ноя 19, 21:14    [22008497]     Ответить | Цитировать Сообщить модератору
 Re: Как такое записать на прологе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42891
О. Шикарно. Проверю чуть позже. Щас с телефона.
1 ноя 19, 21:56    [22008515]     Ответить | Цитировать Сообщить модератору
 Re: Как такое записать на прологе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42891
Да. Так работает.

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?
2 ноя 19, 13:10    [22008682]     Ответить | Цитировать Сообщить модератору
 Re: Как такое записать на прологе?  [new]
tchingiz
Member

Откуда:
Сообщений: 34534
mayton,
Вот это с тобой приключилось, прямо нет слов.
2 ноя 19, 23:12    [22008874]     Ответить | Цитировать Сообщить модератору
 Re: Как такое записать на прологе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42891
Не переживай. Это - факультатив и нет deadlines.
2 ноя 19, 23:19    [22008876]     Ответить | Цитировать Сообщить модератору
 Re: Как такое записать на прологе?  [new]
tchingiz
Member

Откуда:
Сообщений: 34534
Ок, денег, упс, ответов нет, но ты крепись
Я уже с 93 года в пролог ни ногой
2 ноя 19, 23:34    [22008879]     Ответить | Цитировать Сообщить модератору
 Re: Как такое записать на прологе?  [new]
dimonz80
Member

Откуда:
Сообщений: 200
каноничная книженция
3 ноя 19, 13:50    [22009004]     Ответить | Цитировать Сообщить модератору
 Re: Как такое записать на прологе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42891
Уже вот чисто по SWI-prolog.

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

field(X, Y) :- attr(X, Y) ;  dim(X, Y) ;  prop(X, Y).


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

?- field(eq,code).
true .

?-

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

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

Как отключить этот эффект?
5 ноя 19, 15:17    [22010001]     Ответить | Цитировать Сообщить модератору
 Re: Как такое записать на прологе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42891
Хм.. Как distinct сделать?

Много фактов подходят под поиск. Мне надо комактный отчот получить.
6 ноя 19, 19:25    [22011062]     Ответить | Цитировать Сообщить модератору
 Re: Как такое записать на прологе?  [new]
Partisan M
Member

Откуда:
Сообщений: 1378
mayton
Как такое записать на прологе?


Лучше никак. Prolog давно не существует и никогда не имел практического применения.
Узнайте, какие современные программные средства подойдут для вашей задачи.
7 ноя 19, 14:51    [22011583]     Ответить | Цитировать Сообщить модератору
 Re: Как такое записать на прологе?  [new]
mayton
Member

Откуда: loopback
Сообщений: 42891
Теоретически подходят графовые БД. Типа SPARQL.
Но запросы к таким системам писать 3.14дец как неудобно.

Пролог привлекает лаконичностью.
7 ноя 19, 14:56    [22011589]     Ответить | Цитировать Сообщить модератору
 Re: Как такое записать на прологе?  [new]
tchingiz
Member

Откуда:
Сообщений: 34534
mayton


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

первые две недели, пролог менятоже привлекал лаконичностью, но потом выработали во мне стойкое убеждение, что чтолибо длиннее 100 строчек на нем, невозможно отладить
9 ноя 19, 09:54    [22012680]     Ответить | Цитировать Сообщить модератору
Все форумы / Программирование Ответить