Index: BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/ClassLink.java
===================================================================
--- BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/ClassLink.java (revision 94)
+++ BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/ClassLink.java (revision 112)
@@ -14,4 +14,5 @@
 	private String propertyURI = null;
 	private String linkedClassURI = null;
+	private String linkedLiteralDatatypeURI = null;
 	private Direction direction = null;
 	private int numOfLinks = 0;
@@ -34,5 +35,5 @@
 	 * @since 28.01.2014
 	 */
-	public ClassLink(String propertyURI, String linkedClassURI, Direction direction, 
+	public ClassLink(String propertyURI, String linkedClassURI, String linkedLiteralDatatypeURI, Direction direction, 
 				int numLinks, int numOfOriginInstances, int numOfLinkedInstances,
 				int numOfOriginClassInstances, int numofLinkedClassInstances,
@@ -40,4 +41,5 @@
 		this.propertyURI = propertyURI;
 		this.linkedClassURI = linkedClassURI;
+		this.linkedLiteralDatatypeURI = linkedLiteralDatatypeURI;
 		this.direction = direction;
 		this.numOfLinks = numLinks;
@@ -59,4 +61,7 @@
 			obj.put("linkedClassURI", linkedClassURI);
 		}
+		if( linkedLiteralDatatypeURI != null ){
+			obj.put("linkedLiteralDatatypeURI", linkedLiteralDatatypeURI);
+		}
 		obj.put("numOfLinks", numOfLinks);
 		obj.put("numOfLinkedInstances", numOfLinkedInstances);
@@ -81,4 +86,10 @@
 		else{
 			json_str+="\"linkedClassURI\":"+"\"linkedClassURI\"";			
+		}
+		if( linkedLiteralDatatypeURI != null ){
+			json_str+="\"linkedLiteralDatatypeURI\":"+"\""+linkedLiteralDatatypeURI+"\"";
+		}
+		else{
+			json_str+="\"linkedLiteralDatatypeURI\":"+"\"linkedLiteralDatatypeURI\"";			
 		}
 		
@@ -214,4 +225,24 @@
 		this.numOfLinkedClassInstances = numOfLinkedClassInstances;
 	}
+
+
+	public final String getLinkedLiteralDatatypeURI() {
+		return linkedLiteralDatatypeURI;
+	}
+
+
+	public final void setLinkedLiteralDatatypeURI(String linkedLiteralDatatypeURI) {
+		this.linkedLiteralDatatypeURI = linkedLiteralDatatypeURI;
+	}
+
+
+	public final void setDomainClassLimitedQ(boolean domainClassLimitedQ) {
+		this.domainClassLimitedQ = domainClassLimitedQ;
+	}
+
+
+	public final void setRangeClassLimitedQ(boolean rangeClassLimitedQ) {
+		this.rangeClassLimitedQ = rangeClassLimitedQ;
+	}
 		
 
Index: BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/AcquiredStructureAnalyzer.java
===================================================================
--- BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/AcquiredStructureAnalyzer.java (revision 108)
+++ BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/AcquiredStructureAnalyzer.java (revision 112)
@@ -175,5 +175,5 @@
 
 		// SELECT
-		queryStr.append("SELECT DISTINCT ?indPropCat ?c ?d ?p ?numLnkInsStart ?numLnkInsEnd ?numInsDom ?numInsRan ?numTriples ?isStartClsLim ?isEndClsLim\n");
+		queryStr.append("SELECT DISTINCT ?indPropCat ?c ?dat ?d ?p ?numLnkInsStart ?numLnkInsEnd ?numInsDom ?numInsRan ?numTriples ?isStartClsLim ?isEndClsLim\n");
 
 //		if (targetGraphURIs != null) {
@@ -191,4 +191,15 @@
 		queryStr.append(" ?cr <http://sparqlbuilder.org/startClass> <" + originClass + ">. \n");
 		queryStr.append(" ?cr <http://sparqlbuilder.org/endClass> ?c. \n");
+		queryStr.append(" ?cr <http://sparqlbuilder.org/property> ?p. \n");
+		queryStr.append(" ?cr <http://sparqlbuilder.org/numberOfTriples> ?numTriples. \n");
+		queryStr.append(" ?cr <http://sparqlbuilder.org/numberOfInstancesOfStartClass> ?numLnkInsStart. \n");
+		queryStr.append(" ?cr <http://sparqlbuilder.org/numberOfInstancesOfEndClass> ?numLnkInsEnd. \n");
+		queryStr.append(" ?cr <http://sparqlbuilder.org/startClassLimitedQ> ?isStartClsLim. \n");
+		queryStr.append(" ?cr <http://sparqlbuilder.org/endClassLimitedQ> ?isEndClsLim. \n");
+		queryStr.append("}\n");
+		queryStr.append(" UNION\n");
+		queryStr.append(" {");
+		queryStr.append(" ?cr <http://sparqlbuilder.org/startClass> <" + originClass + ">. \n");
+		queryStr.append(" ?cr <http://sparqlbuilder.org/endDatatype> ?dat. \n");
 		queryStr.append(" ?cr <http://sparqlbuilder.org/property> ?p. \n");
 		queryStr.append(" ?cr <http://sparqlbuilder.org/numberOfTriples> ?numTriples. \n");
@@ -247,4 +258,5 @@
 			Resource pro = sol.getResource("p");
 			String clsURI = null;
+			String datURI = null;
 			if (pro != null) {
 				int indPropCat = 4;
@@ -257,4 +269,5 @@
 				Resource ccls = sol.getResource("c");
 				Resource dcls = sol.getResource("d");
+				Resource dat = sol.getResource("dat");
 				Direction direction = null;
 				if(ccls != null && dcls == null ){
@@ -266,4 +279,10 @@
 						direction = Direction.reverse;
 						clsURI = dcls.getURI();
+					}else{
+						if( ccls == null && dat != null && dcls == null ){
+							clsURI = null;
+							direction = Direction.forward;
+							datURI = dat.getURI();
+						}
 					}
 				}
@@ -309,5 +328,5 @@
 				}
 				
-				ClassLink cl = new ClassLink(proURI, clsURI, direction,
+				ClassLink cl = new ClassLink(proURI, clsURI, datURI, direction,
 						numTriples, numInsDom, numInsRan,  numLnkInsStart, numLnkInsEnd, isStartClsLim, isEndClsLim);
 				solCLs.add(cl);
