2009-04-07 21 views
12

Nếu không suy nghĩ nhiều, có vẻ như với tôi rằng một tập hợp lớn các chức năng của Prolog có thể được thực hiện như tính toán quan hệ (a.k.a. SQL).prolog to SQL converter

Có ai đã nghe về bất kỳ công cụ nào để tự động chuyển đổi Prolog thành SQL không?

+0

Không, tôi không biết về bất kỳ, nhưng cảm thấy tự do để cho nó một shot :-) – paxdiablo

+0

Wow.Có chắc chắn là tiềm năng cho phát hiện, vẫn còn, trong thế giới này! :) –

Trả lời

2

Kiến nghị:

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

tôi sử dụng advice- Eclipse prolog (http://www.eclipseclp.org/) (không (ở đây) nên nhầm với prolog trong eclipse IDE).

Tôi đã dành hàng giờ cố gắng lấy mã để biên dịch trong 4 phần mở đầu khác (!) Và 4 phút để biên dịch trong nhật thực.

Khi nó hoạt động, đó là một điều đẹp.

tín dụng để Herr Draxler tất nhiên

2

Ánh xạ không tốt lắm. SQL, ví dụ, không làm backtracking, thống nhất, danh sách, hoặc cấu trúc lồng nhau adhoc.

Prolog không xử lý tốt với các đối tượng kết hợp, chỉ mục, v.v.

Tôi muốn nói đó là một sự cố.

+0

Tôi không nghĩ rằng bạn sẽ cần backtracking hoặc thống nhất như điều sẽ được tạo ra từ đầu kia (với tham gia) OTOH này sẽ giết tất cả các đệ quy sâu đệ quy – BCS

+2

Nếu không có backtracking, thống nhất, đệ quy, và danh sách không phải là một toàn bộ rất nhiều trái của prolog. Và bạn không thể tạo ra cùng một lớp thứ với các phép nối, trừ khi bạn đang nghĩ đến việc viết SQL tự sửa đổi (các truy vấn xây dựng các truy vấn) mà tôi cho là _possible_ nhưng ... – MarkusQ

28

Có, tất nhiên.

Tiền đề cho người hoài nghi: bất kỳ sách bán phong nha nào về lý thuyết cơ sở dữ liệu đề cập đến Datalog (giống như Prolog) và định lý chứng minh có thể dịch nó sang/từ Đại số quan hệ (RA) (theo giới hạn cụ thể).

SQL là không trung thành với RA hoặc sỏi quan hệ, nhưng là đủ để hỗ trợ Prolog:

2

Nó làm cho ý nghĩa hơn để làm một truy vấn sql từ prolog, mà sau đó có thể được dịch sang sự kiện prolog. ví dụ. Prolog ODBC Library

Điều này sẽ xóa tất cả các hạn chế và giữ hai ngôn ngữ được tách riêng thành địa điểm thích hợp của chúng.