문제
많이 생각하지 않고, 많은 Prolog의 기능 세트가 관계형 미적분학 (일명 SQL)으로 구현 될 수 있습니다.
프롤로그를 SQL로 자동 변환하는 도구에 대해 들어 본 사람이 있습니까?
해결책
추천 :
https://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/prolog/code/io/pl2sql/0.html
내 조언- Eclipse Prolog (http://www.eclipseclp.org/) (여기서는 (여기) Eclipse IDE에서 Prolog와 혼동되지 않음)를 사용하십시오.
나는 4 개의 다른 프롤로그 (!)에서 코드를 컴파일하고 일식에서 컴파일하기 위해 코드를 컴파일하는 데 몇 시간을 보냈습니다.
그것이 효과가있을 때, 그것은 아름다움의 것입니다.
물론 Herr Draxler에게 신용
다른 팁
물론이죠.
회의론자에 대한 전제 : 데이터베이스 이론에 관한 반세기 책 언급 데이터 로그 (이는 프롤로그와 유사하다)와 이론이 관계형 대수 (RA)로/로 변환 할 수 있음을 보여줍니다 (특정 제한에 따라).
SQL은 RA 또는 관계형 미적분학에 충실하지 않지만 Prolog를 지원하기에 충분합니다.
- Christoph Draxler 그의 논문을 위해 Prolog to SQL 컴파일러 (PL2SQL)를 개발했습니다. 다운로드 할 수 있습니다 (.tgz) - 여기에 CMU 인공 지능 저장소 (적응하고 적어도 포함되었습니다. Ciao Prolog 그리고 Swi-Prolog ~을 통해 Blipkit- 생물 의학 논리 프로그래밍 지식 통합 키트);
- Igor Wojnicki는 박사 학위를 위해 개발했습니다 (관계형 데이터베이스 관리 시스템의 지식 처리 기능을 확장하는 규칙 기반 추론 엔진) 그의 프로토 타입 시스템 젤리 뷰 기술 ~라고 불리는 Redares, 그러나 다운로드 할 수없는 것 같습니다.
- 관계형 추상 기계 (RAM) Prolog를 관계형 대수로 번역하지만 SQL 백엔드가없는 것 같습니다.
- 월터 D. 포터가 있습니다 몇 가지 논문 Prolog/RDBMS 통합에;
- Kevin Boone의 논문 대형 데이터베이스로 성능을 향상시키기 위해 Prolog와 함께 SQL 사용 또한 흥미 롭습니다.
- 등등...
매핑은 그리 좋지 않습니다. 예를 들어 SQL은 역 추적, 통일, 목록 또는 ADHOC 중첩 구조를 수행하지 않습니다.
Prolog는 복합 객체, 인덱스 등을 잘 다루지 않습니다.
나는 그것이 아니라고 말하고 싶습니다.
Prolog에서 SQL 쿼리를 수행하는 것이 더 합리적이며 Prolog Facts로 번역 될 수 있습니다. 예를 들어 Prolog ODBC 라이브러리
이것은 모든 제한을 제거하고 두 언어를 적절한 장소로 분리시킵니다.
나 번역가를 썼습니다 이는 프롤로그의 서브 세트를 SQL 사용자 정의 함수로 변환합니다.
Prolog 의이 술어는 SQL로 변환 될 수 있습니다.
is_between(A,B,C) :-
A<B,B<C.
이것은 MySQL 함수로서 번역기의 출력입니다.
CREATE FUNCTION is_between(A double,B double,C double) RETURNS BIT BEGIN
RETURN A>B and B>C;
END
마찬가지로 a가 있습니다 Prolog-to-SQL 컴파일러 SWI-PROLOG의 컴파일러 및 다른 번역가 이로 인해 Datalog의 비 수수선 하위 집합을 SQL로 변환합니다.