Создать базу знаний Prolog на Java с использованием JPL

Я пытаюсь разобраться в библиотеке интерфейса Java-Prolog JPL. Я могу найти множество примеров, когда люди используют пролог запрос из Java для получения информации из базы знаний, но нет примеров, когда база знаний строится динамически в Java. Как бы я это сделал?

Интересно, что вы об этом спрашиваете. В настоящее время я работаю над анализом плоского файла с использованием Prolog DCG, а затем использую JPL для вызова встроенной Java, чтобы добавить информацию из плоского файла в базу данных Neo4j. По моим оценкам, мне потребуется около недели, прежде чем я начну использовать JPL. Хотя моя цель не совпадает с вашей целью, и в зависимости от вашей цели может быть как раз наоборот. Я буду помнить об этом вопросе, когда доберусь до JPL, поскольку создание примера для вашего случая должно быть легким, когда у меня будет свое решение.

Guy Coder 24.01.2019 06:21

Это было бы очень здорово, спасибо! Я считать Я использую статические методы класса Prolog, чем больше я смотрю на это, но это так странно, что у меня нет соответствующих примеров для работы.

Dylan Knowles 24.01.2019 06:26

Когда вы говорите knowledge base is constructed dynamically in Java, вы не говорите, где находятся данные. Вы имеете в виду: 1. Данные (факты) находятся в Прологе, а Java вызывает Пролог для получения данных. 2. Данные не являются фактами Пролога и что для доступа к данным необходимо получить доступ к ним через Java для использования с Прологом?

Guy Coder 24.01.2019 06:26

Я хочу, чтобы Java сказала Прологу: «Вот атом. Он ссылается на объект/JRef. Пожалуйста, запомните это. Я упоминал, что у меня есть правило, которое ссылается на этот атом? Помните и об этом». Итак, я хочу использовать вызовы методов Java для создания базы знаний, к которой в конечном итоге буду обращаться.

Dylan Knowles 24.01.2019 06:29

Из любопытства, знаете ли вы о Нео4дж? Это база данных Без SQL и, в частности, граф базы данных. Для моих целей мне нужно хранить большие объемы связанных данных, от 10 до 100 гигабайт, и быстро искать серии отношений. Хотя я мог бы использовать для этого факты Пролога, я не знаю, выдержит ли Пролог такое количество данных и сколько времени займут запросы.

Guy Coder 24.01.2019 06:40

Увидел, что JRef равен устарел

Guy Coder 24.01.2019 07:33

Представляет интерес: каталог JPL Примеры

Guy Coder 24.01.2019 07:40

Пролог имеет странное сходство с моим вариантом использования, поэтому я исследую его. Однако посмотрю на neo4j!

Dylan Knowles 24.01.2019 07:47

Почему бы не использовать предикаты для управления базой данных: swi-prolog.org/pldoc/man?section=dynpreds Вы можете оценить их из Java, как и любой другой запрос. Или я упускаю вашу мысль?

User9213 24.01.2019 11:36

@ User9213 User9213 Я вызываю методы из Java во время работы Java-программы, поэтому я не могу использовать интерпретатор Prolog или читать готовый файл. В main(), например, у меня был бы такой вызов, как Predicate p = addPredicate(...);. Думаю, я нашел способ сделать это, но теперь я застрял в работе с исключениями нарушения прав доступа с помощью SWI-Prolog:/

Dylan Knowles 24.01.2019 23:24

Если я найду время, я попытаюсь написать реальный ответ, но сначала мне нужно будет настроить JPL.... А пока попробуйте оценить следующий запрос Prolog из Java: ?- assertz(a(1)).. Затем попробуйте запросить в том же экземпляре Prolog ?- a(X). Если вы получаете 1, это означает, что вам удалось динамически добавить факт в базу данных Prolog из Java.

User9213 25.01.2019 09:50
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
11
405
0

Другие вопросы по теме