  Bayesian networks provide a modeling language and associated inference
algorithm for stochastic domains. They have been successfully applied in a
variety of medium-scale applications. However, when faced with a large complex
domain, the task of modeling using Bayesian networks begins to resemble the
task of programming using logical circuits. In this paper, we describe an
object-oriented Bayesian network (OOBN) language, which allows complex domains
to be described in terms of inter-related objects. We use a Bayesian network
fragment to describe the probabilistic relations between the attributes of an
object. These attributes can themselves be objects, providing a natural
framework for encoding part-of hierarchies. Classes are used to provide a
reusable probabilistic model which can be applied to multiple similar objects.
Classes also support inheritance of model fragments from a class to a subclass,
allowing the common aspects of related classes to be defined only once. Our
language has clear declarative semantics: an OOBN can be interpreted as a
stochastic functional program, so that it uniquely specifies a probabilistic
model. We provide an inference algorithm for OOBNs, and show that much of the
structural information encoded by an OOBN--particularly the encapsulation of
variables within an object and the reuse of model fragments in different
contexts--can also be used to speed up the inference process.
