Index: /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/EndpointAccess.java
===================================================================
--- /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/EndpointAccess.java (revision 248)
+++ /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/EndpointAccess.java (revision 251)
@@ -16,4 +16,8 @@
  */
 public class EndpointAccess {
+    static public boolean checkPath(Path path, String sparqlEndpoint){
+        return checkPath(path.getStartClass(), path.getClassLinks(), sparqlEndpoint);
+    }
+    
     static public boolean checkPath(String startClass, List<ClassLink> classlinks, String sparqlEndpoint){
         // SPARQL Query construction
@@ -45,9 +49,4 @@
         String sparqlQuery = queryStr.toString();
         Query query = QueryFactory.create(sparqlQuery, Syntax.syntaxARQ);
-        /*
-        QueryEngineHTTP httpQuery = new QueryEngineHTTP(sparqlEndpoint, query);
-        boolean res = httpQuery.execAsk();
-        httpQuery.close();
-                */
         QueryExecution qexec = QueryExecutionFactory.sparqlService(sparqlEndpoint, query);
         boolean res = qexec.execAsk();
@@ -104,7 +103,7 @@
         queryStr.append("ASK { \n");
         
-        queryStr.append("?n1").append(" rdf:type <").append(ocg.labels.get(node1)).append("> .\n");
-        queryStr.append("?n2").append(" rdf:type <").append(ocg.labels.get(node2)).append("> .\n");
-        queryStr.append("?n3").append(" rdf:type <").append(ocg.labels.get(node3)).append("> .\n");
+        queryStr.append("?n1縲rdf:type ?c1 .\n");
+        queryStr.append("?n2縲rdf:type ?c2 .\n");
+        queryStr.append("?n3縲rdf:type ?c3 .\n");
         
         queryStr.append("{{");
@@ -119,5 +118,10 @@
             queryStr.append("?n3").append(" ").append("?p2").append(" ")
                         .append("?n2").append(" }}\n");            
-            
+        
+        queryStr.append("VALUES (?c1 ?c2 ?c3){ \n"); 
+        queryStr.append("<").append(ocg.labels.get(node1)).append("> \n");
+        queryStr.append("<").append(ocg.labels.get(node2)).append("> \n");
+        queryStr.append("<").append(ocg.labels.get(node3)).append("> \n");
+        queryStr.append("} \n");
         queryStr.append("} \n");
         
@@ -126,9 +130,4 @@
         System.out.println(sparqlQuery);
         Query query = QueryFactory.create(sparqlQuery, Syntax.syntaxARQ);
-        /*
-        QueryEngineHTTP httpQuery = new QueryEngineHTTP(sparqlEndpoint, query);
-        boolean res = httpQuery.execAsk();
-        httpQuery.close();
-                */
         QueryExecution qexec = QueryExecutionFactory.sparqlService(sparqlEndpoint, query);
         boolean res = qexec.execAsk();
Index: /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/OWLClassGraph.java
===================================================================
--- /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/OWLClassGraph.java (revision 250)
+++ /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/OWLClassGraph.java (revision 251)
@@ -17,4 +17,6 @@
     int limit = 100;
     int th = 1;
+    double cth = 1.0; // 0.0(no path) - 1.0(all paths)
+    
     List<String> nodeType;
     ArrayList<HashSet<Integer>> connectionTable;
@@ -24,4 +26,5 @@
     List<Map<Integer, Integer>> edgeweight;
     List<Integer> nodeweight;
+    Map<String, Boolean> checkedpaths;
     
     public class LinkAndPath{
@@ -56,7 +59,9 @@
     }
         
-    public OWLClassGraph(RDFSchemaAnalyzer rdfsa){ // not used
+    public OWLClassGraph(RDFSchemaAnalyzer rdfsa){ // for experiment
         super();
         nodeType = new LinkedList<String>();
+        this.askcheck = false;
+        setClassGraph(rdfsa);
     }
     
@@ -124,5 +129,5 @@
     private List<List<ClassLink>> searchPaths(String startClass, String endClass){
         //int asked = 0;
-        Map<String,Boolean> checkedpaths = new HashMap<String, Boolean>();
+        checkedpaths = new HashMap<String, Boolean>();
         List<List<ClassLink>> paths = new ArrayList<>();
         Integer snode = labelednodes.get(startClass);
@@ -163,5 +168,5 @@
                     nextpath.add(nextnode);
                     // tmp
-                    if ( i >= 1 ){
+                    if ( i >= 1  && askcheck == true ){
                         int wn = nodeweight.get(crrnode);
                         int in = edgeweight.get(crrpath.get(crrpath.size()-2)).get(crrnode);
@@ -182,5 +187,5 @@
                                 }
                             }else{                      
-                                boolean chk = EndpointAccess.check3SimplePathwithJoin(nextnode, crrpath.get(crrpath.size()-1),
+                                boolean chk = EndpointAccess.check3SimplePath(nextnode, crrpath.get(crrpath.size()-1),
                                     crrpath.get(crrpath.size()-2), this, sparqlEndpoint);
                                 checkedpaths.put(key1, chk);
@@ -235,7 +240,7 @@
                     addedpath.add(cl);
                     // check
-                    //if ( EndpointAccess.checkPath(startClass, addedpath, sparqlEndpoint) ){
+                    if (checkPath(startClass, addedpath)){
                         tmppaths.add(addedpath);
-                    //}
+                    }
                 }
             }
@@ -246,40 +251,39 @@
     }
     
-/*              
-   private void setClassGraph(RDFSchemaAnalyzer rdfsa){
-       // setNodes
-       SClass[] classes = null;
-       try{
-           classes = rdfsa.getOWLClasses(null, null, null, true);
-       }catch(Exception e){
-           System.err.println(e); return;
-       }
-       for (int i = 0 ; i < classes.length; i++){
-           addNode(classes[i].getClassURI());
-           nodeType.add("class");
-       }
-       // setEdges
-       for (int i = 0 ; i < classes.length; i++ ){
-           try{
-               ClassLink[] classLinks = rdfsa.getNextClass(null, classes[i].getClassURI(), limit, true);
-               for (int j = 0 ; j < classLinks.length; j++){
-                   Integer n = labelednodes.get(classLinks[j].getLinkedClassURI());
-                   if ( n != null ){
-                       addEdge(i, n, classLinks[j]);
-                   }else{
-                       n = labelednodes.get(classLinks[j].getLinkedLiteralDatatypeURI());
-                       if ( n == null ){
+    private void setClassGraph(RDFSchemaAnalyzer rdfsa){
+        // setNodes
+        SClass[] classes = null;
+        try{
+            classes = rdfsa.getOWLClasses(null, null, null, true);
+        }catch(Exception e){
+            System.err.println(e); return;
+        }
+        for (int i = 0 ; i < classes.length; i++){
+            addNode(classes[i].getClassURI());
+            nodeType.add("class");
+        }
+        // setEdges
+        for (int i = 0 ; i < classes.length; i++ ){
+            try{
+                ClassLink[] classLinks = rdfsa.getNextClass(null, classes[i].getClassURI(), limit, true);
+                for (int j = 0 ; j < classLinks.length; j++){
+                    Integer n = labelednodes.get(classLinks[j].getLinkedClassURI());
+                    if ( n != null ){
+                        addEdge(i, n, classLinks[j]);
+                    }else{
+                        n = labelednodes.get(classLinks[j].getLinkedLiteralDatatypeURI());
+                        if ( n == null ){
                            addNode(classLinks[j].getLinkedLiteralDatatypeURI());
                            n = nodeType.size();
                            nodeType.add("literal");
-                       }
-                       addEdge(i, n, classLinks[j]);
-                   }
-               }
-           }catch(Exception e){
-               System.err.println(e);
-           }
-       }       
-   }*/
+                        }
+                        addEdge(i, n, classLinks[j]);
+                    }
+                }
+            }catch(Exception e){
+                System.err.println(e);
+            }
+        }       
+    }
 
     public void setPartClassGraph(RDFSchemaAnalyzer rdfsa, String sparqlEndpoint, String startClass){
@@ -332,5 +336,5 @@
             visited.addAll(nodes);
         }
