Table of Contents


SWISH is inspired by web-based tools such as JSFIDDLE in that it allows you to develop a program and then share it with others on the Web. Besides sharing basic Prolog code fragments, we see several opportunities for deploying SWISH:

Supported browsers

SWISH works fine recent versions of in Safari, Firefox, Chrome and Internet Explorer (tested IE 11).

Adding SWISH to your application

SWISH can be added easily to any SWI-Prolog web application. For example, it is available as an extension pack for ClioPatria, the SWI-Prolog RDF framework. It can be added to ClioPatria using the command below, providing an alternative for SPARQL for exploring the database (requires SWI-Prolog 7.1.32 or later).

?- cpack_install(swish).


SWISH is implemented as a set of jQuery plugins, using Bootstrap for menus, modal windows and various styling aspects. SWISH uses CodeMirror for editing the Prolog source and query. Queries are executed by sending both the source text (left editor) and query (bottom-right editor) to the server, which creates a Pengine (Prolog Engine) to execute the query.

Pengines have many other applications, such as supporting Prolog RPC (Remote Procedure Calls, which allows you to execute a query fully transparent, including backtracking, on a remote server. An interesting aspect is that they provide a generic query language on top of an arbitrary Prolog program that can be used from JavaScript. A demo is available

Source code

The source code for SWISH is available on GitHub.