001package org.dllearner.algorithms.qtl.util.filters;
002
003import org.dllearner.algorithms.qtl.QueryTreeUtils;
004import org.dllearner.algorithms.qtl.datastructures.impl.RDFResourceTree;
005import org.dllearner.core.AbstractReasonerComponent;
006
007/**
008 * Tree filter that removes redundant rdf:type edges according to subsumption by using the
009 * given reasoner.
010 *
011 * @author Lorenz Buehmann
012 */
013public class MostSpecificTypesFilter extends  AbstractTreeFilter<RDFResourceTree>{
014
015    private final AbstractReasonerComponent reasoner;
016
017    public MostSpecificTypesFilter(AbstractReasonerComponent reasoner) {
018        this.reasoner = reasoner;
019    }
020
021
022    @Override
023    public RDFResourceTree apply(RDFResourceTree tree) {
024        RDFResourceTree copy = new RDFResourceTree(tree);
025
026        QueryTreeUtils.keepMostSpecificTypes(copy, reasoner);
027
028        return copy;
029    }
030
031
032}