Index: BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLClassGraph.java
===================================================================
--- BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLClassGraph.java (revision 82)
+++ BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLClassGraph.java (revision 90)
@@ -35,5 +35,5 @@
         }
         
-        public LinkAndPath(ClassLink classLink, List<ClassLink> path, String orinalClassURI, boolean converge){
+        public LinkAndPath(ClassLink classLink, List<ClassLink> path, String originalClassURI, boolean converge){
            this.classLink = classLink;
            this.path = path;
@@ -49,9 +49,9 @@
         this.endClass = endClass;
         addNode(endClass);
-        nsteps = 3;
+        nsteps = 10;
         limit = 1000;
-        th = 0;
-        concut = 2.0;
-        divcut = - 2.0;
+        //th = 0;
+        //concut = 2.0;
+        //divcut = - 2.0;
     }
         
@@ -83,7 +83,6 @@
     private List<List<ClassLink>> searchPaths(RDFSchemaAnalyzer rdfsa, boolean countLinks){
         List<List<ClassLink>> paths = new ArrayList<>();
-        ClassLink crrLink = new ClassLink(null,startClass,Direction.both,0,0,0,0,0);
         List<LinkAndPath> lp = new LinkedList<>();
-        lp.add(new LinkAndPath(crrLink, new LinkedList<ClassLink>()));
+        lp.add(new LinkAndPath(new ClassLink("",startClass,Direction.both,0,0,0,0,0), new LinkedList<ClassLink>(), "", false));
         try{
           for ( int i = 0; i < nsteps; i++ ){
@@ -92,6 +91,5 @@
               while ( lit.hasNext() ){
                   LinkAndPath crrlp = lit.next();
-                  ClassLink[] classLinks = null;
-                  classLinks = rdfsa.getNextClass(null, crrlp.classLink.getLinkedClassURI(), limit, countLinks);
+                  ClassLink[] classLinks = rdfsa.getNextClass(null, crrlp.classLink.getLinkedClassURI(), limit, countLinks);
                   for ( int j = 0 ; j < classLinks.length; j++ ){
                       List<ClassLink> crrpath = new LinkedList<>(crrlp.path);
@@ -104,5 +102,11 @@
                           continue;
                       }
-                      nextlp.add(new LinkAndPath(classLinks[j],crrpath));
+                      if ( crrlp.classLink.getPropertyURI().equals(classLinks[j].getPropertyURI()) &&
+                           crrlp.classLink.getDirection() != classLinks[j].getDirection() &&
+                           crrlp.originalClassURI.equals( classLinks[j].getLinkedClassURI()) ){
+                          continue;
+                      }
+                      
+                      nextlp.add(new LinkAndPath(classLinks[j], crrpath, crrlp.classLink.getLinkedClassURI(), false));
                   }
               }
Index: BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/QueryPathGenerator.java
===================================================================
--- BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/QueryPathGenerator.java (revision 83)
+++ BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/QueryPathGenerator.java (revision 90)
@@ -11,21 +11,65 @@
  * @author atsuko
  */
+
 public class QueryPathGenerator {
-    private String sparqlEndpoint;
-    private RDFSchemaAnalyzer analyzer;
+    private String sparqlEndpoint = null;
+    private RDFSchemaAnalyzerFactory factory = null;
+    private RDFSchemaAnalyzer analyzer = null;
+    //private OWLClassGraph graph;
+
+    /*
+    public static void main(String[] args){
+        // For Test
+        String sp = "http://data.allie.dbcls.jp/sparql";
+        String sc = "http://purl.org/allie/ontology/201108#ShortForm";
+        String ec = "http://purl.org/allie/ontology/201108#LongForm";
+        QueryPathGenerator qpg = new QueryPathGenerator(sp);
+        Path[] path = qpg.getPaths(sc, ec, false);
+        System.out.println(path.length);
+    }*/
     
-    public void setSPARQLendpoint(String sparqlEndpoint){
-        this.sparqlEndpoint = sparqlEndpoint;
+    public QueryPathGenerator(){
+        factory = new RDFSchemaAnalyzerFactory();
     }
     
-    public SClass[] getClasses(){
-        // KOKO
-        return new SClass[10];
+    public QueryPathGenerator(String sparqlEndpoint){
+        factory = new RDFSchemaAnalyzerFactory();
+        setSPARQLendpoint(sparqlEndpoint);
     }
     
+    public SClass[] getClasses(String keyword){
+        String[] keywords = null;
+        if ( keyword != null ){ // KOKO
+            keywords = new String[1];
+            keywords[0] = keyword;            
+        }
+        try {
+            return analyzer.getOWLClasses(null, keywords, sparqlEndpoint, false);
+        }catch(Exception e){
+            System.err.println(e);
+            return null;
+        }
+    } 
+    
     public Path[] getPaths(String startClass, String endClass, boolean countLink){
-        // KOKO
-        return new Path[10];
+        if ( analyzer == null ){
+            System.err.println("ERROR. SPARQL endpoint is not decided.");
+        }
+        OWLClassGraph graph = new OWLClassGraph(startClass, endClass);
+        return graph.getPaths(analyzer, countLink);
     }
     
+    private void setSPARQLendpoint(String sparqlEndpoint){
+        this.sparqlEndpoint = sparqlEndpoint;
+        setAnalyzer();
+    }
+
+    private void setAnalyzer(){
+        //analyzer = new EndpointAnalyzer(sparqlEndpoint); //ForTest
+        try {
+            analyzer = factory.create(sparqlEndpoint);
+        } catch (Exception e) {
+            System.err.println(e);
+        }
+    }
 }
Index: BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/RDFSchemaAnalyzerFactory.java
===================================================================
--- BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/RDFSchemaAnalyzerFactory.java (revision 87)
+++ BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/RDFSchemaAnalyzerFactory.java (revision 90)
@@ -10,5 +10,5 @@
 
 	private Map<String, String> acquiredRDFFiles = null;
-        private static final String FILENAME = "tmpname";
+        private static final String FILENAME = "./crawleddata/";
         
         public RDFSchemaAnalyzerFactory(){
@@ -33,5 +33,4 @@
 	}
 	
-	
 	public RDFSchemaAnalyzer create(String uri) throws Exception{
 		if( acquiredRDFFiles == null || !acquiredRDFFiles.containsKey(uri)){
