{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,12]],"date-time":"2026-02-12T08:45:53Z","timestamp":1770885953717,"version":"3.50.1"},"reference-count":31,"publisher":"Cambridge University Press (CUP)","issue":"2","license":[{"start":{"date-parts":[[2019,2,15]],"date-time":"2019-02-15T00:00:00Z","timestamp":1550188800000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Theory and Practice of Logic Programming"],"published-print":{"date-parts":[[2019,3]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Programming environments have evolved from purely text based to using graphical user interfaces, and now we see a move toward web-based interfaces, such as Jupyter. Web-based interfaces allow for the creation of interactive documents that consist of text and programs, as well as their output. The output can be rendered using web technology as, for example, text, tables, charts, or graphs. This approach is particularly suitable for capturing data analysis workflows and creating interactive educational material. This article describes SWISH, a web front-end for Prolog that consists of a web server implemented in SWI-Prolog and a client web application written in JavaScript. SWISH provides a web server where multiple users can manipulate and run the same material, and it can be adapted to support Prolog extensions. In this article we describe the architecture of SWISH, and describe two case studies of extensions of Prolog, namely Probabilistic Logic Programming and Logic Production System, which have used SWISH to provide tutorial sites.<\/jats:p>","DOI":"10.1017\/s1471068418000522","type":"journal-article","created":{"date-parts":[[2019,2,15]],"date-time":"2019-02-15T13:31:59Z","timestamp":1550237519000},"page":"229-261","source":"Crossref","is-referenced-by-count":10,"title":["Using SWISH to Realize Interactive Web-based Tutorials for Logic-based Languages"],"prefix":"10.1017","volume":"19","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-5574-5673","authenticated-orcid":false,"given":"JAN","family":"WIELEMAKER","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-1654-9703","authenticated-orcid":false,"given":"FABRIZIO","family":"RIGUZZI","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"ROBERT A.","family":"KOWALSKI","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"TORBJ\u00d6RN","family":"LAGER","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"FARIBA","family":"SADRI","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"MIGUEL","family":"CALEJO","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"56","published-online":{"date-parts":[[2019,2,15]]},"reference":[{"key":"S1471068418000522_ref27","doi-asserted-by":"crossref","unstructured":"Srinivasan, A. , Muggleton, S. , Sternberg, M. J. E. and King, R. D. 1996. Theories for mutagenicity: A study in first-order and feature-based induction. Artificial Intelligence 85, 1\u20132, 277\u2013299.","DOI":"10.1016\/0004-3702(95)00122-0"},{"key":"S1471068418000522_ref26","unstructured":"Srinivasan, A. 2007. Aleph. http:\/\/www.cs.ox.ac.uk\/activities\/machlearn\/Aleph\/aleph.html."},{"key":"S1471068418000522_ref21","first-page":"1381","article-title":"Probabilistic logic programming on the web","volume":"46","author":"Riguzzi","year":"2016","journal-title":"Software: Practice and Experience"},{"key":"S1471068418000522_ref19","volume-title":"Towards Integrative Machine Learning and Knowledge Extraction","author":"Nguembang Fadja","year":"2017"},{"key":"S1471068418000522_ref18","first-page":"539","article-title":"Pengines: Web logic programming made easy","volume":"14","author":"Lager","year":"2014","journal-title":"TPLP"},{"key":"S1471068418000522_ref17","doi-asserted-by":"publisher","DOI":"10.1007\/BF03037383"},{"key":"S1471068418000522_ref15","doi-asserted-by":"publisher","DOI":"10.1007\/s00354-015-0103-z"},{"key":"S1471068418000522_ref14","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/27.2.97"},{"key":"S1471068418000522_ref9","doi-asserted-by":"publisher","DOI":"10.1007\/s10994-015-5510-3"},{"key":"S1471068418000522_ref8","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-44957-4_47"},{"key":"S1471068418000522_ref5","volume-title":"Logic Programming Workshop","author":"Byrd","year":"1980"},{"key":"S1471068418000522_ref31","unstructured":"Worlfram, S. 2016. How to teach computational thinking. http:\/\/blog.stephenwolfram.com\/2016\/09\/how-to-teach-computational-thinking\/."},{"key":"S1471068418000522_ref3","doi-asserted-by":"publisher","DOI":"10.1017\/S1471068413000689"},{"key":"S1471068418000522_ref2","doi-asserted-by":"publisher","DOI":"10.3233\/IDA-130582"},{"key":"S1471068418000522_ref22","doi-asserted-by":"crossref","unstructured":"Riguzzi, F. and Swift, T. 2013. Well-definedness and efficient inference for probabilistic logic programming under the distribution semantics. Theory Pract. Log. Program. 13, Special Issue 02 - 25th Annual GULP Conference (March), Cambridge University Press, 279\u2013302.","DOI":"10.1017\/S1471068411000664"},{"key":"S1471068418000522_ref20","doi-asserted-by":"crossref","first-page":"521","DOI":"10.3233\/FI-2013-847","article-title":"MCINTYRE: A Monte Carlo system for probabilistic logic programming","volume":"124","author":"Riguzzi","year":"2013","journal-title":"Fundamenta Informaticae"},{"key":"S1471068418000522_ref23","volume-title":"Learning IPython for Interactive Computing and Data Visualization","author":"Rossant","year":"2013"},{"key":"S1471068418000522_ref12","volume-title":"Simply Logical: Intelligent Reasoning by Example","author":"Flach","year":"1994"},{"key":"S1471068418000522_ref13","doi-asserted-by":"crossref","DOI":"10.1201\/b15100","volume-title":"Reproducible Research with R and R Studio","author":"Gandrud","year":"2013"},{"key":"S1471068418000522_ref4","volume-title":"Learn Prolog Now!","author":"Blackburn","year":"2006"},{"key":"S1471068418000522_ref1","doi-asserted-by":"publisher","DOI":"10.3233\/IA-170106"},{"key":"S1471068418000522_ref24","unstructured":"Sato, T. 1995. A statistical learning method for logic programs with distribution semantics. In 12th International Conference on Logic Programming, L. Sterling , Ed. MIT Press, Cambridge, MA, 715\u2013729."},{"key":"S1471068418000522_ref11","doi-asserted-by":"publisher","DOI":"10.1017\/S1471068414000076"},{"key":"S1471068418000522_ref7","unstructured":"De Raedt, L. , Kimmig, A. and Toivonen, H. 2007. ProbLog: A probabilistic Prolog and its application in link discovery. In 20th International Joint Conference on Artificial Intelligence, Hyderabad, India (IJCAI-07), M. M. Veloso , Ed., vol. 7. AAAI Press, Palo Alto, California USA, 2462\u20132467."},{"key":"S1471068418000522_ref28","doi-asserted-by":"crossref","unstructured":"Vennekens, J. , Verbaeten, S. and Bruynooghe, M. 2004. Logic programs with annotated disjunctions. In Logic Programming: 20th International Conference, ICLP 2004, Saint-Malo, France, 6\u201310 Sept. 2004. Proceedings, B. Demoen and V. Lifschitz , Eds. LNCS, vol. 3132. Springer, Berlin, Heidelberg, Germany, 431\u2013445.","DOI":"10.1007\/978-3-540-27775-0_30"},{"key":"S1471068418000522_ref10","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-23461-8_37"},{"key":"S1471068418000522_ref25","doi-asserted-by":"publisher","DOI":"10.1145\/5689.5920"},{"key":"S1471068418000522_ref16","doi-asserted-by":"publisher","DOI":"10.1017\/S1471068416000041"},{"key":"S1471068418000522_ref29","first-page":"16","author":"Wielemaker","year":"2007"},{"key":"S1471068418000522_ref6","doi-asserted-by":"publisher","DOI":"10.1007\/s10994-015-5494-z"},{"key":"S1471068418000522_ref30","first-page":"363","article-title":"SWI-prolog and the web","volume":"8","author":"Wielemaker","year":"2008","journal-title":"TPLP"}],"container-title":["Theory and Practice of Logic Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S1471068418000522","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,9,11]],"date-time":"2022-09-11T23:00:45Z","timestamp":1662937245000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S1471068418000522\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,2,15]]},"references-count":31,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2019,3]]}},"alternative-id":["S1471068418000522"],"URL":"https:\/\/doi.org\/10.1017\/s1471068418000522","relation":{},"ISSN":["1471-0684","1475-3081"],"issn-type":[{"value":"1471-0684","type":"print"},{"value":"1475-3081","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019,2,15]]}}}