// Path: src/main/java/nl/vu/datalayer/hbase/exceptions/NonNumericalException.java
// public class NonNumericalException extends Exception {
// 
// 	public NonNumericalException() {
// 		super();
// 	}
// 
// 	public NonNumericalException(String message, Throwable cause) {
// 		super(message, cause);
// 	}
// 
// 	public NonNumericalException(String message) {
// 		super(message);
// 	}
// 
// 	public NonNumericalException(Throwable cause) {
// 		super(cause);
// 	}
// 	
// }
// 
// Path: src/main/java/nl/vu/datalayer/hbase/exceptions/NumericalRangeException.java
// public class NumericalRangeException extends Exception {
// 
// 	private static final long serialVersionUID = 148584607226955296L;
// 
// 	public NumericalRangeException() {
// 		super();
// 	}
// 
// 	public NumericalRangeException(String message) {
// 		super(message);
// 	}
// 	
// }


import java.math.BigDecimal;
import java.math.BigInteger;
import nl.vu.datalayer.hbase.exceptions.NonNumericalException;
import nl.vu.datalayer.hbase.exceptions.NumericalRangeException;
import org.apache.hadoop.hbase.util.Bytes;
import org.openrdf.model.Literal;
import org.openrdf.model.URI;
import org.openrdf.model.impl.LiteralImpl;
import org.openrdf.model.vocabulary.XMLSchema;
			return new TypedId(XSD_BYTE, idSpace);
		}
		else if (datatype.equals(XMLSchema.UNSIGNED_BYTE)){
			short ub = l.shortValue();
			if (ub < 0 || ub > 2*Byte.MAX_VALUE+1){
				throw new NumericalRangeException("unsignedByte accepts values between 0 and 255");
			}
			Bytes.putShort(idSpace, 1, ub);
			return new TypedId(XSD_UNSIGNED_BYTE, idSpace);
		}
		else if (datatype.equals(XMLSchema.INTEGER)){
			BigInteger b = l.integerValue();
			
			if (b.bitLength() < Long.SIZE*8){
				Bytes.putLong(idSpace, 1, b.longValue());
			}
			else{
				byte []backingArray = b.toByteArray();
				int startOffset = backingArray.length-8;
				Bytes.putBytes(idSpace, 1, backingArray, startOffset, SIZE-1);
			}
			return new TypedId(XSD_INTEGER, idSpace);
		}
		else if (datatype.equals(XMLSchema.NON_POSITIVE_INTEGER)){
			BigInteger b = l.integerValue();
			if (b.signum() == 1){
				throw new NumericalRangeException("nonPositiveInteger does not accept positive values");
			}		
			
			BigInteger bPos = b.abs();		
// Path: src/main/java/nl/vu/datalayer/hbase/exceptions/NonNumericalException.java
// public class NonNumericalException extends Exception {
// 
// 	public NonNumericalException() {
// 		super();
// 	}
// 
// 	public NonNumericalException(String message, Throwable cause) {
// 		super(message, cause);
// 	}
// 
// 	public NonNumericalException(String message) {
// 		super(message);
// 	}
// 
// 	public NonNumericalException(Throwable cause) {
// 		super(cause);
// 	}
// 	
// }
// 
// Path: src/main/java/nl/vu/datalayer/hbase/exceptions/NumericalRangeException.java
// public class NumericalRangeException extends Exception {
// 
// 	private static final long serialVersionUID = 148584607226955296L;
// 
// 	public NumericalRangeException() {
// 		super();
// 	}
// 
// 	public NumericalRangeException(String message) {
// 		super(message);
// 	}
// 	
// }


// Path: src/main/java/nl/vu/datalayer/hbase/id/TypedId.java
import java.math.BigDecimal;
import java.math.BigInteger;
import nl.vu.datalayer.hbase.exceptions.NonNumericalException;
import nl.vu.datalayer.hbase.exceptions.NumericalRangeException;
import org.apache.hadoop.hbase.util.Bytes;
import org.openrdf.model.Literal;
import org.openrdf.model.URI;
import org.openrdf.model.impl.LiteralImpl;
import org.openrdf.model.vocabulary.XMLSchema;

			return new TypedId(XSD_BYTE, idSpace);
		}
		else if (datatype.equals(XMLSchema.UNSIGNED_BYTE)){
			short ub = l.shortValue();
			if (ub < 0 || ub > 2*Byte.MAX_VALUE+1){
				throw new NumericalRangeException("unsignedByte accepts values between 0 and 255");
			}
			Bytes.putShort(idSpace, 1, ub);
			return new TypedId(XSD_UNSIGNED_BYTE, idSpace);
		}
		else if (datatype.equals(XMLSchema.INTEGER)){
			BigInteger b = l.integerValue();
			
			if (b.bitLength() < Long.SIZE*8){
				Bytes.putLong(idSpace, 1, b.longValue());
			}
			else{
				byte []backingArray = b.toByteArray();
				int startOffset = backingArray.length-8;
				Bytes.putBytes(idSpace, 1, backingArray, startOffset, SIZE-1);
			}
			return new TypedId(XSD_INTEGER, idSpace);
		}
		else if (datatype.equals(XMLSchema.NON_POSITIVE_INTEGER)){
			BigInteger b = l.integerValue();
			if (b.signum() == 1){
				throw new NumericalRangeException("nonPositiveInteger does not accept positive values");
			}		
			
			BigInteger bPos = b.abs();		
			if (bPos.bitLength() < Long.SIZE*8){