001/**
002 * Copyright (C) 2007 - 2016, Jens Lehmann
003 *
004 * This file is part of DL-Learner.
005 *
006 * DL-Learner is free software; you can redistribute it and/or modify
007 * it under the terms of the GNU General Public License as published by
008 * the Free Software Foundation; either version 3 of the License, or
009 * (at your option) any later version.
010 *
011 * DL-Learner is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
014 * GNU General Public License for more details.
015 *
016 * You should have received a copy of the GNU General Public License
017 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
018 */
019package org.dllearner.utilities.split;
020
021import java.util.List;
022import java.util.Map;
023import java.util.Set;
024
025import org.dllearner.core.Component;
026import org.semanticweb.owlapi.model.OWLDataProperty;
027import org.semanticweb.owlapi.model.OWLDatatype;
028import org.semanticweb.owlapi.model.OWLLiteral;
029
030/**
031 * A values splitter is supposed to return a sorted list of split literals
032 * for a data property <code>p</code>, such that those split values can be used
033 * in a refinement
034 * operator to generate facet restrictions on the value space of <code>p</code>,
035 * e.g. <code> p some int[>=100] </code>
036 * 
037 * @author Lorenz Buehmann
038 *
039 */
040public interface ValuesSplitter extends Component {
041
042        /**
043         * Computes split literals for all applicable data properties in the
044         * ontology
045         * 
046         * @return a map of data properties and their splitting values
047         */
048        Map<OWLDataProperty, List<OWLLiteral>> computeSplits();
049
050        /**
051         * Computes split literals for the given data property
052         * 
053         * @param dp the data property
054         * @return a list of split literals
055         */
056        List<OWLLiteral> computeSplits(OWLDataProperty dp);
057
058        /**
059         * @return the supported datatypes
060         */
061        Set<OWLDatatype> getDatatypes();
062
063}