001    /**
002     * Copyright (C) 2007, Sebastian Hellmann
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.test;
021    
022    import java.net.URL;
023    import java.util.ArrayList;
024    import java.util.List;
025    import java.util.Set;
026    import java.util.TreeSet;
027    
028    import org.apache.log4j.ConsoleAppender;
029    import org.apache.log4j.Level;
030    import org.apache.log4j.Logger;
031    import org.apache.log4j.SimpleLayout;
032    import org.dllearner.kb.aquisitors.SparqlTupleAquisitor;
033    import org.dllearner.kb.aquisitors.TupleAquisitor;
034    import org.dllearner.kb.extraction.Configuration;
035    import org.dllearner.kb.extraction.Manager;
036    import org.dllearner.kb.extraction.Node;
037    import org.dllearner.kb.extraction.OWLAPIOntologyCollector;
038    import org.dllearner.kb.manipulator.Manipulator;
039    import org.dllearner.kb.sparql.SPARQLTasks;
040    import org.dllearner.kb.sparql.SparqlQuery;
041    import org.dllearner.kb.sparql.SparqlQueryMaker;
042    
043    /**
044     * Test class, uses the whole thing
045     * 
046     * @author Sebastian Hellmann
047     * 
048     */
049    public class SparqlExtractionTest {
050            
051            private static Logger logger = Logger.getRootLogger();
052            
053    
054            public static void main(String[] args) {
055                    System.out.println("Start");
056                    
057                    
058    //               create logger (a simple logger which outputs
059                    // its messages to the console)
060                    SimpleLayout layout = new SimpleLayout();
061                    ConsoleAppender consoleAppender = new ConsoleAppender(layout);
062                    logger.removeAllAppenders();
063                    logger.addAppender(consoleAppender);
064                    logger.setLevel(Level.INFO);            
065                    Logger.getLogger(SparqlQuery.class).setLevel(Level.INFO);
066                    logger.warn("If you use a remote sparql endpoint over http, it will be very slow due to network latency");
067                    // String test2 = "http://www.extraction.org/config#dbpediatest";
068                    // String test = "http://www.extraction.org/config#localjoseki";
069                    try {
070                            // URI u = new URI(test);
071                            int recursionDepth=1;
072                            Manager m = new Manager();
073                            Manipulator manipulator = Manipulator.getDefaultManipulator();
074    
075                            TupleAquisitor tupleAquisitor = 
076                                    new SparqlTupleAquisitor(SparqlQueryMaker.getAllowYAGOFilter(),SPARQLTasks.getPredefinedSPARQLTasksWithCache("DBPEDIA"));
077                            
078                            boolean getAllSuperClasses = true;
079                            boolean closeAfterRecursion = true;
080                            boolean getPropertyInformation = false;
081                            int breakSuperClassesAfter = 1000;
082                            
083                            String ontologyURI = "http://www.fragment.org/fragment";
084                            String physicalURI= "fragmentOntology.owl";
085                            OWLAPIOntologyCollector collector= new OWLAPIOntologyCollector( ontologyURI,  physicalURI);
086                    
087                            
088                            Configuration conf = new Configuration (
089                                            tupleAquisitor,
090                                            manipulator, 
091                                            recursionDepth,
092                                            getAllSuperClasses,
093                                            closeAfterRecursion,
094                                            getPropertyInformation,
095                                            breakSuperClassesAfter,
096                                            collector
097                                            );
098                            
099    
100                            
101                            m.useConfiguration(conf);
102                            @SuppressWarnings("unused")
103                            String example = "http://dbpedia.org/resource/Angela_Merkel";
104                            
105                            Set<String> startingInstances = new TreeSet<String>();
106                            startingInstances.add(example);
107                            
108                            List<Node> seedNodes=new ArrayList<Node>();
109                            
110                            //if(!threaded){
111                            seedNodes = m.extract(startingInstances);
112                            
113                            
114                            boolean saveOntology = true;
115                            
116                            
117                            m.getOWLAPIOntologyForNodes(seedNodes, saveOntology);
118                    
119                            URL ontologyFragmentURL = m.getPhysicalOntologyURL();
120                            
121                            logger.info("the ontology has been saved at: "+ontologyFragmentURL);
122                            
123                            //JamonMonitorLogger.printAllSortedByLabel();
124    
125                    } catch (Exception e) {
126                            e.printStackTrace();
127                    }
128            }
129    
130    }