All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.ac.manchester.owl.owlapi.tutorialowled2011.Debugger Maven / Gradle / Ivy

There is a newer version: 5.5.1
Show newest version
/*
 * This file is part of the OWL API.
 *
 * The contents of this file are subject to the LGPL License, Version 3.0.
 *
 * Copyright (C) 2011, The University of Manchester
 *
 * 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 2011, University of Manchester
 *
 * 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 uk.ac.manchester.owl.owlapi.tutorialowled2011;

import java.io.PrintWriter;
import java.util.HashSet;
import java.util.Set;

import org.semanticweb.owlapi.debugging.BlackBoxOWLDebugger;
import org.semanticweb.owlapi.debugging.OWLDebugger;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLException;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyManager;
import org.semanticweb.owlapi.reasoner.OWLReasoner;
import org.semanticweb.owlapi.reasoner.OWLReasonerFactory;

/**
 * This class demonstrates some aspects of the OWL API. It expects three
 * arguments:
 * 
    *
  1. The URI of an ontology
  2. *
  3. The URI of a reasoner
  4. *
  5. A location to place the results.
  6. *
* When executed, the class will find all inconsistent classes in the ontology. * For each inconsistent class, the debugger will be used to determine the set * of support for the inconsistency. A report will then be written to the outpur * file. * * @author Sean Bechhofer, The University Of Manchester, Information Management * Group, Date: 24-April-2007 */ @SuppressWarnings({ "javadoc" }) public class Debugger { private final OWLOntology ontology; private final OWLDebugger debugger; private final OWLReasoner checker; private final OWLClass bottom; public Debugger(OWLOntologyManager manager, OWLOntology ontology, OWLReasonerFactory reasonerFactory) { this.ontology = ontology; checker = reasonerFactory.createNonBufferingReasoner(ontology); /* Create a new debugger */ debugger = new BlackBoxOWLDebugger(manager, ontology, reasonerFactory); /* Get bottom */ bottom = manager.getOWLDataFactory().getOWLNothing(); } public void report(PrintWriter writer) throws OWLException { OWLTutorialSyntaxObjectRenderer renderer = new OWLTutorialSyntaxObjectRenderer( ontology, writer); /* Write a header */ renderer.header(); Set unsatisfiables = new HashSet(); for (OWLClass clazz : ontology.getClassesInSignature()) { /* Collect the unsatisfiable classes that aren't bottom. */ if (!checker.isSatisfiable(clazz) && !clazz.equals(bottom)) { unsatisfiables.add(clazz); } } writer.println("

Ontology Debugging Report

"); writer.println("
Ontology: " + ontology.getOntologyID() + "
"); if (unsatisfiables.isEmpty()) { writer.println("
No Unsatisfiable Classes found
"); } else { for (OWLClass unsatisfiable : unsatisfiables) { writer.println("
\n"); writer.println("

"); unsatisfiable.accept(renderer); writer.println("

"); writer.println("
Axioms causing inconsistency:
"); writer.println("
    "); /* * Find the set of support for the inconsistency. This will * return us a collection of axioms */ Set sos = debugger .getSOSForIncosistentClass(unsatisfiable); /* Print the axioms. */ for (OWLAxiom axiom : sos) { writer.println("
  • "); axiom.accept(renderer); writer.println("
  • "); } writer.println("
"); writer.println("
\n"); } } renderer.footer(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy