Index: /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/OWLClassGraph.java
===================================================================
--- /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/OWLClassGraph.java (revision 259)
+++ /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/OWLClassGraph.java (revision 261)
@@ -14,9 +14,6 @@
     int nsteps = 4;
     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;
     String sparqlEndpoint;
     Set<Integer> visited;
@@ -297,5 +294,5 @@
             visited.addAll(nodes);
         }
-        // cut visited         
+        // cut visited
         Iterator<Integer> nit = visited.iterator();
         while(nit.hasNext()){
@@ -333,3 +330,15 @@
     }
     
+    public List<String> getReachableClasses(){
+        List<String> clURIs = new LinkedList<String>();
+        if ( visited == null ){
+            return null;
+        }
+        Iterator<Integer> vit = visited.iterator();
+        while( vit.hasNext() ){
+            Integer vn = vit.next();
+            clURIs.add(labels.get(vn));
+        }
+        return clURIs;
+    }
 }
Index: /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/QueryPathGenerator.java
===================================================================
--- /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/QueryPathGenerator.java (revision 254)
+++ /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/QueryPathGenerator.java (revision 261)
@@ -220,3 +220,46 @@
         return graph;
     }
+    
+    public SClass[] getReachableClasses(){
+        List<String> clURIs = graph.getReachableClasses();
+        SClass[] orgclasses = null;
+        try {
+            orgclasses = analyzer.getOWLClasses(null, null, null, true);
+        }catch( Exception e ){
+            System.err.println(e);
+            return null;
+        }
+        HashMap<String, SClass> orgmap = new HashMap<String, SClass>();
+        for (int i = 0; i < orgclasses.length; i++ ){
+            orgmap.put(orgclasses[i].getClassURI(), orgclasses[i]);
+        }
+        
+        SClass[] classes = new SClass[clURIs.size()];
+        int j = 0;
+        ListIterator<String> uit = clURIs.listIterator();
+        while(uit.hasNext()){
+            String u = uit.next();
+            SClass cl = orgmap.get(u);
+            classes[j] = cl;
+            j++;
+        }
+        return classes;
+    }
+    
+    public SortedSet<String> getSortedClasses(SClass[] classes){
+        setClassLabels(classes);
+        SortedSet<String> sortedClasses = new TreeSet<String>();
+        for (int i = 0 ; i < classes.length; i++ ){
+            String uri = classes[i].getClassURI();
+            String label = getClassLabel(uri);
+            StringBuilder classbuilder = new StringBuilder(label);
+            classbuilder.append("  ");
+            classbuilder.append(classes[i].getNumOfInstances());
+            classbuilder.append("  ");
+            classbuilder.append(uri);
+            sortedClasses.add(classbuilder.toString());
+        }
+
+        return sortedClasses;
+    }
 }
