NET-CLAUSE LANGUAGE (NCL) Written by Zdravko Markov, Bulgarian Academy of Sciences Shelved on 20th August, 1993 Net-Clause Language (NCL) ========================= NCL is aimed at describing distributed computation models using term unification as a basic processing and control mechanism. NCL is embedded in standard Prolog and comprises two parts, which can communicate each to other and to standard Prolog programs through the unified representation of terms, the unification procedure and the database mechanism provided by Prolog. Unlike most of the entries in this library, NCL is not purely a Prolog program. Instead, it is an augmented Prolog interpreter written in C, together with some Prolog library routines. So you need C in order to run NCL. 1. Net-Clauses -------------- A net-clause is a special domain in the database defining a network of nodes and links. The nodes are represented by Prolog compound terms. The variables occurring within the nodes are global logical variables, which can be shared within the scope of the net-clause thus playing the role of network links. The net-clause nodes define local conditions for unification of terms or execution of Prolog goals. Thus two basic mechanisms are implemented: - Spreading activation. This is a distributed computation scheme similar to the connectionist spreading activation or to the marker passing mechanism in SN's. In the framework of logic programming it is seen as a restricted (without recursion) forward chaining computation. - Default mechanism similar to the Reiter's default assignment to variables. The basic idea is to use variables to propagate terms without being bound to them, thus implementing the non-monotonicity of default reasoning. 2. Data-driven Rules (DD-rules) ------------------------------- DD-rules implement a full scale forward chaining for logic programs. They also simulate a data-driven parallel computation, where each DD-rule is a process (in contrast to the traditional parallel logic programming, such as PARLOG for example, where each goal is a process). NCL/Prolog Interpreter ====================== NCL/Prolog interpreter is supplied in C-code for UNIX along with a reference manual and a set of annotated examples. The rest example programs each contain detailed comments, and are as follows: NLP - Natural language parsing and semantic analysis DEFAULT - NL parsing by using NCL default mechanism GRAMMAR - Grammar rules by DD-rules MP - Marker passing in semantic nets CIRCUIT - Model-based diagnosis of a binary adder QUEENS - 4-queens problem as a network of communicating agents FIG - Recognition of geometric figures XOR - Connectionist-like implementation of XOR PIXEL - Connectionist-like feature detection in a binary image FLATTEN - Stream AND-parallelism in DD-rules DDIL - Data-driven inductive learning in a network of relations FAMILY - Set of training examples for DDIL Address for further information =============================== Zdravko Markov Institute of Informatics, Bulgarian Academy of Sciences Acad.G.Bonchev Street, Block 29A, 1113 Sofia, Bulgaria Tel: +359-2-707586 Fax: +359-2-720166 Email: markov@iinf.bg SIZE: 210 kilobytes. CHECKED ON STANDARD C : no. PORTABILITY : Haven't had time to check. INTERNAL DOCUMENTATION : No comments in the C source code. The user manual gives some idea of how the NCL-specific parts of the interpreter work, but you will need to know how Prolog interpreters are implemented to understand the source properly.