Index: BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilderImpl.java
===================================================================
--- BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilderImpl.java (revision 26)
+++ BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilderImpl.java (revision 27)
@@ -295,12 +295,19 @@
 		}
 		queryStr.append("WHERE{\n");
-		queryStr.append("  { ?c rdf:type rdfs:Class. }\n  UNION\n  { ?c rdf:type owl:Class. }\n");
+//		queryStr.append("  { ?c rdf:type rdfs:Class. }\n  UNION\n  { ?c rdf:type owl:Class. }\n");
 		queryStr.append("  { ?p rdfs:domain <");
 		queryStr.append(originClass);
 		queryStr.append(">.\n    ?p rdfs:range ?c.\n");
+
+		
 		if (countLinks) {
 			queryStr.append("    ?o ?p ?s.");
 		}else{
-			queryStr.append("    filter(exists{?o ?p ?s}) ");
+			queryStr.append("filter(exists{\n");
+			queryStr.append("  ?o rdf:type ?c.\n");
+			queryStr.append(" ?s rdf:type <");
+			queryStr.append(originClass);
+			queryStr.append(">.\n");
+			queryStr.append("	?s ?p ?o.})\n");
 		}
 
@@ -314,17 +321,19 @@
 			queryStr.append("    ?s ?p ?o.");
 		}else{
-			queryStr.append("    filter( exists{?s ?p ?o})");
-		}
-
-		queryStr.append("}\n");
-
-		queryStr.append("    ?p ?pDirection ?c.\n");
-
-		queryStr.append("  ?s rdf:type ?c.\n");
-
-		if (countLinks) {
-			queryStr.append("  ?o rdf:type <");
+			queryStr.append("filter(exists{\n");
+			queryStr.append("  ?s rdf:type ?c.\n");
+			queryStr.append(" ?o rdf:type <");
 			queryStr.append(originClass);
 			queryStr.append(">.\n");
+			queryStr.append("	?s ?p ?o.})\n");
+		}
+
+		queryStr.append("}\n");
+
+		queryStr.append("    ?p ?pDirection ?c.\n");
+
+		queryStr.append("  ?s rdf:type ?c.\n");
+
+		if (countLinks) {
 			queryStr.append("}\nGROUP BY ?p ?pDirection ?c\n");
 		} else {
