package org.drools.shapes.xsd; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.coode.owlapi.turtle.TurtleOntologyFormat; import org.semanticweb.owlapi.model.OWLOntology; import org.w3._2001.xmlschema.Schema; import java.io.File; import java.io.FileOutputStream; import java.net.URL; import java.util.List; /** * Goal * * @goal generate-owl * * @phase generate-sources * @requiresDependencyResolution compile */ public class Xsd2OwlPlugin extends AbstractMojo { /** * @parameter */ private List<String> schemaLocations; public List<String> getSchemaLocations() { return schemaLocations; } public void setSchemaLocations(List<String> schemaLocations) { this.schemaLocations = schemaLocations; } /** * @parameter default-value="./target/generated-sources" */ private File outputDirectory; public File getOutputDirectory() { return outputDirectory; } public void setOutputDirectory(File outputDirectory) { this.outputDirectory = outputDirectory; } /** * @parameter default-value="false" */ private boolean checkConsistency; public boolean isCheckConsistency() { return checkConsistency; } public void setCheckConsistency(boolean checkConsistency) { this.checkConsistency = checkConsistency; } public void execute() throws MojoExecutionException, MojoFailureException { try { for ( String loc : schemaLocations ) { System.out.println( ">> Looking for " + loc ); Xsd2Owl converter = Xsd2OwlImpl.getInstance(); URL url = new File( loc ).toURI().toURL(); System.out.println( "FOUND URL " + url ); if ( url != null ) { Schema x = converter.parse( url ); OWLOntology onto = converter.transform( x, url, false, checkConsistency ); if ( ! outputDirectory.exists() ) { outputDirectory.mkdirs(); } //TODO Add more formats String src = loc.substring( loc.lastIndexOf( File.separator ) ) + ".ttl"; converter.stream( onto, new FileOutputStream( outputDirectory.getPath() + "/" + src ), new TurtleOntologyFormat() ); } else { System.err.println( "Alas, resource " + loc + " was not found from" + new File(".").getAbsolutePath() ); } } } catch ( Exception e ) { System.out.println( e.getMessage() ); } } }