From: <lor...@us...> - 2011-12-07 22:23:10
|
Revision: 3488 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3488&view=rev Author: lorenz_b Date: 2011-12-07 22:23:04 +0000 (Wed, 07 Dec 2011) Log Message: ----------- Continued greedy algorithm implementation to build cohaerent ontology. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/utilities/GreedyCohaerencyExtractor.java Modified: trunk/components-core/src/main/java/org/dllearner/utilities/GreedyCohaerencyExtractor.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/utilities/GreedyCohaerencyExtractor.java 2011-12-07 21:50:12 UTC (rev 3487) +++ trunk/components-core/src/main/java/org/dllearner/utilities/GreedyCohaerencyExtractor.java 2011-12-07 22:23:04 UTC (rev 3488) @@ -16,6 +16,8 @@ import org.semanticweb.owlapi.model.OWLOntologyManager; import org.semanticweb.owlapi.reasoner.OWLReasoner; +import com.clarkparsia.modularity.IncrementalClassifier; + public class GreedyCohaerencyExtractor { public GreedyCohaerencyExtractor() { @@ -23,6 +25,9 @@ } public OWLOntology getCoharentOntology(OWLOntology ontology) throws OWLOntologyCreationException{ + IncrementalClassifier reasoner = new IncrementalClassifier(ontology); + reasoner.classify(); + BidiMap<AxiomType<? extends OWLAxiom>, Integer> axiomType2CountMap = getAxiomTypeCount(ontology); Map<AxiomType<? extends OWLAxiom>, List<OWLAxiom>> axiomType2AxiomsMap = new HashMap<AxiomType<? extends OWLAxiom>, List<OWLAxiom>>(); @@ -33,12 +38,22 @@ int lcm = lcm(new ArrayList<Integer>(axiomType2CountMap.values())); OWLOntologyManager man = OWLManager.createOWLOntologyManager(); + man.addOntologyChangeListener(reasoner); OWLOntology cohaerentOntology = man.createOntology(); + boolean isCohaerent = true; for(int i = 0; i < lcm; i++){ - for(Entry<AxiomType<? extends OWLAxiom>, Integer> entry : axiomType2CountMap.entrySet()){ - if((i % entry.getValue()) == 0){ - man.addAxiom(cohaerentOntology, axiomType2AxiomsMap.get(entry.getKey()).remove(0)); + if(isCohaerent){ + for(Entry<AxiomType<? extends OWLAxiom>, Integer> entry : axiomType2CountMap.entrySet()){ + if((i % entry.getValue()) == 0){ + OWLAxiom ax = axiomType2AxiomsMap.get(entry.getKey()).remove(0); + man.addAxiom(cohaerentOntology, ax); + isCohaerent = reasoner.getUnsatisfiableClasses().getEntitiesMinusBottom().isEmpty(); + if(!isCohaerent){ + man.removeAxiom(cohaerentOntology, ax); + break; + } + } } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |