Package org.mindswap.pellet.examples

Source Code of org.mindswap.pellet.examples.ExplanationExample

// Copyright (c) 2006 - 2008, Clark & Parsia, LLC. <http://www.clarkparsia.com>
// 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: licensing@clarkparsia.com

package org.mindswap.pellet.examples;

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

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;

/**
* <p>
* Title: ExplanationExample
* </p>
* <p>
* Description: This program shows how to use Pellet's explanation service
* </p>
* <p>
* Copyright: Copyright (c) 2008
* </p>
* <p>
* Company: Clark & Parsia, LLC. <http://www.clarkparsia.com>
* </p>
*
* @author Markus Stocker
* @author Evren Sirin
*/
public class ExplanationExample {

  private static final String  file  = "file:examples/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.loadOntology( IRI.create( file ) );

    // 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<Set<OWLAxiom>> 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();
  }
}
TOP

Related Classes of org.mindswap.pellet.examples.ExplanationExample

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.