code: protected static String getJsonPropertyTypeForValueType(Value value) {
  		if (value instanceof TimeValue) {
  			return DatatypeIdImpl.JSON_DT_TIME;
  		} else if (value instanceof ItemIdValue) {
  			return DatatypeIdImpl.JSON_DT_ITEM;
  		} else if (value instanceof PropertyIdValue) {
  			return DatatypeIdImpl.JSON_DT_PROPERTY;
  		} else if (value instanceof StringValue) {
  			return null;
  		} else if (value instanceof GlobeCoordinatesValue) {
  			return DatatypeIdImpl.JSON_DT_GLOBE_COORDINATES;
  		} else if (value instanceof QuantityValue) {
  			return DatatypeIdImpl.JSON_DT_QUANTITY;
  		} else if (value instanceof MonolingualTextValue) {
  			return DatatypeIdImpl.JSON_DT_MONOLINGUAL_TEXT;
  		} else {
  			throw new UnsupportedOperationException("Unsupported value type "
  					+ value.getClass());
  		}
  	}
docs: Infer the JSON datatype (represented as a string) from the data value.
  @param value
  the datavalue used as snak value
  @return
  the JSON type (possibly null) to include in the serialization of the snak