001package org.dllearner.scripts;
002
003import org.dllearner.examples.MouseDiabetes;
004import org.dllearner.utilities.owl.OWLAxiomCBDGenerator;
005import org.semanticweb.owlapi.apibinding.OWLManager;
006import org.semanticweb.owlapi.formats.RDFXMLDocumentFormat;
007import org.semanticweb.owlapi.model.*;
008import org.slf4j.Logger;
009import org.slf4j.LoggerFactory;
010
011import java.io.File;
012import java.io.FileOutputStream;
013import java.util.ArrayList;
014import java.util.List;
015import java.util.Set;
016
017public class MouseDiabetesCBD {
018    private static final Logger logger = LoggerFactory.getLogger(MouseDiabetesCBD.class);
019    public static String cbdFilePath = "/tmp/smallis/kb_cbd_05.owl";
020    private static int cbdDepth = 5;
021    
022        public static int nrOfPosExamples = 5;
023        public static int nrOfNegExamples = 5;
024        
025        private static List<OWLIndividual> exampleUris = new ArrayList<>();
026
027    public static void main (String[] args) throws Exception {
028        OWLOntologyManager man = OWLManager.createOWLOntologyManager();
029        OWLDataFactory factory = man.getOWLDataFactory();
030        
031        logger.info("Loading ontology files...");
032        OWLOntology ontology = MouseDiabetes.readDumpFiles();
033        logger.info("Done");
034        OWLAxiomCBDGenerator cbdGenartor = new OWLAxiomCBDGenerator(ontology);
035        cbdGenartor.setFetchCompleteRelatedTBox(true);
036        
037        List<OWLIndividual> posExamples = new ArrayList<>(MouseDiabetes.loadPosExamples());
038        exampleUris.addAll(posExamples.subList(0, nrOfPosExamples ));
039        List<OWLIndividual> negExamples = new ArrayList<>(MouseDiabetes.loadNegExamples());
040        exampleUris.addAll(negExamples.subList(0, nrOfNegExamples ));
041
042        OWLOntology cbdOnt = man.createOntology();
043
044        for (OWLIndividual ind : exampleUris) {
045            logger.info("Creating cbd for " + ind + "...");
046            Set<OWLAxiom> cbdAxioms = cbdGenartor.getCBD(factory.getOWLNamedIndividual(IRI.create(ind.toStringID())), cbdDepth);
047            logger.info("  Done. Adding {} axioms to main CBD dataset...", cbdAxioms.size());
048            man.addAxioms(cbdOnt, cbdAxioms);
049            logger.info("  Also done");
050        }
051
052        man.saveOntology(cbdOnt, new RDFXMLDocumentFormat(), new FileOutputStream(new File(cbdFilePath)));
053    }
054}