Skip to main content Accessibility help
Hostname: page-component-684bc48f8b-cvrnb Total loading time: 0.497 Render date: 2021-04-11T13:15:48.325Z Has data issue: true Feature Flags: { "shouldUseShareProductTool": true, "shouldUseHypothesis": true, "isUnsiloEnabled": true, "metricsAbstractViews": false, "figures": false, "newCiteModal": false, "newCitedByModal": true }


Published online by Cambridge University Press:  12 September 2011

Faculty of Sciences, Computer Science, VU University Amsterdam, De Boelelaan 1081a, 1081 HV Amsterdam, The Netherlands (e-mail:
Department of Applied Mathematics and Computer Science, Ghent University, Krijgslaan 281 S9, 9000 Gent, Belgium (e-mail:
Institut für Informationssysteme 184/2, Technische Universität Wien, Abteilung für Datenbanken und Artificial Intelligence, Favoritenstraße 9, A-1040 Wien, Austria (e-mail:
Department of Philosophy, Linguistics and Theory of Science, University of Gothenburg, Box 200, S-40530 Göteborg (e-mail:


SWI-Prolog is neither a commercial Prolog system nor a purely academic enterprise, but increasingly a community project. The core system has been shaped to its current form while being used as a tool for building research prototypes, primarily for knowledge-intensive and interactive systems. Community contributions have added several interfaces and the constraint (CLP) libraries. Commercial involvement has created the initial garbage collector, added several interfaces and two development tools: PlDoc (a literate programming documentation system) and PlUnit (a unit testing environment).

In this article, we present SWI-Prolog as an integrating tool, supporting a wide range of ideas developed in the Prolog community and acting as glue between foreign resources. This article itself is the glue between technical articles on SWI-Prolog, providing context and experience in applying them over a longer period.

Regular Papers
Copyright © Cambridge University Press 2011

Access options

Get access to the full version of this content by using one of the access options below.


Ambler, S. W. 2002. Mapping objects to relational databases: What you need to know and why IBM developerWorks. Accessed 16 August 2011. URL: Scholar
Anjewierden, A., Wielemaker, J. and Toussaint, C. 1990. Shelley – computer aided knowledge engineering. In Current Trends in Knowledge Acquisition, Wielinga, B., Boose, J., Gaines, B., Schreiber, G. and van Someren, M., Eds. IOS Press, Amsterdam, 4159.Google Scholar
Appleby, K., Carlsson, M., Haridi, S. and Sahlin, D. 1988. Garbage collection for Prolog based on WAM. Communications of the ACM 31 (6), 719741.CrossRefGoogle Scholar
Bellifemine, F., Poggi, A. and Rimassa, G. 2001. Developing multi-agent systems with a FIPA-compliant agent framework. Softw: Practice and Experience 31 (2), 103128.Google Scholar
Bendisposto, J., Endrijautzki, I., Leuschel, M. and Schneider, D. 2009. A semantics-aware editing environment for Prolog in Eclipse. CoRR. Accessed 17 August 2011. URL: Scholar
Bowen, D. L., Byrd, L. M. and Clocksin, W. 1983. A portable Prolog compiler. In Proc. Logic Programming Workshop '83, Pereira, L. M., Ed. Universidade Nova de Lisboa, Lisbon, Portugal.Google Scholar
Calejo, M. 2004. Interprolog: Towards a declarative embedding of logic programming in Java. In Proc. JELIA, Alferes, J. J. and Leite, J. A., Eds. Lecture Notes in Computer Science, vol. 3229. Springer-Verlag, Berlin, Germnay, 714717.Google Scholar
da Silva, A. F. and Costa, V. S. 2007. Design, implementation, and evaluation of a dynamic compilation framework for the YAP system. In Proc. ICLP, Dahl, V. and Niemelä, I., Eds. Lecture Notes in Computer Science, vol. 4670. Springer-Verlag, Berlin, Germany, 410424.Google Scholar
De Koninck, L., Schrijvers, T. and Demoen, B. 2006. INCLP() – Interval-based nonlinear constraint logic programming over the reals. In WLP '06: Proc. 20th Workshop on Logic Programming, Fink, M., Tompits, H. and Woltran, S., Eds. T.U.Wien, Austria, INFSYS Res. Rep. 1843-06-02. Vienna, Austria, 91100.Google Scholar
Demoen, B. 2002. Dynamic Attributes, Their hProlog Implementation, and a First Evaluation. Rep. CW 350. Department of Computer Science, K.U. Leuven, Leuven, Belgium. October. Accessed 16 August 2011. URL: Scholar
Draxler, C. 1991. Accessing relational and NF 2 databases through database set predicates. In ALPUK91: Proc. 3rd UK Annual Conference on Logic Programming, Edinburgh, UK, Wiggins, G. A., Mellish, C., and Duncan, T., Eds. Workshops in Computing. Springer-Verlag, Berlin, Germany, 156173.Google Scholar
Frühwirth, T. 1998. Theory and practice of constraint handling rules. Journal of Logic Programming, Special Issue on Constraint Logic Programming 37 (1–3), 95138.Google Scholar
Graham, S. L., Kessler, P. B. and McKusick, M. K. 1982. gprof: A call graph execution profiler. In Proc. SIGPLAN Symposium on Compiler Construction. ACM, New York, USA, 120126. Accessed 17 August 2011. URL: Scholar
Holzbaur, C. 1992. Metastructures vs. Attributed Variables in the Context of Extensible Unification. Tech. Rep. TR-92-23, Austrian Research Institute for Artificial Intelligence, Vienna, Austria.Google Scholar
Holzbaur, C. and Frühwirth, T. 2000. A Prolog constraint handling ules compiler and runtime system. Journal of Applied Artificial Intelligence, 14 (4), 369388.CrossRefGoogle Scholar
Lassila, O. and Swick, R. R. 1999. Resource description framework (RDF) model and specification. Recommendation, W3C Consortium. 22 February. URL: Scholar
Neumerkel, U. 1993. The Binary WAM, a Simplified Prolog Engine. Tech. Rep., Technische Universität Wien, Wien, Germany. URL: Scholar
Oren, E., Delbru, R., Gerke, S., Haller, A. and Decker, S. 2007. Activerdf: Object-oriented semantic web programming. In WWW '07: Proc. 16th International Conference on World Wide Web. ACM, New York, NY, USA, 817824.CrossRefGoogle Scholar
Pereira, F. C. N. and Shieber, S. M. 1987. Prolog and Natural-Language Analysis. Number 10 in CSLI Lecture Notes. Center for the Study of Language and Information, Stanford, CA. Chicago University Press, Chicago, IL.Google Scholar
Raymond, E. S. 1999. Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary. O'Reilly Media, Sebastopol, CA.Google Scholar
Schrijvers, T. 2005. Analyses, Optimizations and Extensions of Constraint Handling Rules. Ph.D. thesis, K.U. Leuven, Leuven, Belgium.Google Scholar
Schrijvers, T., Costa, V. S., Wielemaker, J. and Demoen, B. 2008. Towards typed Prolog. In Proc. ICLP, de la Banda, M. G. and Pontelli, E., Eds. Lecture Notes in Computer Science, vol. 5366. Springer-Verlag, Berlin, Germany, 693697.Google Scholar
Schrijvers, T. and Demoen, B. 2004. The K.U.Leuven CHR system: Implementation and application. In Proc. CHR '04, Selected Contributions, Frühwirth, T. and Meister, M., Eds. Universität Ulm, Fakultät für Informatik, Ulm, Germany, 812.Google Scholar
Schrijvers, T. and Warren, D. S. 2004. Constraint handling rules and tabled execution. In Proc. ICLP '04, Saint-Malo, France, Demoen, B. and Lifschitz, V., Eds. Lecture Notes in Computer Science, vol. 3132. Springer-Verlag, Berlin, 120136.Google Scholar
Schrijvers, T., Wielemaker, J. and Demoen, B. 2005. Poster: Constraint handling rules for SWI-Prolog. In W(C)LP '05: Proc. 19th Workshop on (Constraint) Logic Programming, Wolf, A., Frühwirth, T., and Meister, M., Eds. Ulmer Informatik-Berichte, vol. 2005-01. Universität Ulm, Ulm, Germany.Google Scholar
Szabó, P. and Szeredi, P. 2006. Improving the ISO Prolog standard by analyzing compliance test results. In Proc. ICLP, Etalle, S. and Truszczynski, M., Eds. Lecture Notes in Computer Science, vol. 4079. Springer-Verlag, Berlin, Germany, 257269.Google Scholar
Tarau, P. 2008. Logic engines as interactors. CoRR. Accessed 17 August 2011. URL: Scholar
Triska, M., Neumerkel, U. and Wielemaker, J. 2009. Better termination for Prolog with constraints. CoRR. WLPE 2009, Udine, Italy. Accessed 17 August 2011. URL: Scholar
Wallace, M. and Schimpf, J. 1999. Eclipse: Declarative specification and scaleable implementation. In Proc. PADL, Gupta, G., Ed. Lecture Notes in Computer Science, vol. 1551. Springer, Berlin, Germany, 365366.Google Scholar
Wielemaker, J. 2003. Native preemptive threads in SWI-Prolog. In Practical Aspects of Declarative Languages, Palamidessi, C., Ed. Lecture Notes in Computer Science, vol. 1551. Springer-Verlag, Berlin, Germany, 331345.Google Scholar
Wielemaker, J. and Anjewierden, A. 2002. An architecture for making object-oriented systems available from Prolog. In Proc. WLPE. 97–110. Accessed 17 August 2011. URL: Scholar
Wielemaker, J. and Anjewierden, A. 2007. PlDoc: Wiki style literate programming for Prolog. In Proc. 17th Workshop on Logic-Based Methods in Programming Environments, Hill, P. and Vanhoof, W., Eds. 16–30. Accessed 17 August 2011. URL: Scholar
Wielemaker, J., Hildebrand, M., van Ossenbruggen, J. and Schreiber, G. 2008. Thesaurus-based search in large heterogeneous collections. In Proc. International Semantic Web Conference, Sheth, A. P., Staab, S., Dean, M., Paolucci, M., Maynard, D., Finin, T. W., and Thirunarayan, K., Eds. Lecture Notes in Computer Science, vol. 5318. Springer-Verlag, Berlin, Germany, 695708.Google Scholar
Wielemaker, J., Huang, Z. and van der Meij, L. 2008. SWI-Prolog and the web. Theory and Practice of Logic Programming 8 (3), 363392.CrossRefGoogle Scholar
Wielemaker, J. and Neumerkel, U. 2008. Precise garbage collection in Prolog. In Proc. CICLOPS '08. Linares, Manuel Carro and Demoen, Bart, Eds. Udine, Italy. Accessed 12 and 13 December 2008. URL: Scholar
Wielemaker, J., Schreiber, G. and Wielinga, B. 2003. Prolog-based infrastructure for RDF: Performance and scalability. In Semantic Web – Proc. ISWC '03, Sanibel Island, FL, Fensel, D., Sycara, K., and Mylopoulos, J., Eds. Lecture Notes in Computer Science, vol. 2870. Springer-Verlag, Berlin, Germany, 644658.Google Scholar

Full text views

Full text views reflects PDF downloads, PDFs sent to Google Drive, Dropbox and Kindle and HTML full text views.

Total number of HTML views: 0
Total number of PDF views: 222 *
View data table for this chart

* Views captured on Cambridge Core between September 2016 - 11th April 2021. This data will be updated every 24 hours.

Send article to Kindle

To send this article to your Kindle, first ensure is added to your Approved Personal Document E-mail List under your Personal Document Settings on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part of your Kindle email address below. Find out more about sending to your Kindle. Find out more about sending to your Kindle.

Note you can select to send to either the or variations. ‘’ emails are free but can only be sent to your device when it is connected to wi-fi. ‘’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.

Find out more about the Kindle Personal Document Service.

Available formats

Send article to Dropbox

To send this article to your Dropbox account, please select one or more formats and confirm that you agree to abide by our usage policies. If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your <service> account. Find out more about sending content to Dropbox.

Available formats

Send article to Google Drive

To send this article to your Google Drive account, please select one or more formats and confirm that you agree to abide by our usage policies. If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your <service> account. Find out more about sending content to Google Drive.

Available formats

Reply to: Submit a response

Your details

Conflicting interests

Do you have any conflicting interests? *