diff --git a/ontology-generator/ontology/fta-fmea-model.ttl b/ontology-generator/ontology/fta-fmea-model.ttl index b450d272..6f214ae6 100644 --- a/ontology-generator/ontology/fta-fmea-model.ttl +++ b/ontology-generator/ontology/fta-fmea-model.ttl @@ -107,6 +107,10 @@ fta-fmea:has-part rdf:type owl:ObjectProperty ; owl:inverseOf fta-fmea:isPartOf . +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/has-participant +fta-fmea:has-participant rdf:type owl:ObjectProperty . + + ### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/has-prediction fta-fmea:has-prediction rdf:type owl:ObjectProperty ; rdfs:subPropertyOf fta-fmea:has-general-estimate . @@ -120,6 +124,10 @@ fta-fmea:has-requirement rdf:type owl:ObjectProperty . fta-fmea:has-scenario rdf:type owl:ObjectProperty . +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/has-type-category +fta-fmea:has-type-category rdf:type owl:ObjectProperty . + + ### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/has-value fta-fmea:has-value rdf:type owl:ObjectProperty . @@ -320,6 +328,10 @@ fta-fmea:requires rdf:type owl:ObjectProperty ; rdfs:label "requires" . +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/has-selected-estimation +fta-fmea:has-selected-estimation rdf:type owl:ObjectProperty . + + ### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/triggeredBy fta-fmea:triggeredBy rdf:type owl:ObjectProperty ; rdfs:domain fta-fmea:Event ; @@ -343,6 +355,18 @@ fta-fmea:from rdf:type owl:DatatypeProperty ; rdfs:domain fta-fmea:failure-rate-requirement . +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/ata-code +fta-fmea:ata-code rdf:type owl:DatatypeProperty . + + +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/code +fta-fmea:code rdf:type owl:DatatypeProperty . + + +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/criticality +fta-fmea:criticality rdf:type owl:DatatypeProperty . + + ### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/has-duration fta-fmea:has-duration rdf:type owl:DatatypeProperty ; rdfs:subPropertyOf owl:topDataProperty ; @@ -353,11 +377,31 @@ fta-fmea:has-duration rdf:type owl:DatatypeProperty ; fta-fmea:has-end rdf:type owl:DatatypeProperty . +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/material-reference +fta-fmea:material-reference rdf:type owl:DatatypeProperty . + + +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/part-number +fta-fmea:part-number rdf:type owl:DatatypeProperty . + + +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/quantity +fta-fmea:quantity rdf:type owl:DatatypeProperty . + + +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/schematic-designation +fta-fmea:schematic-designation rdf:type owl:DatatypeProperty . + + ### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/has-start fta-fmea:has-start rdf:type owl:DatatypeProperty ; rdfs:domain fta-fmea:Event . +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/stock +fta-fmea:stock rdf:type owl:DatatypeProperty . + + ### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/hasBehaviorType fta-fmea:hasBehaviorType rdf:type owl:DatatypeProperty ; rdfs:domain fta-fmea:Behavior ; @@ -468,6 +512,7 @@ fta-fmea:Behavior rdf:type owl:Class ; ### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/Component fta-fmea:Component rdf:type owl:Class ; + rdfs:subClassOf fta-fmea:item ; rdfs:label "Component" . @@ -533,6 +578,7 @@ fta-fmea:Situation rdf:type owl:Class ; ### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/System fta-fmea:System rdf:type owl:Class ; + rdfs:subClassOf fta-fmea:item ; rdfs:label "System" . @@ -553,6 +599,11 @@ fta-fmea:analysis-event rdf:type owl:Class . fta-fmea:analysis-product rdf:type owl:Class . +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/ata-system +fta-fmea:ata-system rdf:type owl:Class ; + rdfs:subClassOf fta-fmea:System . + + ### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/estimation-event fta-fmea:estimation-event rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; @@ -629,15 +680,39 @@ fta-fmea:fha-fault-event rdf:type owl:Class ; rdfs:subClassOf fta-fmea:fault-event-type . +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/item +fta-fmea:item rdf:type owl:Class . + + ### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/method fta-fmea:method rdf:type owl:Class . +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/reusable-system +fta-fmea:reusable-system rdf:type owl:Class ; + rdfs:subClassOf fta-fmea:System . + + +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/sns-component +fta-fmea:sns-component rdf:type owl:Class ; + rdfs:subClassOf fta-fmea:System . + + ### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/summary fta-fmea:summary rdf:type owl:Class ; rdfs:label "Summary" . +### http://onto.fel.cvut.cz/ontologies/fta-fmea-application/verification-method +fta-fmea:verification-method rdf:type owl:Class ; + rdfs:subClassOf fta-fmea:method . + + +### http://onto.fel.cvut.cz/ontologies/reliability-analysis-application/sns-component-failure-type + rdf:type owl:Class ; + rdfs:subClassOf fta-fmea:fault-event-type . + + ################################################################# # Individuals ################################################################# diff --git a/src/main/java/cz/cvut/kbss/analysis/model/Behavior.java b/src/main/java/cz/cvut/kbss/analysis/model/Behavior.java index e8f36521..d0c4c2e4 100755 --- a/src/main/java/cz/cvut/kbss/analysis/model/Behavior.java +++ b/src/main/java/cz/cvut/kbss/analysis/model/Behavior.java @@ -6,16 +6,16 @@ import lombok.Getter; import lombok.Setter; -import jakarta.validation.constraints.NotEmpty; - import java.util.HashSet; import java.util.Set; @OWLClass(iri = Vocabulary.s_c_Behavior) -@MappedSuperclass @Getter @Setter -public abstract class Behavior extends NamedEntity { +public abstract class Behavior extends DomainEntity { + + @OWLObjectProperty(iri = Vocabulary.s_p_isDerivedFrom, fetch = FetchType.EAGER) + protected Set supertypes; @OWLDataProperty(iri = Vocabulary.s_p_hasBehaviorType) private BehaviorType behaviorType = BehaviorType.AtomicBehavior; @@ -33,7 +33,7 @@ public abstract class Behavior extends NamedEntity { private Set manifestations = new HashSet<>(); @OWLObjectProperty(iri = Vocabulary.s_p_hasComponent, fetch = FetchType.EAGER) - private Component component; + private Item item; @OWLObjectProperty(iri = Vocabulary.s_p_activatedBy) diff --git a/src/main/java/cz/cvut/kbss/analysis/model/Component.java b/src/main/java/cz/cvut/kbss/analysis/model/Component.java index 40949437..c2d18059 100755 --- a/src/main/java/cz/cvut/kbss/analysis/model/Component.java +++ b/src/main/java/cz/cvut/kbss/analysis/model/Component.java @@ -2,6 +2,7 @@ import cz.cvut.kbss.analysis.util.Vocabulary; import cz.cvut.kbss.jopa.model.annotations.*; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -14,26 +15,10 @@ @OWLClass(iri = Vocabulary.s_c_Component) @Getter @Setter -public class Component extends NamedEntity { +public class Component extends Item { - @OWLObjectProperty(iri = Vocabulary.s_p_hasFunction, cascade = CascadeType.ALL, fetch = FetchType.EAGER) - private Set functions = new HashSet<>(); - - @OWLObjectProperty(iri = Vocabulary.s_p_hasFailureMode, cascade = CascadeType.ALL, fetch = FetchType.EAGER) - private Set failureModes = new HashSet<>(); - - @OWLObjectProperty(iri = Vocabulary.s_p_isPartOf, cascade = {CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.EAGER) - private URI parentComponent; - - public void addFunction(Function function) { - function.setComponent(this); - getFunctions().add(function); - } - - public void addFailureMode(FailureMode failureMode) { - failureMode.setComponent(this); - getFailureModes().add(failureMode); - } + @OWLObjectProperty(iri = Vocabulary.s_p_isPartOf, cascade = {CascadeType.MERGE, CascadeType.REFRESH})// TODO - how to load parent components, e.g. simulate fetch EAGER + private Item parentComponent; @Override public String toString() { diff --git a/src/main/java/cz/cvut/kbss/analysis/model/DomainEntity.java b/src/main/java/cz/cvut/kbss/analysis/model/DomainEntity.java new file mode 100644 index 00000000..f484d4c6 --- /dev/null +++ b/src/main/java/cz/cvut/kbss/analysis/model/DomainEntity.java @@ -0,0 +1,22 @@ +package cz.cvut.kbss.analysis.model; + +import cz.cvut.kbss.analysis.model.util.TypeCategory; +import cz.cvut.kbss.analysis.util.Vocabulary; +import cz.cvut.kbss.jopa.model.annotations.*; +import lombok.Getter; +import lombok.Setter; + +import java.util.Set; + +@MappedSuperclass +@Getter +@Setter +public abstract class DomainEntity extends NamedEntity{ + + @OWLDataProperty(iri = Vocabulary.s_p_has_type_category) + private TypeCategory typeCategory; + + public abstract Set getSupertypes(); + public abstract void setSupertypes(Set supertypes); + +} diff --git a/src/main/java/cz/cvut/kbss/analysis/model/Event.java b/src/main/java/cz/cvut/kbss/analysis/model/Event.java index c68e8741..1a4563a2 100755 --- a/src/main/java/cz/cvut/kbss/analysis/model/Event.java +++ b/src/main/java/cz/cvut/kbss/analysis/model/Event.java @@ -2,6 +2,7 @@ import cz.cvut.kbss.analysis.util.Vocabulary; import cz.cvut.kbss.jopa.model.annotations.CascadeType; +import cz.cvut.kbss.jopa.model.annotations.FetchType; import cz.cvut.kbss.jopa.model.annotations.OWLClass; import cz.cvut.kbss.jopa.model.annotations.OWLObjectProperty; import lombok.Getter; @@ -13,7 +14,13 @@ @OWLClass(iri = Vocabulary.s_c_Event) @Getter @Setter -public class Event extends NamedEntity { +public class Event extends DomainEntity { + + @OWLObjectProperty(iri = Vocabulary.s_p_isDerivedFrom, fetch = FetchType.EAGER) + protected Set supertypes; + + @OWLObjectProperty(iri = Vocabulary.s_p_isPartOf, fetch = FetchType.EAGER) + protected Set contextEvents; @OWLObjectProperty(iri = Vocabulary.s_p_manifestationOf, cascade = CascadeType.ALL) private Behavior behavior; diff --git a/src/main/java/cz/cvut/kbss/analysis/model/FailureRate.java b/src/main/java/cz/cvut/kbss/analysis/model/FailureRate.java index caf5a2ea..33fe9a46 100644 --- a/src/main/java/cz/cvut/kbss/analysis/model/FailureRate.java +++ b/src/main/java/cz/cvut/kbss/analysis/model/FailureRate.java @@ -1,6 +1,8 @@ package cz.cvut.kbss.analysis.model; import cz.cvut.kbss.analysis.util.Vocabulary; +import cz.cvut.kbss.jopa.model.annotations.CascadeType; +import cz.cvut.kbss.jopa.model.annotations.FetchType; import cz.cvut.kbss.jopa.model.annotations.OWLClass; import cz.cvut.kbss.jopa.model.annotations.OWLObjectProperty; import lombok.Getter; @@ -11,13 +13,13 @@ @Setter public class FailureRate extends AbstractEntity{ - @OWLObjectProperty(iri = Vocabulary.s_p_has_requirement) + @OWLObjectProperty(iri = Vocabulary.s_p_has_requirement, cascade = CascadeType.ALL, fetch = FetchType.EAGER) private FailureRateRequirement requirement; - @OWLObjectProperty(iri = Vocabulary.s_p_has_estimate) + @OWLObjectProperty(iri = Vocabulary.s_p_has_estimate, cascade = CascadeType.ALL, fetch = FetchType.EAGER) private FailureRateEstimate estimate; - @OWLObjectProperty(iri = Vocabulary.s_p_has_prediction) + @OWLObjectProperty(iri = Vocabulary.s_p_has_prediction, cascade = CascadeType.ALL, fetch = FetchType.EAGER) private FailureRateEstimate prediction; } diff --git a/src/main/java/cz/cvut/kbss/analysis/model/FailureRateEstimate.java b/src/main/java/cz/cvut/kbss/analysis/model/FailureRateEstimate.java index 4341e1f9..ca99d387 100644 --- a/src/main/java/cz/cvut/kbss/analysis/model/FailureRateEstimate.java +++ b/src/main/java/cz/cvut/kbss/analysis/model/FailureRateEstimate.java @@ -1,8 +1,11 @@ package cz.cvut.kbss.analysis.model; +import cz.cvut.kbss.analysis.model.method.EstimationMethod; import cz.cvut.kbss.analysis.util.Vocabulary; +import cz.cvut.kbss.jopa.model.annotations.CascadeType; import cz.cvut.kbss.jopa.model.annotations.OWLClass; import cz.cvut.kbss.jopa.model.annotations.OWLDataProperty; +import cz.cvut.kbss.jopa.model.annotations.OWLObjectProperty; import lombok.Getter; import lombok.Setter; @@ -14,4 +17,10 @@ public class FailureRateEstimate extends AnalysisProduct{ @OWLDataProperty(iri = Vocabulary.s_p_has_value) protected Double value; + /** + * The estimation method + */ + @OWLObjectProperty(iri = Vocabulary.s_p_based_on, cascade = CascadeType.ALL) + protected EstimationMethod estimationMethod; + } diff --git a/src/main/java/cz/cvut/kbss/analysis/model/FaultEvent.java b/src/main/java/cz/cvut/kbss/analysis/model/FaultEvent.java index a2768610..a0c03d70 100755 --- a/src/main/java/cz/cvut/kbss/analysis/model/FaultEvent.java +++ b/src/main/java/cz/cvut/kbss/analysis/model/FaultEvent.java @@ -34,9 +34,6 @@ public static FaultEvent create(){ @OWLDataProperty(iri = Vocabulary.s_p_hasFaultEventType) private FtaEventType eventType; - @OWLDataProperty(iri = Vocabulary.s_p_has_event_type) - private FaultEventType faultEventType; - @OWLDataProperty(iri = Vocabulary.s_p_hasGateType) private GateType gateType; @@ -46,8 +43,8 @@ public static FaultEvent create(){ @OWLDataProperty(iri = Vocabulary.s_p_hasProbability) private Double probability; - @OWLDataProperty(iri = Vocabulary.s_p_based_on) - private String probabilityDiscriminator; + @OWLObjectProperty(iri = Vocabulary.s_p_has_selected_estimation, fetch = FetchType.EAGER) + private FailureRateEstimate selectedEstimate; @OWLObjectProperty(iri = Vocabulary.s_p_hasChildren, cascade = CascadeType.ALL, fetch = FetchType.EAGER) private Set children = new HashSet<>(); diff --git a/src/main/java/cz/cvut/kbss/analysis/model/FaultEventType.java b/src/main/java/cz/cvut/kbss/analysis/model/FaultEventType.java index e6357745..f68db722 100644 --- a/src/main/java/cz/cvut/kbss/analysis/model/FaultEventType.java +++ b/src/main/java/cz/cvut/kbss/analysis/model/FaultEventType.java @@ -1,6 +1,8 @@ package cz.cvut.kbss.analysis.model; import cz.cvut.kbss.analysis.util.Vocabulary; +import cz.cvut.kbss.jopa.model.annotations.CascadeType; +import cz.cvut.kbss.jopa.model.annotations.FetchType; import cz.cvut.kbss.jopa.model.annotations.OWLClass; import cz.cvut.kbss.jopa.model.annotations.OWLObjectProperty; import lombok.Getter; @@ -11,7 +13,7 @@ @Setter public class FaultEventType extends Event{ - @OWLObjectProperty(iri = Vocabulary.s_p_has_failure_rate) + @OWLObjectProperty(iri = Vocabulary.s_p_has_failure_rate, cascade = CascadeType.ALL, fetch = FetchType.EAGER) private FailureRate failureRate; } diff --git a/src/main/java/cz/cvut/kbss/analysis/model/Item.java b/src/main/java/cz/cvut/kbss/analysis/model/Item.java new file mode 100644 index 00000000..f16735ad --- /dev/null +++ b/src/main/java/cz/cvut/kbss/analysis/model/Item.java @@ -0,0 +1,45 @@ +package cz.cvut.kbss.analysis.model; + +import cz.cvut.kbss.analysis.util.Vocabulary; +import cz.cvut.kbss.jopa.model.annotations.*; +import lombok.Getter; +import lombok.Setter; + +import java.util.HashSet; +import java.util.Set; + +@OWLClass(iri = Vocabulary.s_c_item) +@Getter +@Setter +public class Item extends DomainEntity { + + @OWLObjectProperty(iri = Vocabulary.s_p_isDerivedFrom, fetch = FetchType.EAGER) + protected Set supertypes; + + @OWLObjectProperty(iri = Vocabulary.s_p_documented_in) + private Set documents; + + @OWLObjectProperty(iri = Vocabulary.s_p_hasPartComponent, cascade = CascadeType.ALL, fetch = FetchType.EAGER) + private Set components = new HashSet<>(); + + public void addComponent(Component component) { + getComponents().add(component); + component.setParentComponent(this); + } + + @OWLObjectProperty(iri = Vocabulary.s_p_hasFunction, cascade = CascadeType.ALL, fetch = FetchType.EAGER) + private Set functions = new HashSet<>(); + @OWLObjectProperty(iri = Vocabulary.s_p_hasFailureMode, cascade = CascadeType.ALL, fetch = FetchType.EAGER) + private Set failureModes = new HashSet<>(); + + + public void addFunction(Function function) { + function.setItem(this); + getFunctions().add(function); + } + + public void addFailureMode(FailureMode failureMode) { + failureMode.setItem(this); + getFailureModes().add(failureMode); + } +} diff --git a/src/main/java/cz/cvut/kbss/analysis/model/System.java b/src/main/java/cz/cvut/kbss/analysis/model/System.java index 10ac4cb7..51ec3faf 100755 --- a/src/main/java/cz/cvut/kbss/analysis/model/System.java +++ b/src/main/java/cz/cvut/kbss/analysis/model/System.java @@ -2,6 +2,7 @@ import cz.cvut.kbss.analysis.util.Vocabulary; import cz.cvut.kbss.jopa.model.annotations.*; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -13,17 +14,7 @@ @OWLClass(iri = Vocabulary.s_c_System) @Getter @Setter -public class System extends NamedEntity { - - @OWLObjectProperty(iri = Vocabulary.s_p_documented_in) - private Set documents; - - @OWLObjectProperty(iri = Vocabulary.s_p_hasPartComponent, cascade = CascadeType.ALL, fetch = FetchType.EAGER) - private Set components = new HashSet<>(); - - public void addComponent(Component component) { - getComponents().add(component); - } +public class System extends Item { @Override public String toString() { diff --git a/src/main/java/cz/cvut/kbss/analysis/model/ava/ATASystem.java b/src/main/java/cz/cvut/kbss/analysis/model/ava/ATASystem.java new file mode 100644 index 00000000..a18d5d5a --- /dev/null +++ b/src/main/java/cz/cvut/kbss/analysis/model/ava/ATASystem.java @@ -0,0 +1,23 @@ +package cz.cvut.kbss.analysis.model.ava; + +import cz.cvut.kbss.analysis.model.Component; +import cz.cvut.kbss.analysis.model.Item; +import cz.cvut.kbss.analysis.model.System; +import cz.cvut.kbss.analysis.util.Vocabulary; +import cz.cvut.kbss.jopa.model.annotations.OWLClass; +import cz.cvut.kbss.jopa.model.annotations.OWLDataProperty; +import lombok.Getter; +import lombok.Setter; + +/** + * This entity represents an ATA system category. It can be used as a supertype to categorize an Item. + */ +@OWLClass(iri = Vocabulary.s_c_ata_system) +@Getter +@Setter +public class ATASystem extends Component { + + @OWLDataProperty(iri = Vocabulary.s_p_ata_code) + private String ataCode; + +} diff --git a/src/main/java/cz/cvut/kbss/analysis/model/ava/FHAEventType.java b/src/main/java/cz/cvut/kbss/analysis/model/ava/FHAEventType.java new file mode 100644 index 00000000..f54341d2 --- /dev/null +++ b/src/main/java/cz/cvut/kbss/analysis/model/ava/FHAEventType.java @@ -0,0 +1,28 @@ +package cz.cvut.kbss.analysis.model.ava; + +import cz.cvut.kbss.analysis.model.Event; +import cz.cvut.kbss.analysis.model.FaultEventType; +import cz.cvut.kbss.analysis.model.method.VerificationMethod; +import cz.cvut.kbss.analysis.util.Vocabulary; +import cz.cvut.kbss.jopa.model.annotations.OWLClass; +import cz.cvut.kbss.jopa.model.annotations.OWLDataProperty; +import cz.cvut.kbss.jopa.model.annotations.OWLObjectProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Set; + +@OWLClass(iri = Vocabulary.s_c_fha_fault_event) +@Setter +@Getter +public class FHAEventType extends FaultEventType { + + @OWLDataProperty(iri = Vocabulary.s_p_criticality) + private Set criticality; + + @OWLObjectProperty(iri = Vocabulary.s_c_verification_method) + private Set verificationMethods; + + @OWLDataProperty(iri = Vocabulary.s_p_material_reference) + private Set referencedMaterials; +} diff --git a/src/main/java/cz/cvut/kbss/analysis/model/ava/IndependentSNSItem.java b/src/main/java/cz/cvut/kbss/analysis/model/ava/IndependentSNSItem.java new file mode 100644 index 00000000..57956ba1 --- /dev/null +++ b/src/main/java/cz/cvut/kbss/analysis/model/ava/IndependentSNSItem.java @@ -0,0 +1,25 @@ +package cz.cvut.kbss.analysis.model.ava; + +import cz.cvut.kbss.analysis.model.Item; +import cz.cvut.kbss.analysis.util.Vocabulary; +import cz.cvut.kbss.jopa.model.annotations.OWLClass; +import cz.cvut.kbss.jopa.model.annotations.OWLDataProperty; +import lombok.Getter; +import lombok.Setter; + +/** + * This entity represents a Kind (typeCategory should be set to Kind) of independent Item used as a component in the SNS + * partonomy identified by a partNumber and stock. + * + * + */ +@OWLClass(iri = Vocabulary.s_c_reusable_system) +@Getter +@Setter +public class IndependentSNSItem extends Item { + @OWLDataProperty(iri = Vocabulary.s_p_part_number) + private String partNumber; + + @OWLDataProperty(iri = Vocabulary.s_p_stock) + private String stock; +} diff --git a/src/main/java/cz/cvut/kbss/analysis/model/ava/SNSComponent.java b/src/main/java/cz/cvut/kbss/analysis/model/ava/SNSComponent.java new file mode 100644 index 00000000..56ce1f1f --- /dev/null +++ b/src/main/java/cz/cvut/kbss/analysis/model/ava/SNSComponent.java @@ -0,0 +1,27 @@ +package cz.cvut.kbss.analysis.model.ava; + +import cz.cvut.kbss.analysis.model.Component; +import cz.cvut.kbss.analysis.util.Vocabulary; +import cz.cvut.kbss.jopa.model.annotations.OWLClass; +import cz.cvut.kbss.jopa.model.annotations.OWLDataProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.Set; + + +/* + * This entity represents component from an SNS partonomy. The SNSComponent categorized as a IndependentSNSItem Kind and + * or an ATASystem. + */ +@OWLClass(iri = Vocabulary.s_c_sns_component) +@Getter +@Setter +public class SNSComponent extends Component { + @OWLDataProperty(iri = Vocabulary.s_p_quantity) + private Integer quantity; + + @OWLDataProperty(iri = Vocabulary.s_p_schematic_designation) + private Set schematicDescription; + +} diff --git a/src/main/java/cz/cvut/kbss/analysis/model/method/EstimationMethod.java b/src/main/java/cz/cvut/kbss/analysis/model/method/EstimationMethod.java new file mode 100644 index 00000000..a895a004 --- /dev/null +++ b/src/main/java/cz/cvut/kbss/analysis/model/method/EstimationMethod.java @@ -0,0 +1,12 @@ +package cz.cvut.kbss.analysis.model.method; + +import cz.cvut.kbss.analysis.model.NamedEntity; +import cz.cvut.kbss.analysis.util.Vocabulary; +import cz.cvut.kbss.jopa.model.annotations.OWLClass; +import cz.cvut.kbss.jopa.model.annotations.OWLDataProperty; + +@OWLClass(iri = Vocabulary.s_c_failure_rate_general_estimation_method) +public class EstimationMethod extends NamedEntity { + @OWLDataProperty(iri = Vocabulary.s_p_code) + public String code; +} diff --git a/src/main/java/cz/cvut/kbss/analysis/model/method/VerificationMethod.java b/src/main/java/cz/cvut/kbss/analysis/model/method/VerificationMethod.java new file mode 100644 index 00000000..442bc6b8 --- /dev/null +++ b/src/main/java/cz/cvut/kbss/analysis/model/method/VerificationMethod.java @@ -0,0 +1,16 @@ +package cz.cvut.kbss.analysis.model.method; + +import cz.cvut.kbss.analysis.model.NamedEntity; +import cz.cvut.kbss.analysis.util.Vocabulary; +import cz.cvut.kbss.jopa.model.annotations.OWLClass; +import cz.cvut.kbss.jopa.model.annotations.OWLDataProperty; +import lombok.Getter; +import lombok.Setter; + +@OWLClass(iri = Vocabulary.s_c_verification_method) +@Getter +@Setter +public class VerificationMethod extends NamedEntity { + @OWLDataProperty(iri = Vocabulary.s_p_code) + public String code; +} diff --git a/src/main/java/cz/cvut/kbss/analysis/model/util/TypeCategory.java b/src/main/java/cz/cvut/kbss/analysis/model/util/TypeCategory.java new file mode 100644 index 00000000..79dfeca0 --- /dev/null +++ b/src/main/java/cz/cvut/kbss/analysis/model/util/TypeCategory.java @@ -0,0 +1,6 @@ +package cz.cvut.kbss.analysis.model.util; + +public enum TypeCategory { + ROLE, + KIND; +} diff --git a/src/main/java/cz/cvut/kbss/analysis/service/ComponentRepositoryService.java b/src/main/java/cz/cvut/kbss/analysis/service/ComponentRepositoryService.java index 17d6a2d0..4df5f6c3 100755 --- a/src/main/java/cz/cvut/kbss/analysis/service/ComponentRepositoryService.java +++ b/src/main/java/cz/cvut/kbss/analysis/service/ComponentRepositoryService.java @@ -59,7 +59,7 @@ public Function addFunction(URI componentUri, Function function) { component.addFunction(function); update(component); - function.setComponent(component); + function.setItem(component); log.info("< addFunction - {}", function); return function; @@ -100,7 +100,7 @@ public void deleteFunction(URI componentUri, URI functionUri) { component.getFunctions() .stream() .filter(function -> function.getUri().equals(functionUri)).findFirst().ifPresent(function -> { - function.setComponent(null); + function.setItem(null); component.getFunctions().remove(function); }); @@ -141,7 +141,7 @@ public void deleteFailureMode(URI componentUri, URI failureModeUri) { .removeIf(function -> function.getUri().equals(failureModeUri)); update(component); - failureMode.setComponent(null); + failureMode.setItem(null); failureModeRepositoryService.update(failureMode); log.info("> deleteFailureMode - deleted"); } @@ -154,8 +154,9 @@ public Component linkComponents(URI componentUri, URI linkComponentUri) { Component component = findRequired(componentUri); Component linkComponent = findRequired(linkComponentUri); - component.setParentComponent(linkComponent.getUri()); + linkComponent.addComponent(component); update(component); + update(linkComponent); log.info("< linkComponents"); return component; @@ -186,10 +187,10 @@ public void mergeComponents(URI sourceComponentUri, URI targetComponentUri){ findAll().stream() .filter(component -> component.getParentComponent() != null - && component.getParentComponent().equals(sourceComponentUri) + && component.getParentComponent().getUri().equals(sourceComponentUri) ) .forEach(component -> { - component.setParentComponent(targetComponentUri); + target.addComponent(component); update(component); }); diff --git a/src/main/java/cz/cvut/kbss/analysis/service/FailureModesTableRepositoryService.java b/src/main/java/cz/cvut/kbss/analysis/service/FailureModesTableRepositoryService.java index 5f12a041..e4eef36b 100755 --- a/src/main/java/cz/cvut/kbss/analysis/service/FailureModesTableRepositoryService.java +++ b/src/main/java/cz/cvut/kbss/analysis/service/FailureModesTableRepositoryService.java @@ -125,8 +125,8 @@ private List> computeTableRows(FailureModesTable table, List Function function = functionFailure.getFunction(); row.put("function", function.getName()); - Component component = function.getComponent(); - if(component != null) row.put("component", component.getName()); + Item item = function.getItem(); + if(item != null) row.put("component", item.getName()); // TODO be less strict due to deleted events?? FailureMode failureMode = localEffect.getFailureMode(); @@ -162,7 +162,7 @@ private List> computeTableRows(FailureModesTable table, List if (localEffect.getBehavior() != null && !treeRoot.getName().equals(localEffect.getName()) - && localEffect.getBehavior().getComponent() == function.getComponent()) { + && localEffect.getBehavior().getItem() == function.getItem()) { row.put("localEffect", localEffect.getName()); } localEffectUri = localEffect.getUri().toString(); diff --git a/src/main/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryService.java b/src/main/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryService.java index f227a8e6..5f929f42 100755 --- a/src/main/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryService.java +++ b/src/main/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryService.java @@ -4,9 +4,9 @@ import cz.cvut.kbss.analysis.dao.FaultTreeDao; import cz.cvut.kbss.analysis.dao.GenericDao; import cz.cvut.kbss.analysis.exception.LogicViolationException; -import cz.cvut.kbss.analysis.model.Component; import cz.cvut.kbss.analysis.model.FailureMode; import cz.cvut.kbss.analysis.model.FaultEvent; +import cz.cvut.kbss.analysis.model.Item; import cz.cvut.kbss.analysis.model.diagram.Rectangle; import cz.cvut.kbss.analysis.service.strategy.DirectFtaEvaluation; import lombok.extern.slf4j.Slf4j; @@ -87,8 +87,8 @@ public FailureMode addFailureMode(URI faultEventUri, FailureMode failureMode) { FaultEvent event = findRequired(faultEventUri); event.setBehavior(failureMode); - Component component = componentRepositoryService.findRequired(failureMode.getComponent().getUri()); - component.addFailureMode(failureMode); + Item item = componentRepositoryService.findRequired(failureMode.getItem().getUri()); + item.addFailureMode(failureMode); update(event); diff --git a/src/main/java/cz/cvut/kbss/analysis/service/SystemRepositoryService.java b/src/main/java/cz/cvut/kbss/analysis/service/SystemRepositoryService.java index e31e3c61..0a0cbb27 100755 --- a/src/main/java/cz/cvut/kbss/analysis/service/SystemRepositoryService.java +++ b/src/main/java/cz/cvut/kbss/analysis/service/SystemRepositoryService.java @@ -6,6 +6,7 @@ import cz.cvut.kbss.analysis.dao.SystemDao; import cz.cvut.kbss.analysis.model.Component; import cz.cvut.kbss.analysis.model.FailureMode; +import cz.cvut.kbss.analysis.model.Item; import cz.cvut.kbss.analysis.model.System; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -81,7 +82,7 @@ public void removeComponent(URI systemUri, URI componentUri) { public Set getAllFailureModes(URI systemUri) { System system = findRequired(systemUri); Set failureModes = new HashSet<>(); - for(Component comp: system.getComponents()) { + for(Item comp: system.getComponents()) { failureModes.addAll(comp.getFailureModes()); } return failureModes; diff --git a/src/test/java/cz/cvut/kbss/analysis/service/ComponentRepositoryServiceTest.java b/src/test/java/cz/cvut/kbss/analysis/service/ComponentRepositoryServiceTest.java index 8a0b5468..5fe1154c 100755 --- a/src/test/java/cz/cvut/kbss/analysis/service/ComponentRepositoryServiceTest.java +++ b/src/test/java/cz/cvut/kbss/analysis/service/ComponentRepositoryServiceTest.java @@ -134,7 +134,9 @@ void linkComponents_shouldFindComponents_shouldSetParentComponent_shouldCallUpda void linkComponents_shouldFindComponent_shouldSetParentNull_shouldCallUpdate() { Component component = new Component(); component.setUri(Generator.generateUri()); - component.setParentComponent(Generator.generateUri()); + Component parent = new Component(); + parent.setUri(Generator.generateUri()); + component.setParentComponent(parent); Mockito.when(componentDao.find(eq(component.getUri()))).thenReturn(Optional.of(component)); Mockito.when(componentDao.exists(eq(component.getUri()))).thenReturn(true); diff --git a/src/test/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryServiceTest.java b/src/test/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryServiceTest.java index 552d5992..4267acc2 100755 --- a/src/test/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryServiceTest.java +++ b/src/test/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryServiceTest.java @@ -16,7 +16,6 @@ import org.mockito.Mockito; import org.mockito.MockitoAnnotations; -import java.net.URI; import java.util.Optional; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -131,10 +130,10 @@ void addFailureMode_shouldSetData_shouldUpdateEvent() { failureMode.setUri(Generator.generateUri()); Component component = new Component(); component.setUri(Generator.generateUri()); - failureMode.setComponent(component); + failureMode.setItem(component); Mockito.when(faultEventDao.find(eq(event.getUri()))).thenReturn(Optional.of(event)); - Mockito.when(componentRepositoryService.findRequired(eq(failureMode.getComponent().getUri()))).thenReturn(component); + Mockito.when(componentRepositoryService.findRequired(eq(failureMode.getItem().getUri()))).thenReturn(component); Mockito.when(faultEventDao.exists(event.getUri())).thenReturn(true); Mockito.when(faultEventValidator.supports(any())).thenReturn(true); Mockito.when(faultEventDao.update(eq(event))).thenReturn(event);