in src/GraphEngine.DataImporter/GraphEngine.DataImporter/RDFUtils.cs [133:189]
internal static FieldType GetFieldType(ref Triple triple)
{
if (triple.ValueType == ValueType.vt_graphedge) return FieldType.ft_graphedge;
if (triple.ValueType == ValueType.vt_literal) return FieldType.ft_string;
if (triple.ValueType == ValueType.vt_datetime) return FieldType.ft_datetime;
if (triple.ValueType == ValueType.vt_guid) return FieldType.ft_guid;
var value = triple.Object;
if (value.Contains(".") || value.Contains("E") || value.Contains("e")) // floating point value
{
float f; double d; decimal de;
if (float.TryParse(value, out f))
return FieldType.ft_float;
if (double.TryParse(value, out d))
return FieldType.ft_double;
if (decimal.TryParse(value, out de))
return FieldType.ft_decimal;
}
else // integer
{
if (value.StartsWith("-")) // signed value
{
sbyte s; Int16 i16; Int32 i32; Int64 i64;
if (sbyte.TryParse(value, out s))
return FieldType.ft_sbyte;
if (Int16.TryParse(value, out i16))
return FieldType.ft_short;
if (Int32.TryParse(value, out i32))
return FieldType.ft_int;
if (Int64.TryParse(value, out i64))
return FieldType.ft_long;
}
else // unsigned value
{
byte b; UInt16 u16; UInt32 u32; UInt64 u64;
if (byte.TryParse(value, out b))
return FieldType.ft_byte;
if (UInt16.TryParse(value, out u16))
return FieldType.ft_ushort;
if (UInt32.TryParse(value, out u32))
return FieldType.ft_uint;
if (UInt64.TryParse(value, out u64))
return FieldType.ft_ulong;
}
}
{
bool b; DateTime dt; Guid guid;
if (Boolean.TryParse(value, out b)) return FieldType.ft_bool;
if (DateTime.TryParse(value, out dt)) return FieldType.ft_datetime;
if (Guid.TryParse(value, out guid)) return FieldType.ft_guid;
}
return FieldType.ft_string;
}