The Capability Interaction Graph (CIG) Ontology is an ontology-driven vocabulary for describing the architecture of Cyber-Physical Systems (CPSs) in terms of components, capabilities, channels, interfaces, faults, and errors, together with the functional dependencies that govern how failures propagate between them. It is a lightweight extension of the Unified Foundational Ontology (UFO), implemented via gUFO, and is intended to be populated from system-architecture knowledge graphs and queried using SPARQL. The ontology forms the static architectural layer of a broader framework — described in the paper this ontology accompanies — for automatically synthesising Fault Trees from Capability Interaction Graphs, reducing the manual effort typically required to build reliability models for CPSs.
Reliability modelling for Cyber-Physical Systems (CPSs) is a multidisciplinary and largely manual activity. Fault Tree Analysis (FTA) is one of the most established techniques for reasoning about system failures, but constructing a fault tree by hand requires extensive coordination between domain experts and depends heavily on tacit engineering knowledge that is rarely documented in a machine-readable form. As a result, fault trees are expensive to maintain and are often unavailable during the early stages of system design, when architectural changes are still cheap to make.
The Capability Interaction Graph (CIG) addresses this by providing an intermediate semantic layer between architectural knowledge and reliability analysis. Rather than requiring an analyst to encode failure behaviour by hand, a CIG captures a system's functional dependency structure — which capabilities depend on which others, and through which components, channels, and interfaces — from which failure semantics can be derived automatically. The model is grounded in the Unified Foundational Ontology (UFO), via its lightweight OWL implementation gUFO, which provides the ontology with precise semantics for notions such as dispositions, events, participation, and relators. This grounding is what allows the ontology to explicitly separate distinctions that conventional fault tree formalisms usually conflate, such as faults versus errors, and the creation of a fault versus its activation.
This document describes the static architectural vocabulary of the CIG model: Component, Channel, Capability, Fault, Interface (and its InputInterface/OutputInterface specialisations), ResourceType, and the events (Function, FaultCreation, Error) associated with them. It corresponds to the ontology conforming to which a system-architecture knowledge graph is expected to be structured. The ontology deliberately does not attempt to axiomatise the dynamic, situation-based semantics of the underlying framework — fault activation, error propagation, and the synthesis of a fault tree from a CIG — since these describe how a system evolves across situations over time rather than constraints on a single knowledge graph; that part of the framework is instead given a formal treatment directly in the source paper.
As a running example, consider a subsystem of a production printer consisting of a power-supply unit, an ink reservoir, and a print head. The power-supply unit has the capability to provide electricity, the ink reservoir the capability to provide ink, and the print head the capabilities to deposit ink and to self-clean; electricity and ink reach the print head through a wire and a tube respectively, each modelled as a Channel. This example is used throughout the accompanying documentation, and a companion SHACL shapes file is available (see the Description section) for validating that a knowledge graph built along these lines respects the ontology's structural constraints.
| cig | <http://purl.org/capability-interaction-graph#> |
| dc | <http://purl.org/dc/elements/1.1/> |
| dct | <http://purl.org/dc/terms/> |
| gufo | <http://purl.org/nemo/gufo#> |
| owl | <http://www.w3.org/2002/07/owl#> |
| rdf | <http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
| rdfs | <http://www.w3.org/2000/01/rdf-schema#> |
| vann | <http://purl.org/vocab/vann/> |
| xml | <http://www.w3.org/XML/1998/namespace> |
| xsd | <http://www.w3.org/2001/XMLSchema#> |
Try a SPARQL query against an example CIG instance graph (the print-head running example):
A companion SHACL shapes file is available for validating instance data against this ontology's structural constraints, including cross-referential constraints (e.g. that a Fault and the Capability it prevents share a bearer) that go beyond what OWL 2 DL can express.
IRI: http://purl.org/capability-interaction-graph#Capability
IRI: http://purl.org/capability-interaction-graph#Channel
IRI: http://purl.org/capability-interaction-graph#Consumer
IRI: http://purl.org/capability-interaction-graph#ErroneousCapability
IRI: http://purl.org/capability-interaction-graph#Error
IRI: http://purl.org/capability-interaction-graph#Fault
IRI: http://purl.org/capability-interaction-graph#FaultCreation
IRI: http://purl.org/capability-interaction-graph#Function
IRI: http://purl.org/capability-interaction-graph#FunctionalCapability
IRI: http://purl.org/capability-interaction-graph#InputInterface
IRI: http://purl.org/capability-interaction-graph#Interface
IRI: http://purl.org/capability-interaction-graph#OutputInterface
IRI: http://purl.org/capability-interaction-graph#Producer
IRI: http://purl.org/capability-interaction-graph#ResourceType
IRI: http://purl.org/capability-interaction-graph#accommodates
IRI: http://purl.org/capability-interaction-graph#channel
IRI: http://purl.org/capability-interaction-graph#channel_capabilities
IRI: http://purl.org/capability-interaction-graph#component
IRI: http://purl.org/capability-interaction-graph#component_capabilities
IRI: http://purl.org/capability-interaction-graph#consumes
IRI: http://purl.org/capability-interaction-graph#has
IRI: http://purl.org/capability-interaction-graph#prevents
IRI: http://purl.org/capability-interaction-graph#produces
IRI: http://purl.org/capability-interaction-graph#providedBy
IRI: http://purl.org/capability-interaction-graph#provides
IRI: http://purl.org/dc/terms/bibliographicCitation
IRI: http://purl.org/dc/terms/created
IRI: http://purl.org/dc/elements/1.1/creator
IRI: http://purl.org/vocab/vann/preferredNamespacePrefix
IRI: http://purl.org/vocab/vann/preferredNamespaceUri
IRI: http://purl.org/dc/elements/1.1/title
IRI: http://purl.org/capability-interaction-graph#Capability
IRI: http://purl.org/capability-interaction-graph#Channel
IRI: http://purl.org/capability-interaction-graph#Component
IRI: http://purl.org/capability-interaction-graph#Consumer
IRI: http://purl.org/capability-interaction-graph#ErroneousCapability
IRI: http://purl.org/capability-interaction-graph#Fault
IRI: http://purl.org/capability-interaction-graph#FunctionalCapability
IRI: http://purl.org/capability-interaction-graph#InputInterface
IRI: http://purl.org/capability-interaction-graph#Interface
IRI: http://purl.org/capability-interaction-graph#OutputInterface
IRI: http://purl.org/capability-interaction-graph#Producer
IRI: http://purl.org/capability-interaction-graph#providedBy
IRI: http://purl.org/capability-interaction-graph#provides
The authors would like to thank Silvio Peroni for developing LODE, a Live OWL Documentation Environment, which is used for representing the Cross Referencing Section of this document and Daniel Garijo for developing Widoco, the program used to create the template used in this documentation.