Index: BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilderImpl.java
===================================================================
--- BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilderImpl.java (revision 30)
+++ BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilderImpl.java (revision 31)
@@ -63,6 +63,13 @@
 			System.out.println(cls);
 		}
-
-		System.out.println("CLS");
+		clz = builder.countInstances(null, clz);
+		for (SClass cls : clz) {
+			System.out.println(cls);
+		}
+		
+
+/*
+  		System.out.println("CLS");
+ 
 		ClassLink[] cls = builder.getNextClass(null, clz[1].getClassURI(), 100,
 				false);
@@ -76,5 +83,5 @@
 			}
 		}
-
+*/
 		/*
 		 * System.out.println("CLS-INS"); cls =
@@ -169,5 +176,8 @@
 			if (res != null) {
 				String uri = res.getURI();
-				int numOfInstances = sol.getLiteral("numOfInstances").getInt();
+				int numOfInstances = 0;
+				if( countInstances ){
+					numOfInstances = sol.getLiteral("numOfInstances").getInt();
+				}
 				// System.out.println(numOfInstances);
 				Literal labelLiteral = sol.getLiteral("pLabel");
@@ -738,3 +748,62 @@
 	}
 
+	public SClass[] countInstances(String[] graphURIs, SClass[] classes) throws Exception{
+		if( classes == null || classes.length == 0 ){
+			return new SClass[0];
+		}
+		HashMap<String, SClass> classMap = new HashMap<String, SClass>();
+		for(SClass sc: classes){
+			classMap.put(sc.getClassURI(), sc);
+		}
+		StringBuffer queryStr = new StringBuffer();
+		queryStr.append("PREFIX owl: <http://www.w3.org/2002/07/owl#>\n");
+		queryStr.append("PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n");
+		queryStr.append("PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n");
+		queryStr.append("SELECT DISTINCT ?cls  (COUNT(?is) AS ?numOfInstances)\n");
+		if (graphURIs != null) {
+			for (String graphURI : graphURIs) {
+				queryStr.append("FROM <");
+				queryStr.append(graphURI);
+				queryStr.append(">\n");
+			}
+		}
+		queryStr.append("WHERE{\n");
+		queryStr.append("  ?is rdf:type ?cls.\n");
+		queryStr.append("  FILTER(?cls IN (");
+		boolean f = false;
+		Set<String> clsSet = classMap.keySet();
+		for (String clsURI : clsSet) {
+			if (f) {
+				queryStr.append(", ");
+			}
+			f = true;
+			queryStr.append("<");
+			queryStr.append(clsURI);
+			queryStr.append(">");
+		}
+		queryStr.append("))\n");
+		queryStr.append("} GROUP BY ?cls");
+
+		System.out.println(queryStr.toString());
+
+		Query query = QueryFactory.create(queryStr.toString());
+		QueryExecution qexec = QueryExecutionFactory.sparqlService(endpointURI,
+				query);
+
+		ResultSet results = qexec.execSelect();
+		for (; results.hasNext();) {
+			QuerySolution sol = results.next();
+			String uri = sol.getResource("cls").getURI();
+			SClass sc = classMap.get(uri);
+			Literal lit = sol.getLiteral("numOfInstances");
+			if (lit != null) {
+				int numOfInstances = lit.getInt();
+				sc.setNumOfInstances(numOfInstances);
+			}
+		}
+		qexec.close();
+	
+		return classes;
+	}
+
 }
Index: BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilder.java
===================================================================
--- BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilder.java (revision 28)
+++ BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilder.java (revision 31)
@@ -107,3 +107,4 @@
 			ClassLink[] classLinks) throws Exception;
 
+	public SClass[] countInstances(String[] graphURIs, SClass[] classes) throws Exception;
 }
