This paper introduces a distributed object oriented logic programming language, DK Parlog , in which each object, in addition to the normal procedural methods for accessing and updating state components, also has knowledge methods in the form of Prolog rules. The language is an OO extension of a distributed, multi-threaded, logic programming system. Encapsulation is by class definitions linked via single inheritance. Procedural method invocation is via asynchronous message send to the unique object identifier. Knowledge method invocation is via synchronous remote procedure call.
Classes are also objects - they have their own state components and methods.
The knowledge methods can be public or private, and can be dynamically modified by the procedural methods of the object using Prolog style knowledge base manipulation primitives. The dynamic knowledge of an object can be used as a declarative representation of part of its state. This paper assumes some familiarity with concepts of concurrent object oriented programming and logic programming, ideally concurrent logic programming, but familiarity with Prolog will probably suffice.