Index: /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/OWLClassGraph.java
===================================================================
--- /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/OWLClassGraph.java (revision 221)
+++ /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/OWLClassGraph.java (revision 228)
@@ -14,5 +14,5 @@
     //String startClass;
     //String endClass;
-    int nsteps = 5;
+    int nsteps = 4;
     int limit = 100;
     int th = 1;
@@ -77,9 +77,17 @@
 */    
 
+    public OWLClassGraph(){
+        super();
+        nodeType = new LinkedList<String>();
+        //setClassGraph(rdfsa);
+        //connectionTable = createConnectionTable();
+    }
+    
+    
     public OWLClassGraph(RDFSchemaAnalyzer rdfsa){
         super();
         nodeType = new LinkedList<String>();
-        setClassGraph(rdfsa);
-        connectionTable = createConnectionTable();
+        //setClassGraph(rdfsa);
+        //connectionTable = createConnectionTable();
     }
     
@@ -376,4 +384,67 @@
        }       
    }
+
+    public void setPartClassGraph(RDFSchemaAnalyzer rdfsa, String startClass){
+        // 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");
+        }
+        int nedge = 0;
+        Integer snode = labelednodes.get(startClass);
+        Set<Integer> nodes = new HashSet<Integer>();
+        nodes.add(snode);
+        Set<Integer> visited = new HashSet<Integer>();
+        for (int i = 0 ; i < nsteps; i++ ){
+            Iterator<Integer> nit = nodes.iterator();
+            Set<Integer> nextnodes = new HashSet<Integer>();
+            while ( nit.hasNext() ){
+                Integer crr = nit.next();
+                visited.add(crr);
+                try{
+                    ClassLink[] classLinks = rdfsa.getNextClass(null, labels.get(crr), limit, true);
+                    for (int j = 0 ; j < classLinks.length; j++){
+                        Integer nn = labelednodes.get(classLinks[j].getLinkedClassURI());
+                        if ( !visited.contains(nn) ){
+                            nextnodes.add(nn);
+                        }
+                        if ( nn != null ){
+                            addEdge(crr, nn, classLinks[j]);
+                        /*
+                        }else{
+                            nn = labelednodes.get(classLinks[j].getLinkedLiteralDatatypeURI());
+                            if ( nn == null ){
+                                addNode(classLinks[j].getLinkedLiteralDatatypeURI());
+                                n = nodeType.size();
+                                nodeType.add("literal");
+                            }
+                            addEdge(i, n, classLinks[j]);
+                            /*
+                            ClassLink rev = new ClassLink( classLinks[j].getPropertyURI(),
+                               //classLinks[j].getLinkedClassURI(),
+                               classes[i].getClassURI(),
+                               classLinks[j].getLinkedLiteralDatatypeURI(),
+                               classLinks[j].getDirection(), classLinks[j].getNumOfLinks(), 
+                               classLinks[j].getNumOfOriginInstances(), classLinks[j].getNumOfLinkedInstances(),
+                               classLinks[j].getNumOfOriginClassInstances(), classLinks[j].getNumOfLinkedClassInstances(),
+                               classLinks[j].isDomainClassLimitedQ(), classLinks[j].isRangeClassLimitedQ() );
+                            rev.setDirection(Direction.reverse);
+                            addEdge(n, i, rev);
+                        */     
+                        }
+                    }
+                }catch(Exception e){
+                    e.printStackTrace();
+                }
+            }
+            nodes = nextnodes;
+        }
+    }
    
    private ArrayList<HashSet<Integer>> createConnectionTable(){
Index: /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/QueryPathGenerator.java
===================================================================
--- /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/QueryPathGenerator.java (revision 226)
+++ /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/QueryPathGenerator.java (revision 228)
@@ -83,5 +83,7 @@
             setOWLClassGraph();
         }
+        graph.setPartClassGraph(analyzer, startClass);
         return graph.getPaths(startClass, endClass);
+        //return graph.getPaths(startClass, endClass, analyzer);
         //return graph.getPaths_old(analyzer, true, startClass, endClass);
     }
Index: /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/www/CLServlet.java
===================================================================
--- /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/www/CLServlet.java (revision 226)
+++ /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/www/CLServlet.java (revision 228)
@@ -81,11 +81,11 @@
         SortedSet<String> sortedClasses = new TreeSet<String>(); // display + url
         qpg.setSPARQLendpoint(ep);
-        OWLClassGraph ocg = qpg.getOWLClassGraph();
+        //OWLClassGraph ocg = qpg.getOWLClassGraph();
         SClass[] classes = qpg.getClasses(null);
         for (int i = 0 ; i < classes.length; i++ ){
             String uri = classes[i].getClassURI();
-            if ( ocg.getNumberOfEdge(uri) == 0 ){
-                continue;
-            }
+            //if ( ocg.getNumberOfEdge(uri) == 0 ){
+            //    continue;
+            //}
             Label[] labels = classes[i].getLabels();
             String label = null;
Index: /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/www/EPServlet.java
===================================================================
--- /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/www/EPServlet.java (revision 227)
+++ /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/www/EPServlet.java (revision 228)
@@ -71,5 +71,5 @@
         // Initialize the session
         session.removeAttribute("qpg");
-        session.removeAttribute("graph");
+        //session.removeAttribute("graph");
         QueryPathGenerator qpg = new QueryPathGenerator();
 