-        // cut visited 
+        // cut visited         
         Iterator<Integer> nit = visited.iterator();
         while(nit.hasNext()){
@@ -405,4 +409,8 @@
    }
    
+   private boolean checkPath(String startClass, List<ClassLink> paths){
+       // KOKO
+       return false;
+   }
    // old codes
    /*
Index: /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/QueryPathGenerator.java
===================================================================
--- /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/QueryPathGenerator.java (revision 248)
+++ /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/QueryPathGenerator.java (revision 251)
@@ -7,4 +7,6 @@
 package org.biohackathon.SPARQLBuilder.OWL;
 
+import java.io.*;
+import java.util.*;
 
 /**
@@ -21,30 +23,68 @@
     
     private static final String CDIR = "cdata";
-    
-    /*
+        
     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";
-
-        String sp = "http://www.ebi.ac.uk/rdf/services/chembl/sparql";
-        String sc = "http://rdf.ebi.ac.uk/terms/chembl#Enzyme";
-        String ec = "http://rdf.ebi.ac.uk/terms/chembl#Activity";
-
-        //String sp = "http://www.ebi.ac.uk/rdf/services/biosamples/sparql";
-        //String sc = "http://rdf.ebi.ac.uk/terms/biosd/Sample";
-        //String ec = "http://purl.obolibrary.org/obo/NCBITaxon_7955";
-        //String sp = "http://www.ebi.ac.uk/rdf/services/biosamples/sparql";
-        //String sc = "http://rdf.ebi.ac.uk/terms/biosd/Sample";
-        //String ec = "http://purl.obolibrary.org/obo/NCBITaxon_7955";
-        //String sp = "http://lsd.dbcls.jp/sparql";
-        //String sc = "http://purl.jp/bio/10/lsd/ontology/201209#EnglishCode";
-        //String ec = "http://purl.jp/bio/10/lsd/ontology/201209#JapaneseCode";
-        //QueryPathGenerator qpg = new QueryPathGenerator(sp, "c:\\cdata");
-        QueryPathGenerator qpg1 = new QueryPathGenerator(sp, "cdata/");
-        //qpg1.testOWLClassGraph();
-        //SClass[] cl = qpg.getClasses(null);
-    }*/
+        QueryPathGenerator qpg = new QueryPathGenerator();
+        //String[] elist = qpg.getFactory().getEndpointURIList();
+        List<String> elist = new LinkedList<String>();
+        File file0 = new File("eplist.txt");
+        try{
+            BufferedReader br = new BufferedReader(new FileReader(file0));
+            String buf = null;
+            while( (buf = br.readLine()) != null){
+                elist.add(buf);
+            }
+        }catch(IOException e){
+            System.err.println(e);
+        }
+        
+        ListIterator<String> eit = elist.listIterator();
+        int i = 0;
+        while(eit.hasNext()){
+            String ep = eit.next();
+            qpg.setSPARQLendpoint(ep);
+            qpg.graph = new OWLClassGraph(qpg.analyzer);
+            SClass[] classes = qpg.getClasses(null);
+            File file1 = new File("path".concat(Integer.toString(i)).concat(".txt"));
+            File file2 = new File("ptable".concat(Integer.toString(i)).concat(".txt"));
+            try{
+                BufferedWriter bw1 = new BufferedWriter(new FileWriter(file1));
+                BufferedWriter bw2 = new BufferedWriter(new FileWriter(file2));
+                String jsonstr = "[";
+                int m = 0;
+                for ( int j = 0 ; j < classes.length; j ++ ){
+                    SClass start = classes[j];
+                    for ( int k = j + 1 ; k < classes.length; k++ ){
+                        SClass end = classes[k];
+                        Path[] paths = qpg.getPaths(start.getClassURI(), end.getClassURI(), false);                        
+	                for( int l = 0; l < paths.length; l++ ){
+                            if ( paths[l] == null ){
+                                continue;
+                            }
+	                    if (m > 0 ){
+                 	        jsonstr += ",";
+	                    }
+                            double cost = paths[l].computeCost();                                                        
+                            bw2.write(Double.toString(cost));
+                            bw2.write(",");
+                            bw2.write(Boolean.toString(EndpointAccess.checkPath(paths[l], ep)));
+                            bw2.newLine();
+                            jsonstr += paths[i].toJSONString3(classes);
+                            m++;
+	                }
+                    }
+                }
+                jsonstr += "]";
+                bw1.write(jsonstr);
+                bw1.newLine();
+                
+                bw1.close();
+                bw2.close();
+            }catch(IOException e){
+                System.err.println(e);
+            }
+            i++;
+        }
+    }
     
     public QueryPathGenerator(){
@@ -58,14 +98,7 @@
     
     public void setOWLClassGraph(String startClass){
-        graph = new OWLClassGraph(analyzer, sparqlEndpoint, startClass, askcheck);
+        //graph = new OWLClassGraph(analyzer, sparqlEndpoint, startClass, askcheck);
+        graph = new OWLClassGraph(analyzer, sparqlEndpoint, startClass, true);
     }
-    
-/*
-    public QueryPathGenerator(String sparqlEndpoint, String crawlFileName){
-        factory = new RDFSchemaAnalyzerFactory(crawlFileName);
-        setSPARQLendpoint(sparqlEndpoint);
-        setOWLClassGraph();
-    }
-    */
     
     public SClass[] getClasses(String keyword){
@@ -86,9 +119,9 @@
     
     public Path[] getPaths(String startClass, String endClass, boolean askcheck){
-        this.askcheck = askcheck;
         if ( graph == null ){
             //System.err.println("Class graph is null."); 
             setOWLClassGraph(startClass);
         }
+        graph.askcheck = askcheck;
         return graph.getPaths(startClass, endClass);
     }
@@ -139,11 +172,5 @@
         return label;
     }
-    
-    /*
-    private void setOWLClassGraph(){
-        //graph = new OWLClassGraph(analyzer);
-        graph = new OWLClassGraph();
-    }*/
-    
+        
     public OWLClassGraph getOWLClassGraph(){
         /*if ( graph == null ){
Index: /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/Path.java
===================================================================
--- /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/Path.java (revision 248)
+++ /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/Path.java (revision 251)
@@ -1,5 +1,5 @@
 package org.biohackathon.SPARQLBuilder.OWL;
 
-import java.util.List;
+import java.util.*;
 
 import org.json.JSONArray;
@@ -141,3 +141,14 @@
         //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
     }
+    
+    public double computeCost(){
+        int length = classLinks.size();
+        ListIterator<ClassLink> lit = classLinks.listIterator();
+        while( lit.hasNext() ){
+            ClassLink cl = lit.next();
+            // KOKO
+            
+        }
+        return 1.0;
+    }
 }
Index: /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/www/PLServlet.java
===================================================================
--- /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/www/PLServlet.java (revision 248)
+++ /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/www/PLServlet.java (revision 251)
@@ -83,11 +83,11 @@
         SClass[] classes = qpg.getClasses(null);
         Path[] paths = null;
-        if ( ask == null ){
-            paths = qpg.getPaths(st, en, false);
-        }else if ( ask.equalsIgnoreCase("true")){
+        //if ( ask == null ){
+        //    paths = qpg.getPaths(st, en, false);
+        //}else if ( ask.equalsIgnoreCase("true")){
             paths = qpg.getPaths(st, en, true);            
-        }else{
-            paths = qpg.getPaths(st, en, false);            
-        }
+        //}else{
+        //    paths = qpg.getPaths(st, en, false);            
+        //}
             
         String jsonstr = "[";
