- From: Torbjörn Lager <torbjorn.lager@gmail.com>
- Date: Thu, 19 Sep 2019 14:22:55 +0200
- To: public-aikr@w3.org
Dear All, I joined this community group some months ago, but have been lurking up till now. With this message, and in the hope that it may lead to a discussion, I'd like to inform you what I'm working on. It's an approach to AI and KR on the Web which is based on a mixture of the Prolog programming language, the Erlang programming language, and various standard web technologies. A lot of it is based on Prolog - a programming language which I guess at least some of you are at least somewhat familiar with. I'd like to "webize" Prolog, and "rebrand" it as a web logic programming language. Here are two "elevator pitches" that might whet your appetite: Web Prolog - the elevator pitch: Imagine a dialect of Prolog with actors and mailboxes and send and receive - all the means necessary for powerful concurrent and distributed programming. Alternatively, think of it as a dialect of Erlang with logic variables, backtracking search and a built-in database of facts and rules - the means for logic programming, knowledge representation and reasoning. Also, think of it as a web logic programming language. This is what Web Prolog is all about. The Prolog Web - the elevator pitch: Imagine the Web wrapped in Prolog, running on top of a distributed architecture comprising a network of nodes supporting HTTP and WebSocket APIs, as well as web formats such as JSON. Think of it as a high-level Web, capable of serving answers to queries - answers that follow from what the Web "knows". Moreover, imagine it being programmable, allowing Web Prolog source code to flow in either direction, from the client to the node or from the node to the client. This is what the Prolog Web is all about. If you've read this far, you probably want some more flesh on these bones, and perhaps a proof-of-concept implementation to play with. So here, in the order that you should probably look at them, is a list of relevant material: 1. In mid August this year, I went to ICFP in Berlin and presented a paper in the co-located Erlang'19 workshop. Here's the title and an abstract: **Intro to Web Prolog for Erlangers** We describe a programming language called *Web Prolog*. We think of it as a *web programming language*, or, more specifically, as a web *logic* programming language. The language is based on Prolog, with a good pinch of Erlang added. We stay close to traditional Prolog, so close that the vast majority of programs in Prolog textbooks will run without modification. Towards Erlang we are less faithful, picking only features we regard as useful in a web programming language, e.g. features that support concurrency, distribution and inter-process communication. In particular, we borrow features that make Erlang into an *actor programming language*, and on top of these we define the concept of a *pengine* -- a programming abstraction in the form of a special kind of actor which closely mirrors the behaviour of a Prolog top-level. On top of the pengine abstraction we develop a notion of *non-deterministic RPC* and the concept of *the Prolog Web*. The paper is here: https://gup.ub.gu.se/file/207827 2. A first draft of a manual covering the most interesting proposed additions to the ISO Prolog standard: https://raw.githubusercontent.com/Web-Prolog/swi-web-prolog/master/book/web-prolog-predicate-api.pdf 3. Should you want to know more, there is a github repo from which a proof-of-concept implementation can be downloaded and taken for a trail run - and there's a comprehensive tutorial too! The repo is here: https://github.com/Web-Prolog/swi-web-prolog 4. A longer (> 170 pages) manuscript “Web Prolog and the programmable Prolog Web”: https://github.com/Web-Prolog/swi-web-prolog/raw/master/book/web-prolog.pdf The plan is to set up a separate W3C Community Group devoted to this idea in a not-too-distant future. Perhaps a language such as Web Prolog deserves to be standardised by the W3C? What do you think? Questions, comments, etc. are most welcome! Best regards, Torbjörn Lager
Received on Thursday, 19 September 2019 12:23:30 UTC