Systems – an Ontology approach

The purpose of the Systems Ontology is to provide a framework, in the form of an ontology, for capturing system details resulting from systems analysis.

The Systems Ontology is composed of three distinct parts:

  • SystemThing holds the core concepts of a system – not to be changed
  • SystemSpace is a definition of categories applicable to different concepts describing specific systems – should change rarely as the understanding of the different types of systems evolves
  • System is the place for the instances of specific systems – may change regularly as the analysis and understanding of specific systems progresses.

The following diagram is a representation of the different elements in each part.


Core concepts and Spaces
Core concepts define the fundamental building blocks for the Systems Ontology in a set of abstract classes of mainly two types: Thing and Space.
Things describe the different aspects of a system on very high abstraction level (meta-meta in this case).
Spaces provide further refinement for the different aspects of a system.

Structure
The structure of the system is described in abstract sub-classes of StructuredThing. The structure defines the relationships between concepts, it defines what form (in terms of graphs) of construct can be built. Constructs can be for example: chain, ring, tree, net, a combination of these or any other formation.

Specific structures are defined inheriting from the StructuredThing abstract class, making StructuredThing a collection, a container of various types.

An example structure: ComposableThing has two slots, has_part and is_part_of (both are each other’s inverse), since has_part is a multi-value, is_part_of a single-value slot referring to instances, the structure for ComposableThing is going to be a tree.

Category
Categories are defined in the CategorySpace, which holds a hierarchy of categories underneath. CathegoryThing enables instances of a system elements to reference multiple categories from the CategorySpace.

CategorySpace is a bit unusual as far as modelling categories goes. Usually there is a meta-model for describing the characteristics of a category on the meta-model level then each category is an instance in the model often in some form of relationship with other categories.
In this case, a different, perhaps unusual approach is taken when categories are defined as classes and sub-classes of classes. This will allows to build a hierarchy of categories and use the class name for the name of the category, which should be sufficient as no attributes are necessary.
There is one more twist, instead of assigning a class (category) as a superclass to the categorized class, the CategorizedThing defines a slot with the value type of a class, in other words the category is defined as an attribute (slot).

This approach allows to define the categories in the meta-model in a hierarchy and still use them as an attribute in the model.

Life-cycle
The notation of life-cycle makes the concepts “alive”, in other words, it represents the time factor.

Individual life-cycles are captured in the LifeCycleSpace as sub-classes. Life-cycles consist of states, these are captured as instances of a life-cycle class in the ontology. LiveThing enables the system instances to reference individual states and other related instances – behaviour and quality (details in the next section).

Note that life-cycles are not described as proper state-machines in this ontology. There is no notation of events or state transitions other than registering the preceding and following states for each state instance.

Behavior and Quality
The following assumption was made: Only “living” things (ie concepts with life-cycle) show characteristics of behavior and qualities.
Based on this assumption, behaviour and quality details can be registered to any LivingThing.

Behavior and Quality are two concepts represented in the ontology in a similar fashion.
BehaviorSpace consists of sub-classes, where sub-classes are considered as categories of behavior. These categories can serve as a mechanism to group, qualify, arrange the long list of different behaviors a system may have.
Specific behaviors are captured as instances of a Class from the BehaviorSpace.

Qualities are represented the same way, where categories are sub-classes of the QualitySpace and specific qualities are instances of a class from the QualitySpace.

System instances
The root for capturing specific system instances is SystemSpace, it inherits a set of abstract classes (LivingThing and CategorizedThing) describing a system.

Besides creating instances for system elements a few other types of instances will be created along the way including: life-cycle states, behaviors and qualities.

States
Life-cycles consist of states, individual state instances should be created under the relevant life-cycle categories.
States are later referenced from system instances, where a system can only have one state at a time in the current setup of the ontology.

Behaviours and Qualities
Behaviours and Qualities are instances of simple classes in the pertinent categories. In the current ontology each instance is represented with a name (slot) only.
The categories should be carefully chosen for both set of concepts, otherwise can be time consuming to re-factor an instance of a quality into a category in order to register finer grain qualities. Same challenge applies to registering behavior.

Topology and Systems

Systems, and sub-systems, are captured in some form of hierarchy in the ontology – the Topology. The Topology for systems is not pre-defined as it mostly depends on the method applied to systems analysis, and somewhat depends on the different types of systems as well.
Topology is withing the System ontology, it is captured together with the system instances, unlike the categories for life-cycle, behavior and quality.

System instances are created within the topology, where they automatically inherit characteristics of LivingThing and CategorizedThing.
The topology does not have a notation of structure for system elements, therefore predefined (in the SystemSpace) structures should be applied as Super-classes to specific topology classes. Note that sub-classes in the topology will inherit structures from parent classes, for that reason structures should be used sparingly in classes closer to the root and should be applied to classes closer to the instances.

Data characteristics of system elements are defined within of the Topology by adding them to specific classes. Data details are esentially attributes (slots here) on a class. One should be careful making sure that data is not confused with structure. Slots with references to other system instances are perfectly valid data elements, however these can be easily confused with structure elements also represented as slots. The success of proper separation will depend on the rigour applied to systems analysis.

2 Responses to “Systems – an Ontology approach”

  1. Richard Veryard Says:

    Hi Peter

    This looks very interesting, but I could do with a bit more context.

    As far as I can see, this ontology provides a largely behavioural view of a system. There are other things that a systems analyst might want to think about, including intentions (e.g. goals) and meaning (e.g. semantics). Are these topics out of scope?

    Quality could be modelled as an aspect of behaviour or as a way of representing intentions. Could you say more about this?

  2. Peter Kovari Says:

    Hello Richard, you raise some very interesting points and questions.

    More on the context… I am planning to continue with this topic – Enterprise Architecture models and tooling – in my blog as well as applying it to daily work. Aslo, this particular entry is extending on the previous about using ontology (Protege) for capturing systems in the EA context.
    The whole topic has started from an immediate need to capture architectural details of a specific domain in the enterprise. I had a few goals for this activity
    - be able to form and capture my understanding of systems, and I did not want to be restricted to any specific meta-model or schema
    - be able to capture details, build a “knowledge base”, of my domain so I can work with it, and support to other domains as well as other roles (business architect, solution architect, etc)
    - be able to query the knowledge base to search, discover dependencies and perform impact analysis

    The biggest achievement with the current version (more to come as the ontology evolves) of this ontology is including the “time factor” in the form of the life-cycle and being able to use it as an aspect on any system or sub-system.

    Additional aspects you have mentioned: intentions/goals, meaning/semantics would be interesting to capture as well and I can see some of them emerging soon.
    I am slowly building the knowledge base by capturing the details to answer specific questions, and at this time the questions are mostly around the current/as-is system, for example: what applications will be impacted if a particular platform is decommissioned?

    Bringing in the “time factor” I am slowly starting to focus on the future and transition (strategical vs tactical) state of the systems and together with these aspects some of the goal/intention oriented questions are emerging, for example: what components are supporting strategical capabilities in the domain? (the scope could be application in the enterprise).

    On the quality-behaviour-intentions topic, I will have to think about this a bit more. These are different (orthogonal) aspects of a system in my mind. However I can see that the model may benefit from having a traceable (query path) link between these, thinking of an example: In order to provide 24×7 operation (goal) the system has been made highly available (quality) following a clustered configuration (structure) and supporting fail-over (behaviour).
    I suspect I will see more clearly in this regard as I include more strategy/goals/intentions in the knowledge base, and these new relationships should start to crystalize.

Leave a Reply