Theory and Practice of Logic Programming

Regular Papers

SWI-Prolog and the web

JAN WIELEMAKERa1, ZHISHENG HUANGa2 and LOURENS VAN DER MEIJa2

a1 Human-Computer Studies Laboratory, University of Amsterdam, Matrix I, Kruislaan 419, 1098 VA, Amsterdam, The Netherlands (e-mail: wielemak@science.uva.nl)

a2 Computer Science Department, Vrije University Amsterdam, De Boelelaan 1081a, 1081 HV, Amsterdam, The Netherlands (e-mail: huang@cs.vu.nl, lourens@cs.vu.nl)

Abstract

Prolog is an excellent tool for representing and manipulating data written in formal languages as well as natural language. Its safe semantics and automatic memory management make it a prime candidate for programming robust Web services. Although Prolog is commonly seen as a component in a Web application that is either embedded or communicates using a proprietary protocol, we propose an architecture where Prolog communicates to other components in a Web application using the standard HTTP protocol. By avoiding embedding in external Web servers, development and deployment become much easier. To support this architecture, in addition to the transfer protocol, we must also support parsing, representing and generating the key Web document types such as HTML, XML and RDF. This article motivates the design decisions in the libraries and extensions to Prolog for handling Web documents and protocols. The design has been guided by the requirement to handle large documents efficiently. The described libraries support a wide range of Web applications ranging from HTML and XML documents to Semantic Web RDF processing. The benefits of using Prolog for Web-related tasks are illustrated using three case studies.

(Received April 28 2006)

(Revised August 23 2007)

(Accepted October 18 2007)

KEYWORDS:

  • Prolog;
  • HTTP;
  • HTML;
  • XML;
  • RDF;
  • DOM;
  • Semantic Web