문제

저는 기능의 일부로 복잡한 논리 규칙 추론을 수행해야 하는 Java 애플리케이션을 개발 중입니다.나는 Java 대신 Prolog나 다른 논리/제약 프로그래밍 언어로 논리 추론을 코딩하고 싶습니다. 결과 코드가 훨씬 더 간단하고 유지 관리가 용이할 것이라고 생각하기 때문입니다.

나는 Prolog에 내장된 Java 구현을 검색한 결과 각각 문서가 거의 없는 수많은 구현을 찾았습니다.내 (보통) 선택 기준은 다음과 같습니다.

  • Java에 삽입 가능해야 합니다(예:외부 프로그램에 대한 기본 설치를 요구하는 대신 내 Java 패키지와 함께 번들로 묶을 수 있습니다.)
  • Java에서 사용할 수 있는 간단한 인터페이스(추론 시작, 결과 검사 및 규칙 추가용)
  • 사용 방법에 대한 최소한 몇 가지 예를 제공하십시오.
  • 반드시 Prolog일 필요는 없지만 위 기준을 갖춘 다른 논리/제약 프로그래밍 언어도 내 요구 사항에 적합할 것입니다.

나에게는 어떤 선택이 있으며 그 선택의 장점과 단점은 무엇입니까?

도움이 되었습니까?

해결책

에 따르면 위키 백과, 다음 버전의 Prolog에는 Java 인터페이스가 있습니다. 나는 그들을 위해 메인 페이지에 연결했습니다.

당신의 검색에 행운을 빕니다!

다른 팁

Swi Prolog 매우 인기있는 구현은 Sicstus와 마찬가지로 Java 인터페이스 JNI를 사용하여 Java 프로세스의 인스턴스를 인스턴스화하는 것보다 쉽습니다. 나는 꽤 오래 전에 C에서 모두 사용했고 추천합니다. 내 사전은 오픈 소스이고 내 경험에서 사실상 구현.

SWI의 Java 인터페이스에 대한 문서는 적합한 것으로 보이며 임베딩 프로세스는 매우 간단합니다.

2년 전에도 똑같은 일을 해야 했어요.나는 사용했다 JPL이라고 불리는 SWI 인터페이스.이를 통해 Prolog 파일을 로드하고 이를 어설션하고 쿼리할 수 있습니다.SWI Prolog를 설치해야 하지만 전혀 문제가 되지 않습니다.SWI 프롤로그는 다양한 플랫폼에서 사용 가능.

또한 Java로 100% 구현되었으며 외부 프로그램이 필요하지 않은 대안도 시도해 보았습니다.모두 버그가 있거나 사용하기 어려웠습니다.시간을 낭비하지 마십시오.

암지 프롤로그 한동안 주변에있었습니다. 나는 그것을 간단히 사용했지만 내장 버전은 사용하지 않았습니다. 그러나 그들은 좋은 문서를 가지고 있으며 지원을 구입할 수 있습니다. 그들은 Java 포트를 가지고 있으므로 볼만한 가치가 있습니다.

LPA는 Java, .NET 등을 포함한 다양한 주류 언어에 프롤로그 엔진을 임베드하는 방법으로 LPA 인텔리전스 서버를 제공합니다.

클라이브

http://www.lpa.co.uk/int.htm

Java로 작성된 두 개의 상업용 프롤로그 : If Computer Japan과 Jekejeke가 Minerva. 둘 다 ISO에 매우 가깝습니다.

Clojure 라이브러리가있는 JVM 기반 LISP와 같은 언어입니다.Core.logic) 지원 논리 및 제약 기반 프로그래밍. Clojure는 또한 Java 클래스를 생성 할 수있는 많은 시설과 Java 코드 작업, 두 언어 사이의 인터 오프는 사소한 일입니다.

당신은 또한 살펴볼 수 있습니다 PROL 엔진 내가 만든. 그것은 당신이 당신의 Java 프로그램에 Prolog를 포함시킬 수 있습니다 (그러나 그것은 그리 빠르지 않습니다).

프로바 3.0 http://www.prova.ws 완성에 가까워졌습니다. 그러나 또 다른 프롤로그뿐만 아니라 프로그래밍 스타일이 혼합되어 있으며, 특히 2 방향 Java 통합, 반응 에이전트 프로그래밍, ESB와의 통합, 워크 플로 로직 및 이벤트 처리에 유용합니다. 이 버전은 0에서 완전히 다시 쓰기 때문에 올빼미 통합과 같은 일부 오래된 기능이 누락되었지만 다음 개정판에서 반환해야합니다.

거기 있습니다 스칼라를위한 미니 칸렌, 이는 마른 해킹 가능하고 현대적인 경적 기반 논리 프로그래밍 언어의 기본 JVM 구현을 제공합니다.

내가 최근에 온 또 다른 가치있는 옵션은 JSETL입니다. 그것은 논리 변수, 통일, 제약 해결 및 비 결정에 대한 지원을받는 Java의 제약 프로그래밍 라이브러리입니다.

http://prmat.math.unipr.it/~gianfr/jsetl/index.html

Java에는 많은 Prolog 구현이 있습니다. 그들은 매우 빠르지 않지만 Java 내에서 사용하기 편리합니다. 예는 다음과 같습니다. tuprolog 또는프롤로그 카페당신은 또한 다음의 주제에 대한 다음 학사 논문을 볼 수 있습니다.Java의 Prolog 프로그램 실행 및 분석.

Paul Tarau 교수가 제공했습니다 그의 페이지 여러 구현

Jinni Prolog

커널 프롤로그

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top