2009-04-07 4 views
12

많은 것을 생각하지 않고도 많은 Prolog 기능을 관계형 연산 (SQL)으로 구현할 수 있다고 생각합니다.프롤로그에서 SQL 변환기

누구든지 Prolog를 SQL로 자동 변환하는 도구에 대해 들었습니까?

+0

아니요, 알고 있지만, 와우 – paxdiablo

+0

:-) 그것에게 주사를 부담하지 않습니다.이 세상에는 여전히 발견의 잠재력이 있습니다! :) –

답변

2

추천하기 :

https://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/prolog/code/io/pl2sql/0.html

내 advice- 사용 이클립스 프롤로그 (http://www.eclipseclp.org/) (안 (여기)는 이클립스 IDE에서 프롤로그와 혼동).

4 개의 다른 프롤로그 (!)에서 컴파일 할 때 코드를 얻으려고 많은 시간을 보냈고 이클립스에서 컴파일하는 데 4 분이 걸렸습니다.

작동하면 아름다움이납니다. 물론 헤르 드락 슬러에

신용

2

매핑이 좋지 않습니다. 예를 들어 SQL은 역 추적, 통일, 목록 또는 중첩 된 구조를 사용하지 않습니다.

프롤로그 등 복합 객체, 인덱스,

나는 그것이 더 - 이동 없습니다 말하고 싶지만 잘 처리하지 않습니다.

+0

OTOH는 임의의 심도 재귀를 모두 피할 수 있습니다. – BCS

+2

역 추적, 통합, 재귀 및 목록이 없으면 전체 프롤로그의 왼쪽. 그리고 당신은 조인과 동일한 클래스를 생성 할 수 없다. 만약 당신이 스스로 생각할 수있는 SQL (쿼리를 작성하는 쿼리)을 작성할 생각이 아니라면 _possible_이지만 ... – MarkusQ

28

예, 물론입니다.

회의론자를위한 전제 : 데이터베이스 이론에 대한 모든 반쯤 책에는 Datalog (Prolog와 유사)과이를 관계형 대수 (RA) (특정 제한 사항 아래)에서 번역 할 수 있음을 입증하는 정리가 나와 있습니다.

SQL 프롤로그 RA 또는 관계 결석에 충실하지 않지만 지원하기 위해 충분하다 :

2

는 그 다음 프롤로그 사실로 변환 할 수 있습니다 프롤로그에서 SQL 쿼리를 수행하기 위해 더 의미가 있습니다. 예 : Prolog ODBC Library

이렇게하면 모든 제한이 제거되고 두 언어가 적절한 위치로 분리됩니다.