001 package org.dllearner.algorithms.refinement2;
002
003 import java.util.Comparator;
004
005 import org.dllearner.core.ReasonerComponent;
006 import org.dllearner.core.owl.Description;
007 import org.dllearner.utilities.owl.ConceptComparator;
008
009 public class SubsumptionComparator implements Comparator<Description> {
010
011 private ReasonerComponent rs;
012 private ConceptComparator cc = new ConceptComparator();
013
014 public SubsumptionComparator(ReasonerComponent rs) {
015 this.rs = rs;
016 }
017
018 public int compare(ExampleBasedNode arg0, ExampleBasedNode arg1) {
019 Description concept1 = arg0.getConcept();
020 Description concept2 = arg1.getConcept();
021 return compare(concept1, concept2);
022 }
023
024 public int compare(Description concept1, Description concept2) {
025 // return true if concept1 is a super concept of concept2
026 boolean value1 = rs.isSuperClassOf(concept1, concept2);
027 if(value1)
028 return 1;
029
030 boolean value2 = rs.isSuperClassOf(concept2, concept1);
031 if(value2)
032 return -1;
033
034 // System.out.println("Incomparable: " + concept1 + " " + concept2);
035
036 // both concepts are incomparable => order them syntactically
037 return cc.compare(concept1, concept2);
038 }
039
040 }