Switch to side-by-side view

--- a
+++ b/src/main/java/net/timbusproject/iermtoowl/utils/OntologyMapper.java
@@ -0,0 +1,138 @@
+package net.timbusproject.iermtoowl.utils;
+
+import net.timbusproject.iermtoowl.BusinessActivity;
+import net.timbusproject.iermtoowl.Resource;
+import net.timbusproject.iermtoowl.Risk;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.semanticweb.owlapi.model.OWLOntology;
+import org.semanticweb.owlapi.model.OWLOntologyManager;
+import org.semanticweb.owlapi.model.OWLOntologyStorageException;
+import pt.caixamagica.owl.owlapi.Ontology;
+import pt.caixamagica.owl.owlapi.Prefix;
+import pt.caixamagica.owl.owlapi.exceptions.OntologyCreationException;
+import pt.caixamagica.owl.owlapi.impl.axioms.ClassAxiom;
+import pt.caixamagica.owl.owlapi.impl.axioms.DataPropertyAxiom;
+import pt.caixamagica.owl.owlapi.impl.axioms.ObjectPropertyAxiom;
+
+import java.io.*;
+import java.util.UUID;
+
+/**
+ * Created by miguel on 25-06-2014.
+ */
+public class OntologyMapper {
+
+    private Ontology ontology;
+
+    public OntologyMapper() {
+        try {
+            ontology = Ontology.createOntology("http://timbus.teco.edu/ontologies/examples/ierm-ontology.owl");
+        } catch (OntologyCreationException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public String run(String[] imports) throws IOException, OWLOntologyStorageException {
+        ontology.addImport("http://timbus.teco.edu/ontologies/DIO.owl");
+        ontology.addImport("http://timbus.teco.edu/public/ontologies/DSOs/risk.owl");
+        if (imports != null)
+            for (String importt : imports)
+                ontology.addImport(importt);
+
+        ontology.addPrefix(
+                new Prefix("risk", "http://timbus.teco.edu/ontologies/DSOs/risk.owl"),
+                new Prefix("dio", "http://timbus.teco.edu/ontologies/DIO.owl")
+        );
+/*
+        System.out.println(ontology.getOntologyIRI());
+        System.exit(0);*/
+
+        for (BusinessActivity ba : UnifiedRiskReader.riskXml.getBusinessActivity()) {
+            addActivity(ba);
+        }
+        for (Risk r : UnifiedRiskReader.riskXml.getRisk()) {
+            addRisk(r);
+        }
+
+        return getOntology(ontology);
+    }
+
+
+    private void addActivity(BusinessActivity activity) {
+        ontology.addAxiom(true,
+                new ClassAxiom(activity.getId(), "dio:BusinessProcess"),
+                new DataPropertyAxiom<>(activity.getId(), "dio:label", activity.getName())
+        );
+        for (Resource r : activity.getRequiredResourceInstance()) {
+            System.out.println("hellO");
+            ontology.addAxiom(false,
+                    new ObjectPropertyAxiom(ontology.getOntologyIRI() + "#" + activity.getId(), ontology.getPrefixManager().getIRI("dio:") + "uses", r.getContextModelURI())
+            );
+        }
+    }
+
+    private void addRisk(Risk risk) {
+        ontology.addAxiom(true, new ClassAxiom(risk.getId(), "risk:Risk"));
+        if (risk.getName() != null && !risk.getName().equals(""))
+            ontology.addAxiom(true, new DataPropertyAxiom<>(risk.getId(), "dio:label", risk.getName()));
+
+        if (risk.getLikelihood() != null && !risk.getLikelihood().equals(""))
+            ontology.addAxiom(true, new DataPropertyAxiom<>(risk.getId(), "risk:likelihood", risk.getLikelihood()));
+        if (risk.getPotentialLoss() != null && !risk.getPotentialLoss().equals(""))
+            ontology.addAxiom(true, new DataPropertyAxiom<>(risk.getId(), "risk:potentialLoss", risk.getPotentialLoss()));
+        if (risk.getStrategicImpact() != null && !risk.getStrategicImpact().equals(""))
+            ontology.addAxiom(true, new DataPropertyAxiom<>(risk.getId(), "risk:strategicImpact", risk.getStrategicImpact()));
+        if (risk.getCustomerImpact() != null && !risk.getCustomerImpact().equals(""))
+            ontology.addAxiom(true, new DataPropertyAxiom<>(risk.getId(), "risk:customerImpact", risk.getCustomerImpact()));
+        if (risk.getLegalImpact() != null && !risk.getLegalImpact().equals(""))
+            ontology.addAxiom(true, new DataPropertyAxiom<>(risk.getId(), "risk:legalImpact", risk.getLegalImpact()));
+        if (Double.valueOf(risk.getMaxRecoveryTime()) != null)
+            ontology.addAxiom(true, new DataPropertyAxiom<>(risk.getId(), "risk:maxRecoveryTime", risk.getMaxRecoveryTime()));
+        if (Double.valueOf(risk.getMinRecoveryTime()) != null)
+            ontology.addAxiom(true, new DataPropertyAxiom<>(risk.getId(), "risk:minRecoveryTime", risk.getMinRecoveryTime()));
+        /*if (risk.getName() != null && !risk.getName().equals(""))
+            ontology.addAxiom(true, new DataPropertyAxiom<>(risk.getId(), "risk:riskCategory", risk.getRiskCategory()));*/
+
+        if (risk.getOccurInBusinessActivity() != null && !risk.getOccurInBusinessActivity().equals("")) {
+            ontology.addAxiom(true, new ObjectPropertyAxiom(risk.getId(), "risk:occurInBusinessActivity", risk.getOccurInBusinessActivity()));
+        }
+        if (risk.getOccurInResourceInstance() != null) {
+            String uri = risk.getOccurInResourceInstance().getContextModelURI();
+            ontology.addAxiom(false, new ObjectPropertyAxiom(ontology.getOntologyIRI() + "#" + risk.getId(), ontology.getPrefixManager().getIRI("risk:") + "occurInResource", uri));
+        }
+
+    }
+
+    public String getOntology(Ontology api) throws IOException, OWLOntologyStorageException {
+        OWLOntology ontology = api.getOntology();
+        OWLOntologyManager manager = ontology.getOWLOntologyManager();
+
+        File file = File.createTempFile(UUID.randomUUID().toString(), ".tmp");
+        manager.saveOntology(ontology, new FileOutputStream(file));
+
+        StringWriter writer = new StringWriter();
+
+        IOUtils.copy(new FileInputStream(file), writer);
+
+        //noinspection ResultOfMethodCallIgnored
+        file.delete();
+        return writer.toString();
+    }
+
+
+    public static void main(String[] args) throws IOException, OWLOntologyStorageException {
+        String path = "/home/miguel/Documentos/ierm-bpmn-owl-project/ierm-owl/risk-output-forDPES.xml";
+
+        UnifiedRiskReader reader = new UnifiedRiskReader();
+        OntologyMapper mapper = new OntologyMapper();
+
+        reader.readFromFile(path);
+        String owlString = mapper.run(new String[]{"http://timbus.teco.edu/ontologies/examples/WP9-eHealth/y3review.owl"});
+
+        File file = new File("outputTest.owl");
+
+        FileUtils.writeStringToFile(file, owlString);
+
+    }
+}