Package org.mindswap.pellet.examples

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

// 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 org.mindswap.pellet.utils.Timer;
import org.mindswap.pellet.utils.Timers;
import org.semanticweb.owlapi.model.AddAxiom;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.RemoveAxiom;

import com.clarkparsia.modularity.IncrementalClassifier;
import com.clarkparsia.owlapiv3.OWL;

/**
* <p>
* Title: IncrementalClassifierExample
* </p>
* <p>
* Description: This programs shows the usage and performance of the incremental
* classifier
* </p>
* <p>
* Copyright: Copyright (c) 2008
* </p>
* <p>
* Company: Clark & Parsia, LLC. <http://www.clarkparsia.com>
* </p>
*
* @author Markus Stocker
*/
public class IncrementalClassifierExample {

  // The ontology we use for classification
  private static final String  file  = "file:examples/data/simple-galen.owl";
  // Don't modify this
  private static final String  NS    = "http://www.co-ode.org/ontologies/galen#";

  public void run() throws OWLOntologyCreationException {
    // Load the ontology file into an OWL ontology object
    OWLOntology ontology = OWL.manager.loadOntology( IRI.create( file ) );

    // Get some entities
    OWLClass headache = OWL.Class( NS + "Headache" );
    OWLClass pain = OWL.Class( NS + "Pain" );
   
    // Get an instance of the incremental classifier
    IncrementalClassifier classifier = new IncrementalClassifier( ontology );

    // We need some timing to show the performance of the classification
    Timers timers = new Timers();

    // We classify the ontology and use a specific timer to keep track of
    // the time required for the classification
    Timer t = timers.createTimer( "First classification" );
    t.start();
    classifier.classify();
    t.stop();
       
    System.out.println( "\nClassification time: " + t.getTotal() + "ms");
    System.out.println( "Subclasses of " + pain + ": " + classifier.getSubClasses( pain, true ).getFlattened() + "\n");
   
    // Now create a new OWL axiom, subClassOf(Headache, Pain)
    OWLAxiom axiom = OWL.subClassOf( headache, pain );

    // Add the axiom to the ontology, which creates a change event
    OWL.manager.applyChange( new AddAxiom( ontology, axiom ) );

    // Now we create a second timer to keep track of the performance of the
    // second classification
    t = timers.createTimer( "Second classification" );
    t.start();
    classifier.classify();
    t.stop();
   
    System.out.println( "\nClassification time: " + t.getTotal() + "ms");
    System.out.println( "Subclasses of " + pain + ": " + classifier.getSubClasses( pain, true ).getFlattened() + "\n");

    // Remove the axiom from the ontology, which creates a change event
    OWL.manager.applyChange( new RemoveAxiom( ontology, axiom ) );

    // Now we create a third timer to keep track of the performance of the
    // third classification
    timers.startTimer( "Third classification" );
    classifier.classify();
    timers.stopTimer( "Third classification" );
   
    System.out.println( "\nClassification time: " + t.getTotal() + "ms");
    System.out.println( "Subclasses of " + pain + ": " + classifier.getSubClasses( pain, true ).getFlattened() + "\n");
   
    // Finally, print the timing. As you can see, the second classification
    // takes significantly less time, which is the characteristic of the
    // incremental classifier.
    System.out.println( "Timers summary" );
    for( Timer timer : timers.getTimers() ) {
      if( !timer.isStarted() )
        System.out.println( timer.getName() + ": " + timer.getTotal() + "ms" );
    }
  }

  public static void main(String[] args) throws OWLOntologyCreationException {
    IncrementalClassifierExample app = new IncrementalClassifierExample();
    app.run();
  }

}
TOP

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

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.