• Manual
  • HAPI Namespace
Show / Hide Table of Contents
  • General Information
  • Object-Oriented Specification
  • Memory Management
  • Error Handling
  • Using the Hugin C#/.NET Core API
  • Examples
    • Example 1: Load and Propagate
    • Example 2: Build and Propagate
    • Example 3: Sequential Learning
    • Example 4: Node naming scheme for OOBNs
  • Acknowledgements

Object-Oriented Specification

The Hugin C#/.NET Core API provides a powerful object-orientation mechanism. Object-oriented specifications of Bayesian networks and LIMIDs make it very easy to reuse models, to encapsulate submodels (providing a means for hierarchical model specification), and to perform model construction in a top-down fashion, a bottom-up fashion, or a mix of the two (allowing repeated changes of level of abstraction).

The classes Domain and Class both extend the abstract class NetworkModel. The Domain and Class classes contain enumerations and methods common to regular Bayesian networks/LIMIDs and object-oriented Bayesian networks/LIMIDs, respectively.

In addition to the usual nodes, an object-oriented Bayesian network or LIMID contains instance nodes, representing instances of other networks. In other words, an instance node represents a subnetwork. Of course, the network of which instances exist in other networks can itself contain instance nodes, whereby an object-oriented network can be viewed as a hierarchical description of a problem domain. Describing a network in a hierarchical fashion often makes the network much less cluttered, and thus provides a much better means of communicating ideas among knowledge engineers and users.

As systems often are composed of collections of identical or similar components, models of systems often contain repetitive patterns. The notion of instance nodes makes it very easy to construct multiple identical instances of a network fragment.

In This Article
Back to top Copyright (C) 2019-2023 Hugin Expert A/S