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}