# SemKoRe: Improving Machine Maintenance in Industrial IoT with Semantic Knowledge Graphs
## 4 Architecture and Ontology Models
### Machine Failure Ontology Model  
The first part of our work is collecting information on machine failures to be able to answer the following questions:  
* What are the failure symptoms? Symptoms reflect the perceptible aspects of failures whether they are visual, sonic, odor or heat related. * What is the impact of the failure? This may or may not be detected easily. Each failure impact is relative to a machine or to one of its components. * What are the root causes of a particular failure? This question is difficult to answer, since it assumes prior knowledge about the cause-effect relations specific to each machine type. Answering this question requires the knowledge of a machine domain expert. * After knowing the failure type and impact, how can we repair the machine? * After knowing the root causes of a specific failure, is there a preventive maintenance procedure that can help us to avoid that failure? To answer all of these questions, we defined the data model of the machine failures using Semantic Web standards because of the schema-less nature of RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Web Ontology Language) and the explicit formalism supported by these languages. The failure ontology is created by interacting with the machine builders and by using the initial set of requirements described in Section 2.2. It acts as a common data model and will be enriched with new concepts by domain experts over time. Progressively, our design, engineering, configuration and maintenance tools will use this ontology to create the knowledge about the failures and allow us to develop different services over it. SemKoRe targets the industry automation business, in which the failure knowledge can be significantly different from one customer to another. The concept uses a flat ontology model, containing only the most common general concepts required for current needs. The subsequent specialization concepts will be easily and naturally added by domain experts as the knowledge collection progresses. To develop the machine failure ontology presented in Figure 3, we adopted the Seven-step method, developed by the Medical Information Center of Stanford University [25]. Its seven steps are as follows:  
1. **Determine domain and scope**: This work focuses on industrial machine failures. 2. **Consider reusing existing ontologies**: No existing machine domain or machine failure ontology was found for reuse, therefore we developed both for this work. Regarding upper-level ontologies, there are several candidates like Basic Formal Ontology (BFO), ISO-15926, Gist, and Suggested Upper Merged Ontology (SUMO) but we still need to finalize one. 3. **List important terms in the ontology**: After interactions with the machine domain experts, the following important terms were identified Failure, Symptom, Impact, Root cause, Solving Procedure, among others. 4. **Define classes and class hierarchy**: Several classes were created including the important terms listed above. However, since no specialization concept will be introduced, the ontology is flat. Only the classes relative to types (e.g., Failure Type, Symptom Type) are grouped as sub-classes of the Types class. 5. **Define object properties of classes**: We defined a set of object properties that link all the defined classes together. For example, the property _hasSymptoms_ links a Symptom to a specific Failure. The complete list is illustrated in Figure 4b
6. **Define data properties of classes**: We also defined several of the data properties of classes, with cardinality and type constraints, as shown in Figure 4c. **Create instances and check exceptions**: Instances of SemKoRe ontology are divided into two parts. The first part, defined by experts during the design time, concerns the generic concepts that will be used for most industrial use cases, such as Severity level (Catastrophic, Critical, Moderate, Low). The second type of instances concern the data provided by the users during the runtime of the SemKoRe.