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

org.mindswap.pellet.examples.IncrementalClassifierExample 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 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;

/**
 * 

* Title: IncrementalClassifierExample *

*

* Description: This programs shows the usage and performance of the incremental * classifier *

*

* Copyright: Copyright (c) 2008 *

*

* Company: Clark & Parsia, LLC. *

* * @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(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy