package io.lumify.core.cmdline; import com.google.inject.Inject; import io.lumify.core.model.ontology.OntologyRepository; import io.lumify.core.util.LumifyLogger; import io.lumify.core.util.LumifyLoggerFactory; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.OptionBuilder; import org.apache.commons.cli.Options; import org.semanticweb.owlapi.model.IRI; import java.io.File; public class OwlImport extends CommandLineBase { private static final LumifyLogger LOGGER = LumifyLoggerFactory.getLogger(OwlImport.class); private String inFileName; private String documentIRIString; public static void main(String[] args) throws Exception { int res = new OwlImport().run(args); if (res != 0) { System.exit(res); } } @Override protected Options getOptions() { Options options = super.getOptions(); options.addOption( OptionBuilder .withLongOpt("in") .withDescription("The input OWL file") .isRequired() .hasArg(true) .withArgName("fileName") .create("i") ); options.addOption( OptionBuilder .withLongOpt("iri") .withDescription("The document IRI (URI used for prefixing concepts)") .hasArg(true) .withArgName("uri") .create() ); return options; } @Override protected void processOptions(CommandLine cmd) throws Exception { super.processOptions(cmd); this.inFileName = cmd.getOptionValue("in"); this.documentIRIString = cmd.getOptionValue("iri"); } @Override protected int run(CommandLine cmd) throws Exception { File inFile = new File(this.inFileName); IRI documentIRI; if (this.documentIRIString == null) { String guessedIri = getOntologyRepository().guessDocumentIRIFromPackage(inFile); documentIRI = IRI.create(guessedIri); } else { documentIRI = IRI.create(this.documentIRIString); } getOntologyRepository().importFile(inFile, documentIRI, getAuthorizations()); getGraph().flush(); getOntologyRepository().clearCache(); LOGGER.info("owl import complete"); return 0; } }