ObjVProlog-D is an experimental programming language which proposes new ways to integrate object-oriented and distributed programming concepts with Prolog to obtain the benefits of logic programming while overcoming its traditional limitations in areas such as high-level abstraction, structuring, modification of knowledge during execution and distributed computing. The basic entity in ObjVProlog-D is the concurrent logic object which combines a Horn clauses database with a process. The design of the language involves three main themes: the object-oriented model, the state change model and the distributed computing model. The object-oriented model includes not only classes and objects but also metaclasses as first-class entities; this allows metaprogramming as well as reflexive definition of the language. To model state changes, a concurrent logic object relies on dynamic clauses that can be added or deleted during the computation using a version mechanism. Finally, the distributed computing model implements large-grain AND-parallelism whereby concurrent objects delegate sub-problems to other objects (remote logic queries) which can work on them in parallel. To ensure syntactic and semantic compatibility with the usual Prolog predicate calls, synchronization of remote queries is based on the concept of a future logic variable. In contrast to most concurrent logic object proposals, ObjVProlog-D preserves Prolog's don't know non-determinism, the ability to backtrack to find all possible solutions to a query. This is achieved through a distributed backtracking protocol using asynchronous messages. Thus, ObjVProlog-D offers an original set of design choices, allowing programmers to structure a complex application as a distributed set of cooperating Prolog experts. ObjVProlog-D is implemented in Quintus Prolog and applications have been run on a network of workstations.