From 6174fa57260de6eeda3ca082e51dfc74c2d5b613 Mon Sep 17 00:00:00 2001 From: Bogdan Kostov Date: Mon, 29 Apr 2024 16:47:19 +0200 Subject: [PATCH] [Fix #83] Add calculated failure rate, fha based failure rate and failure rate requirement to fault tree summary. --- .../ontology/fta-fmea-model.ttl | 11 ++++++ .../cvut/kbss/analysis/dao/FaultTreeDao.java | 38 ++++++++++++++----- .../cvut/kbss/analysis/model/FaultTree.java | 11 ++++++ .../kbss/analysis/model/FaultTreeSummary.java | 12 ++++++ 4 files changed, 63 insertions(+), 9 deletions(-) diff --git a/ontology-generator/ontology/fta-fmea-model.ttl b/ontology-generator/ontology/fta-fmea-model.ttl index 15b0c5c2..a0cb187a 100644 --- a/ontology-generator/ontology/fta-fmea-model.ttl +++ b/ontology-generator/ontology/fta-fmea-model.ttl @@ -496,6 +496,17 @@ fta-fmea:username rdf:type owl:DatatypeProperty ; fta-fmea:to rdf:type owl:DatatypeProperty ; rdfs:domain fta-fmea:failure-rate-requirement . +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/required-failure-rate +fta-fmea:required-failure-rate rdf:type owl:DatatypeProperty ; + rdfs:domain fta-fmea:fault-tree . + +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/calculated-failure-rate +fta-fmea:calculated-failure-rate rdf:type owl:DatatypeProperty ; + rdfs:domain fta-fmea:fault-tree . + +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/fha-based-failure-rate +fta-fmea:fha-based-failure-rate rdf:type owl:DatatypeProperty ; + rdfs:domain fta-fmea:fault-tree . ### http://purl.org/dc/terms/source dc-terms:source rdf:type owl:DatatypeProperty ; diff --git a/src/main/java/cz/cvut/kbss/analysis/dao/FaultTreeDao.java b/src/main/java/cz/cvut/kbss/analysis/dao/FaultTreeDao.java index 3a0d1037..af19e6b9 100755 --- a/src/main/java/cz/cvut/kbss/analysis/dao/FaultTreeDao.java +++ b/src/main/java/cz/cvut/kbss/analysis/dao/FaultTreeDao.java @@ -2,7 +2,9 @@ import cz.cvut.kbss.analysis.config.conf.PersistenceConf; import cz.cvut.kbss.analysis.exception.PersistenceException; -import cz.cvut.kbss.analysis.model.*; +import cz.cvut.kbss.analysis.model.FaultEvent; +import cz.cvut.kbss.analysis.model.FaultTree; +import cz.cvut.kbss.analysis.model.FaultTreeSummary; import cz.cvut.kbss.analysis.service.IdentifierService; import cz.cvut.kbss.analysis.util.Vocabulary; import cz.cvut.kbss.jopa.model.EntityManager; @@ -15,7 +17,6 @@ import java.net.URI; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; @Repository public class FaultTreeDao extends ManagedEntityDao { @@ -91,15 +92,34 @@ public List findAllSummaries() { OPTIONAL{ ?uri fta:is-manifested-by ?root . ?root fta:is-derived-from ?sup. - ?sup fta:is-manifestation-of ?behavior . - ?behavior fta:has-component ?subsystemUri. - ?subsystemUri fta:name ?subsystemName. - ?subsystemUri fta:is-part-of+ ?systemUri. - FILTER NOT EXISTS{ - ?systemUri fta:is-part-of ?system2. + OPTIONAL{ + ?root fta:probability ?calculatedFailureRate. + } + OPTIONAL{ + ?sup fta:has-failure-rate ?failureRate. + OPTIONAL{ + ?failureRate fta:has-prediction ?failureRatePrediction. + ?failureRatePrediction fta:value ?fhaBasedFailureRate. + } + + OPTIONAL{ + ?failureRate fta:has-requirement ?failureRateRequirement. + ?failureRateRequirement fta:to ?requiredFailureRate. + } + } + OPTIONAL{ + ?sup fta:is-manifestation-of ?behavior . + ?behavior fta:has-component ?subsystemUri. + ?subsystemUri fta:name ?subsystemName. + ?subsystemUri fta:is-part-of+ ?systemUri. + FILTER NOT EXISTS{ + ?systemUri fta:is-part-of ?system2. + } + ?systemUri fta:name ?systemName. } - ?systemUri fta:name ?systemName. } + + {} }""", "FaultTreeSummary") .setParameter("type", typeUri) .setParameter("pName", P_HAS_NAME) diff --git a/src/main/java/cz/cvut/kbss/analysis/model/FaultTree.java b/src/main/java/cz/cvut/kbss/analysis/model/FaultTree.java index cefd07f9..37589870 100755 --- a/src/main/java/cz/cvut/kbss/analysis/model/FaultTree.java +++ b/src/main/java/cz/cvut/kbss/analysis/model/FaultTree.java @@ -23,6 +23,17 @@ public class FaultTree extends ManagedEntity { @OWLObjectProperty(iri = Vocabulary.s_p_is_performed_by) protected NamedEntity subsystem; + @Transient + @OWLDataProperty(iri = Vocabulary.s_p_required_failure_rate) + protected Double requiredFailureRate; + @Transient + @OWLDataProperty(iri = Vocabulary.s_p_calculated_failure_rate) + protected Double calculatedFailureRate; + @Transient + @OWLDataProperty(iri = Vocabulary.s_p_fha_based_failure_rate) + protected Double fhaBasedFailureRate; + + @NotNull(message = "Manifesting event must be chosen") @ParticipationConstraints(nonEmpty = true) @OWLObjectProperty(iri = Vocabulary.s_p_is_manifested_by, cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}, fetch = FetchType.EAGER) diff --git a/src/main/java/cz/cvut/kbss/analysis/model/FaultTreeSummary.java b/src/main/java/cz/cvut/kbss/analysis/model/FaultTreeSummary.java index f2bf57c9..ac75467f 100644 --- a/src/main/java/cz/cvut/kbss/analysis/model/FaultTreeSummary.java +++ b/src/main/java/cz/cvut/kbss/analysis/model/FaultTreeSummary.java @@ -31,6 +31,15 @@ public class FaultTreeSummary extends ManagedEntity{ @OWLDataProperty(iri = Vocabulary.s_p_subsystem_name) protected String subsystemName; + @OWLDataProperty(iri = Vocabulary.s_p_required_failure_rate) + protected Double requiredFailureRate; + + @OWLDataProperty(iri = Vocabulary.s_p_calculated_failure_rate) + protected Double calculatedFailureRate; + + @OWLDataProperty(iri = Vocabulary.s_p_fha_based_failure_rate) + protected Double fhaBasedFailureRate; + public void copyTo(FaultTree faultTree){ super.copyTo(faultTree); @@ -44,5 +53,8 @@ public void copyTo(FaultTree faultTree){ faultTree.getSubsystem().setUri(this.getSubsystemUri()); faultTree.getSubsystem().setName(this.getSubsystemName()); } + faultTree.setRequiredFailureRate(this.getRequiredFailureRate()); + faultTree.setCalculatedFailureRate(this.getCalculatedFailureRate()); + faultTree.setFhaBasedFailureRate(this.getFhaBasedFailureRate()); } }