001package org.dllearner.scripts; 002 003import org.dllearner.utilities.owl.OWLAxiomCBDGenerator; 004import org.semanticweb.owlapi.apibinding.OWLManager; 005import org.semanticweb.owlapi.formats.RDFXMLDocumentFormat; 006import org.semanticweb.owlapi.model.*; 007import org.slf4j.Logger; 008import org.slf4j.LoggerFactory; 009 010import java.io.File; 011import java.io.FileOutputStream; 012import java.util.ArrayList; 013import java.util.Arrays; 014import java.util.List; 015import java.util.Set; 016 017public class ReactomeCBD { 018 private static final Logger logger = LoggerFactory.getLogger(ReactomeCBD.class); 019 private static String dumpFilePath = "/tmp/tr.owl"; 020 private static String cbdFilePath = "/tmp/tr_cbd.owl"; 021 private static int cbdDepth = 30; 022 private static List<String> exampleUris = new ArrayList<>(Arrays.asList( 023 // positive 024 "http://www.reactome.org/biopax/48887#BiochemicalReaction670", 025 "http://www.reactome.org/biopax/48887#BiochemicalReaction1968", 026 "http://www.reactome.org/biopax/48887#BiochemicalReaction1331", 027 "http://www.reactome.org/biopax/48887#BiochemicalReaction3743", 028 "http://www.reactome.org/biopax/48887#BiochemicalReaction3244", 029 // negative 030 "http://www.reactome.org/biopax/48887#BiochemicalReaction2588", 031 "http://www.reactome.org/biopax/48887#BiochemicalReaction4826", 032 "http://www.reactome.org/biopax/48887#Degradation10", 033 "http://www.reactome.org/biopax/48887#BiochemicalReaction2187", 034 "http://www.reactome.org/biopax/48887#BiochemicalReaction1273" 035 )); 036 037 public static void main (String[] args) throws Exception { 038 OWLOntologyManager man = OWLManager.createOWLOntologyManager(); 039 OWLDataFactory factory = man.getOWLDataFactory(); 040 logger.info("Loading ontology..."); 041 OWLOntology ontology = man.loadOntologyFromOntologyDocument(new File(dumpFilePath)); 042 logger.info("Done"); 043 OWLAxiomCBDGenerator cbdGenartor = new OWLAxiomCBDGenerator(ontology); 044 cbdGenartor.setFetchCompleteRelatedTBox(true); 045 046 OWLOntology cbdOnt = man.createOntology(); 047 048 for (String uri : exampleUris) { 049 logger.info("Creating cbd for " + uri + "..."); 050 Set<OWLAxiom> cbdAxioms = cbdGenartor.getCBD(factory.getOWLNamedIndividual(IRI.create(uri)), cbdDepth); 051 logger.info(" Done. Adding {} axioms to main CBD dataset...", cbdAxioms.size()); 052 man.addAxioms(cbdOnt, cbdAxioms); 053 logger.info(" Also done"); 054 } 055 056 man.saveOntology(cbdOnt, new RDFXMLDocumentFormat(), new FileOutputStream(new File(cbdFilePath))); 057 } 058}