سؤال

دون التفكير كثيرا، يبدو لي أن مجموعة كبيرة من وظائف Prolog يمكن تنفيذها كعلاقة حسابية صحي (AKA SQL).

هل سمع أي شخص عن أي أدوات لتحويل prolog تلقائيا إلى 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).

قضيت ساعات في محاولة للحصول على الكود لتجميعها في 4 وصفات أخرى (!) و 4 دقائق لتجميعها في الكسوف.

عندما يعمل، إنه شيء من الجمال.

الائتمان لهير دروسلر بالطبع

نصائح أخرى

نعم طبعا.

فرضية للمتشككين: أي كتاب نصف لائقة حول نظرية قاعدة البيانات يذكر سجل البيانات (وهو ما يشبه البورتالولوجيا) والنظريات التي تظهر من الممكن ترجمةها من / إلى الجبر العلائقية (RA) (بموجب قيود محددة).

SQL ليس مخلصا ل RA أو Calculi العلائقية، ولكن يكفي لدعم Prolog:

الخروبة ليست جيدة جدا. SQL، على سبيل المثال، لا تفعل التراجع أو التوحيد أو القوائم أو الهياكل المتداخلة ADHOC.

Prolog لا يتعامل بشكل جيد مع الكائنات المركبة، الفهارس، إلخ.

أود أن أقول أنها لا تذهب.

من المنطقي إجراء استعلام SQL من Prolog، والتي يمكن بعد ذلك ترجمةها إلى حقائق وصفتولوجية. على سبيل المثال مكتبة prolog odbc

هذا يزيل جميع القيود ويبقي اللغتين مفصولة في أماكنها المناسبة.

أنا كتب مترجم يحول ذلك مجموعة فرعية من Prolog إلى وظائف SQL المعرفة من قبل 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

وبالمثل، هناك بروتوكول بروتوكلي مترجم SWI-PROLOG، و مترجم آخر يحول ذلك مجموعة فرعية غير متكررة من Datalog إلى SQL.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top