Index: BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/Label.java
===================================================================
--- BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/Label.java (revision 2)
+++ BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/Label.java (revision 10)
@@ -32,5 +32,17 @@
 	}
 
-
+	public String toString(){
+		StringBuffer sb = new StringBuffer();
+		sb.append("\"");
+		if( label != null ){
+			sb.append(label);
+		}
+		sb.append("\"");
+		if( language != null ){
+			sb.append("@");
+			sb.append(language);
+		}
+		return sb.toString();
+	}
 
 }
Index: BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilderImpl.java
===================================================================
--- BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilderImpl.java (revision 5)
+++ BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilderImpl.java (revision 10)
@@ -25,4 +25,5 @@
 import com.hp.hpl.jena.query.QuerySolution;
 import com.hp.hpl.jena.query.ResultSet;
+import com.hp.hpl.jena.rdf.model.Literal;
 import com.hp.hpl.jena.rdf.model.Resource;
 
@@ -65,11 +66,11 @@
 
 		OWLQueryBuilder builder = new OWLQueryBuilderImpl(sparqlEndpoint);
-		String[] clsURIs = builder.getOWLClasses(graphURIs, keyword);
-		for(String cls: clsURIs){
+		SClass[] clz = builder.getOWLClasses(graphURIs, keyword);
+		for(SClass cls: clz){
 			System.out.println(cls);
 		}
 
 		System.out.println("CLS");
-		ClassLink[] cls = builder.getNextClass(null, clsURIs[0], 0);
+		ClassLink[] cls = builder.getNextClass(null, clz[0].getClassURI(), 0);
 		if( cls != null ){
 			for( ClassLink cl: cls){
@@ -79,5 +80,5 @@
 
 		System.out.println("CLS-INS");
-		cls = builder.getNextClassViaInstanceLink(null, clsURIs[0], 100);
+		cls = builder.getNextClassViaInstanceLink(null, clz[0].getClassURI(), 100);
 		if( cls != null ){
 			for( ClassLink cl: cls){
@@ -124,5 +125,5 @@
 	 * @since 28.01.2014
 	 */
-	public String[] getOWLClasses(String[] graphURIs, String keyword)
+	public SClass[] getOWLClasses(String[] graphURIs, String keyword)
 			throws Exception {
 		StringBuffer queryStr = new StringBuffer();
@@ -130,5 +131,5 @@
 		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 ?c \n");
+		queryStr.append("SELECT DISTINCT ?c ?pLabel (COUNT(?i) AS ?numOfInstances)\n");
 		if (graphURIs != null) {
 			for (String graphURI : graphURIs) {
@@ -143,4 +144,6 @@
 
 		queryStr.append("      ?c rdfs:label ?label.\n");
+		queryStr.append("      ?c rdfs:label ?pLabel.\n");
+		queryStr.append("      ?i rdf:type ?c.\n");
 
 //		queryStr.append("      ?c rdfs:label ");
@@ -153,5 +156,5 @@
 		queryStr.append("\" , \"i\" )\n");
 		queryStr.append("  )"); 
-		queryStr.append("\n}");
+		queryStr.append("\n}  GROUP BY ?c ?pLabel");
 
  System.out.println(queryStr.toString());
@@ -162,13 +165,28 @@
 
 		ResultSet results = qexec.execSelect();
-		ArrayList<String> solStrings = new ArrayList<String>();
+		HashMap<String,SClass> classMap = new HashMap<String,SClass>();
 		for (; results.hasNext();) {
 			QuerySolution sol = results.next();
 			Resource res = sol.getResource("c");
 			String uri = res.getURI();
-			solStrings.add(uri);
+			int numOfInstances = sol.getLiteral("numOfInstances").getInt();
+//System.out.println(numOfInstances);
+			Literal labelLiteral = sol.getLiteral("pLabel");
+			SClass sClass = null;
+			if( classMap.containsKey(uri)){
+				sClass = classMap.get(uri);
+			}
+			else{
+					sClass = new SClass(uri, null, numOfInstances);
+					classMap.put(uri, sClass);
+			}
+				if( labelLiteral != null ){
+					String label = labelLiteral.getString();
+					String lang = labelLiteral.getLanguage();
+					sClass.addLabel(new Label(label, lang));
+				}
 		}
 		qexec.close();
-		return solStrings.toArray(new String[0]);
+		return classMap.values().toArray(new SClass[0]);
 	}
 
Index: BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/SClass.java
===================================================================
--- BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/SClass.java (revision 10)
+++ BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/SClass.java (revision 10)
@@ -0,0 +1,84 @@
+package org.biohackathon.SPARQLBuilder.OWL;
+
+import java.util.HashSet;
+
+public class SClass {
+
+	private String classURI;
+	private int numOfInstances;
+	private HashSet<Label> labels;
+
+	/**
+	 * 繧､繝ｳ繧ｹ繧ｿ繝ｳ繧ｹ縺ｮURI縺ｨ縺昴�繧､繝ｳ繧ｹ繧ｿ繝ｳ繧ｹ縺悟ｱ槭＠縺ｦ縺�ｋ縺吶∋縺ｦ縺ｮ繧ｯ繝ｩ繧ｹ繧剃ｸ弱∴繧区ｧ区�蟄�
+	 * 
+	 * @param instanceURI
+	 *            縲繧､繝ｳ繧ｹ繧ｿ繝ｳ繧ｹ縺ｮURI
+	 * @param classURIs
+	 *            縲蠖楢ｩｲ繧､繝ｳ繧ｹ繧ｿ繝ｳ繧ｹ縺悟ｱ槭＠縺ｦ縺�ｋ縺吶∋縺ｦ縺ｮ繧ｯ繝ｩ繧ｹ縺ｮURI縺ｮ驟榊�
+	 * @throws Exception
+	 * @since 28.01.2014
+	 */
+	public SClass(String classURI, Label[] labels, int numOfInstances) {
+		this.classURI = classURI;
+		this.numOfInstances = numOfInstances;
+		setLabels(labels);
+	}
+
+	/**
+	 * 譁�ｭ怜�陦ｨ險倥ｒ蜿門ｾ励☆繧�
+	 * 
+	 * @since 28.01.2014
+	 */
+	public String toString() {
+		StringBuffer sb = new StringBuffer();
+		sb.append(classURI);
+		sb.append("[");
+		boolean f = false;
+		if (labels != null) {
+			for (Label label : labels) {
+				if (f) {
+					sb.append(", ");
+				}
+				f = true;
+				sb.append(label.toString());
+			}
+		}
+		sb.append("], ");
+		sb.append(numOfInstances);
+		return sb.toString();
+	}
+
+	public final String getClassURI() {
+		return classURI;
+	}
+
+	public final void setClassURI(String classURI) {
+		this.classURI = classURI;
+	}
+
+	public final int getNumOfInstances() {
+		return numOfInstances;
+	}
+
+	public final void setNumOfInstances(int numOfInstances) {
+		this.numOfInstances = numOfInstances;
+	}
+
+	public final Label[] getLabels() {
+		return labels.toArray(new Label[0]);
+	}
+
+	public final void setLabels(Label[] labelArrays) {
+		labels = new HashSet<Label>();
+		if (labelArrays != null) {
+			for (Label label : labelArrays) {
+				labels.add(label);
+			}
+		}
+	}
+
+	public void addLabel(Label label) {
+		labels.add(label);
+	}
+
+}
Index: BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilder.java
===================================================================
--- BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilder.java (revision 2)
+++ BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilder.java (revision 10)
@@ -24,5 +24,5 @@
 	 * @since 28.01.2014
 	 */
-	public String[] getOWLClasses(String[] graphURIs, String keyword) throws Exception;
+	public SClass[] getOWLClasses(String[] graphURIs, String keyword) throws Exception;
 
 	/**
@@ -37,5 +37,5 @@
 	 * @param graphURIs縲讀懃ｴ｢蟇ｾ雎｡縺ｮgraph縺ｮURI驟榊� (null繧�聞縺�縺ｮ驟榊�繧ょ庄)
 	 * @param keyword ��ull繧�ｩｺ譁�ｭ励�荳榊庄��
-	 * @return 繧ｯ繝ｩ繧ｹURI縺ｮ驟榊�
+	 * @return 繧ｯ繝ｩ繧ｹ縺ｮ驟榊�
 	 * @throws Exception
 	 * @since 28.01.2014
