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

org.mindswap.pellet.examples.ExplanationExample Maven / Gradle / Ivy

// Copyright (c) 2006 - 2008, Clark & Parsia, LLC. 
// This source code is available under the terms of the Affero General Public
// License v3.
//
// Please see LICENSE.txt for full license terms, including the availability of
// proprietary exceptions.
// Questions, comments, or requests for clarification: [email protected]

package org.mindswap.pellet.examples;

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

import org.semanticweb.owlapi.formats.RDFXMLOntologyFormatFactory;
import org.semanticweb.owlapi.io.StreamDocumentSource;
import org.semanticweb.owlapi.model.IRI;
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.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.OWLOntologyManager;

import com.clarkparsia.owlapi.explanation.PelletExplanation;
import com.clarkparsia.owlapi.explanation.io.manchester.ManchesterSyntaxExplanationRenderer;
import com.clarkparsia.owlapiv3.OWL;
import com.clarkparsia.pellet.owlapiv3.PelletReasoner;
import com.clarkparsia.pellet.owlapiv3.PelletReasonerFactory;

/**
 * 

* Title: ExplanationExample *

*

* Description: This program shows how to use Pellet's explanation service *

*

* Copyright: Copyright (c) 2008 *

*

* Company: Clark & Parsia, LLC. *

* * @author Markus Stocker * @author Evren Sirin */ public class ExplanationExample { private static final String file = "/data/people+pets.owl"; private static final String NS = "http://cohse.semanticweb.org/ontologies/people#"; public void run() throws OWLOntologyCreationException, OWLException, IOException { PelletExplanation.setup(); // The renderer is used to pretty print explanation ManchesterSyntaxExplanationRenderer renderer = new ManchesterSyntaxExplanationRenderer(); // The writer used for the explanation rendered PrintWriter out = new PrintWriter( System.out ); renderer.startRendering( out ); // Create an OWLAPI manager that allows to load an ontology file and // create OWLEntities OWLOntologyManager manager = OWL.manager; OWLOntology ontology = manager.loadOntologyFromOntologyDocument( new StreamDocumentSource(this.getClass().getResourceAsStream( file ) , new RDFXMLOntologyFormatFactory() ) ); // Create the reasoner and load the ontology PelletReasoner reasoner = PelletReasonerFactory.getInstance().createReasoner( ontology ); // Create an explanation generator PelletExplanation expGen = new PelletExplanation( reasoner ); // Create some concepts OWLClass madCow = OWL.Class( NS + "mad+cow" ); OWLClass animalLover = OWL.Class( NS + "animal+lover" ); OWLClass petOwner = OWL.Class( NS + "pet+owner" ); // Explain why mad cow is an unsatisfiable concept Set> exp = expGen.getUnsatisfiableExplanations( madCow ); out.println( "Why is " + madCow + " concept unsatisfiable?" ); renderer.render( exp ); // Now explain why animal lover is a sub class of pet owner exp = expGen.getSubClassExplanations( animalLover, petOwner ); out.println( "Why is " + animalLover + " subclass of " + petOwner + "?" ); renderer.render( exp ); renderer.endRendering(); } public static void main(String[] args) throws OWLOntologyCreationException, OWLException, IOException { ExplanationExample app = new ExplanationExample(); app.run(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy