/*
* Michel Héon PhD: Web sémantique et modélisation ontologique - Guide du développeur Java sous Eclipse
* This file is part of the book:
*
* Michel Héon
* Web sémantique et modélisation ontologique - Guide du développeur Java sous Eclipse
* 2014
* Editions ENI
* ISBN : 978-2-7460-8869-6
* EAN : 9782746088696
* France
*
* The contents of this file are subject to the LGPL License, Version 3.0.
*
* Copyright (C) 2014, Cotechnoe inc. http://www.cotechnoe.com, http://java-ws.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*
*
* Alternatively, the contents of this file may be used under the terms of the Apache License, Version 2.0
* in which case, the provisions of the Apache License Version 2.0 are applicable instead of those above.
*
* Copyright (C) 2014, Cotechnoe inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.java_ws.owlapi.exemple.util;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Set;
import org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxOntologyFormat;
import org.coode.owlapi.turtle.TurtleOntologyFormat;
import org.semanticweb.owlapi.io.OWLFunctionalSyntaxOntologyFormat;
import org.semanticweb.owlapi.io.OWLXMLOntologyFormat;
import org.semanticweb.owlapi.io.RDFXMLOntologyFormat;
import org.semanticweb.owlapi.io.StreamDocumentTarget;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLException;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyManager;
import org.semanticweb.owlapi.model.OWLOntologyStorageException;
import org.semanticweb.owlapi.reasoner.ConsoleProgressMonitor;
import org.semanticweb.owlapi.reasoner.OWLReasonerConfiguration;
import org.semanticweb.owlapi.reasoner.SimpleConfiguration;
import org.semanticweb.owlapi.util.InferredOntologyGenerator;
import org.semanticweb.owlapi.vocab.PrefixOWLOntologyFormat;
import com.clarkparsia.owlapi.explanation.PelletExplanation;
import com.clarkparsia.owlapi.explanation.io.manchester.ManchesterSyntaxExplanationRenderer;
import com.clarkparsia.pellet.owlapiv3.PelletReasoner;
import com.clarkparsia.pellet.owlapiv3.PelletReasonerFactory;
/** Auteur: Michel Héon PhD
* Cotechnoe http://www.cotechnoe.com
* Date: 15-jan-2014
*/
@SuppressWarnings("unused")
public class JavawsHelper {
public static void printOntology(OWLOntologyManager manager, PrefixOWLOntologyFormat format, OWLOntology ont) throws OWLOntologyStorageException {
manager.saveOntology(ont, format, new StreamDocumentTarget(System.out));
System.out.println("");
}
public static void printManchesterOWL(OWLOntologyManager manager, OWLOntology ont) throws OWLOntologyStorageException {
System.out.println("###################################################################################");
System.out.println("###################################################################################");
System.out.println("# ManchesterOWLSyntaxOntologyFormat #");
System.out.println("###################################################################################");
System.out.println("###################################################################################");
PrefixOWLOntologyFormat ontologySyntaxFormat = new ManchesterOWLSyntaxOntologyFormat();
ontologySyntaxFormat.setDefaultPrefix(ont.getOntologyID().getOntologyIRI()+ "#");
manager.saveOntology(ont, ontologySyntaxFormat, new StreamDocumentTarget(System.out));
}
public static void printFunctionalOWL(OWLOntologyManager manager, OWLOntology ont) throws OWLOntologyStorageException {
System.out.println("###################################################################################");
System.out.println("###################################################################################");
System.out.println("# OWLFunctionalSyntaxOntologyFormat #");
System.out.println("###################################################################################");
System.out.println("###################################################################################");
PrefixOWLOntologyFormat ontologySyntaxFormat = new OWLFunctionalSyntaxOntologyFormat();
ontologySyntaxFormat.setDefaultPrefix(ont.getOntologyID().getOntologyIRI()+ "#");
manager.saveOntology(ont, ontologySyntaxFormat, new StreamDocumentTarget(System.out));
}
public static void printXMLOntology(OWLOntologyManager manager, OWLOntology ont) throws OWLOntologyStorageException {
System.out.println("###################################################################################");
System.out.println("###################################################################################");
System.out.println("# OWLXMLOntologyFormat #");
System.out.println("###################################################################################");
System.out.println("###################################################################################");
PrefixOWLOntologyFormat ontologySyntaxFormat = new OWLXMLOntologyFormat();
ontologySyntaxFormat.setDefaultPrefix(ont.getOntologyID().getOntologyIRI()+ "#");
manager.saveOntology(ont, ontologySyntaxFormat, new StreamDocumentTarget(System.out));
}
public static void printTurtle(OWLOntologyManager manager, OWLOntology ont) throws OWLOntologyStorageException {
System.out.println("###################################################################################");
System.out.println("###################################################################################");
System.out.println("# TurtleOntologyFormat #");
System.out.println("###################################################################################");
System.out.println("###################################################################################");
PrefixOWLOntologyFormat ontologySyntaxFormat = new TurtleOntologyFormat();
ontologySyntaxFormat.setDefaultPrefix(ont.getOntologyID().getOntologyIRI()+ "#");
manager.saveOntology(ont, ontologySyntaxFormat, new StreamDocumentTarget(System.out));
}
public static void printRDFXML(OWLOntologyManager manager, OWLOntology ont) throws OWLOntologyStorageException {
System.out.println("###################################################################################");
System.out.println("###################################################################################");
System.out.println("# RDFXMLOntologyFormat #");
System.out.println("###################################################################################");
System.out.println("###################################################################################");
PrefixOWLOntologyFormat ontologySyntaxFormat = new RDFXMLOntologyFormat();
ontologySyntaxFormat.setDefaultPrefix(ont.getOntologyID().getOntologyIRI()+ "#");
manager.saveOntology(ont, ontologySyntaxFormat, new StreamDocumentTarget(System.out));
}
public static void infererOntologie(OWLOntologyManager manager, OWLOntology ontology) throws UnsupportedOperationException, OWLException, IOException {
PelletReasonerFactory reasonerFactory = PelletReasonerFactory.getInstance();
OWLOntology inferOntology = manager.createOntology();
ConsoleProgressMonitor progressMonitor = new ConsoleProgressMonitor();
OWLReasonerConfiguration config = new SimpleConfiguration(progressMonitor);
PelletReasoner reasoner = (PelletReasoner) reasonerFactory.createNonBufferingReasoner(ontology, config);
System.out.println("Is consistance ? Rep: "+reasoner.isConsistent());
if (reasoner.isConsistent())
{
InferredOntologyGenerator iog = new InferredOntologyGenerator(reasoner);
iog.fillOntology(manager, inferOntology);
// Imprimer l'ontologie inférée
PrefixOWLOntologyFormat ontologySyntaxFormat = new TurtleOntologyFormat();
ontologySyntaxFormat.setDefaultPrefix(ontology.getOntologyID().getOntologyIRI()+ "#");;
manager.saveOntology(inferOntology, ontologySyntaxFormat, new StreamDocumentTarget(System.out));
}
PelletExplanation expGen = new PelletExplanation( reasoner );
Set> exp = expGen.getInconsistencyExplanations();
imprimerExplication(exp);
}
/*
* Méthode d'impression d'une explication dans la notation Manchester
*/
public static void imprimerExplication(Set> exp) throws UnsupportedOperationException, OWLException, IOException{
ManchesterSyntaxExplanationRenderer renderer = new ManchesterSyntaxExplanationRenderer();
PrintWriter out = new PrintWriter( System.out );
renderer.startRendering( out );
renderer.render( exp );
renderer.endRendering();
}
}