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.examples;
020
021import java.util.SortedSet;
022import java.util.TreeSet;
023
024import org.apache.log4j.Logger;
025import org.dllearner.kb.sparql.SPARQLTasks;
026
027public class AutomaticPositiveExampleFinderSPARQL {
028        
029        // LOGGER
030        private static Logger logger = Logger
031        .getLogger(AutomaticPositiveExampleFinderSPARQL.class);
032
033        
034        private SPARQLTasks sparqltasks;
035        
036        private SortedSet<String> posExamples;
037        
038        public AutomaticPositiveExampleFinderSPARQL(SPARQLTasks st) {
039                super();
040                
041                this.posExamples = new TreeSet<>();
042                this.sparqltasks = st;
043        }
044        
045        //QUALITY resultsize is not accounted for
046        public void makePositiveExamplesFromConcept(String conceptKBSyntax){
047                logger.debug("making Positive Examples from Concept: "+conceptKBSyntax);        
048                this.posExamples = sparqltasks.retrieveInstancesForClassDescription(conceptKBSyntax, 0);
049                logger.debug("   pos Example size: "+posExamples.size());
050        }
051        
052        
053        //QUALITY resultsize is not accounted for
054        public void makePositiveExamplesFromRoleAndObject(String role, String object){
055                logger.debug("making Positive Examples from role: "+role+" and object: "+object);       
056                this.posExamples = sparqltasks.retrieveDISTINCTSubjectsForRoleAndObject(role, object, 0);
057                logger.debug("   pos Example size: "+posExamples.size());
058        }
059        
060        //QUALITY resultsize is not accounted for
061        public void makePositiveExamplesFromSKOSConcept(String SKOSConcept){
062                logger.debug("making Positive Examples from SKOSConcept: "+SKOSConcept);        
063                this.posExamples = sparqltasks.retrieveInstancesForSKOSConcept(SKOSConcept, 0);
064                logger.debug("pos Example size: "+posExamples.size());
065        }
066        
067        public void makePositiveExamplesFromDomain(String role, int resultLimit){
068                logger.debug("making Positive Examples from Domain of : "+role);
069                this.posExamples.addAll(sparqltasks.getDomainInstances(role, resultLimit));
070                logger.debug("pos Example size: "+posExamples.size());
071        }
072        
073        public void makePositiveExamplesFromRange(String role, int resultLimit){
074                logger.debug("making Positive Examples from Range of : "+role);
075                this.posExamples.addAll(sparqltasks.getRangeInstances(role, resultLimit));
076                logger.debug("pos Example size: "+posExamples.size());
077        }
078        
079        
080        public SortedSet<String> getPosExamples() {
081                return posExamples;
082        }
083
084
085
086
087        
088}