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