public AttributeValue getValueAsObject() {
		try {
			if(this.getType().equals(StringAttribute.identifierURI.toString())) {
				return StringAttribute.getInstance(getValue());
			} else if(this.getType().equals(IntegerAttribute.identifierURI.toString())) {
				return IntegerAttribute.getInstance(getValue());
			} else if(this.getType().equals(BooleanAttribute.identifierURI.toString())) {
				return BooleanAttribute.getInstance(getValue());
			} else if(this.getType().equals(DateAttribute.identifierURI.toString())) {
				return DateAttribute.getInstance(getValue());
			} else if(this.getType().equals(DateTimeAttribute.identifierURI.toString())) {
				return DateTimeAttribute.getInstance(getValue());
			} else {
				throw new RuntimeException("Unsupported attribute type: " + this.getType());
			}
		} catch(Exception e) {
			e.printStackTrace();
			throw new RuntimeException("Error when converting attribute value: " + this.getType());
		}
	}