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 }