/// <summary> /// Infers the Type of a Plain Literal /// </summary> /// <param name="p">Plain Literal to infer the Type of</param> /// <returns>A Uri representing the XML Scheme Data Type for the Plain Literal</returns> public static Uri InferPlainLiteralType(PlainLiteralToken p) { String value = p.Value; if (value.Equals("true") || value.Equals("false")) { //Is a Boolean return new Uri(XmlSpecsHelper.XmlSchemaDataTypeBoolean); } else if (_validInteger.IsMatch(value)) { //Is an Integer return new Uri(XmlSpecsHelper.XmlSchemaDataTypeInteger); } else if (_validDecimal.IsMatch(value)) { //Is a Decimal return new Uri(XmlSpecsHelper.XmlSchemaDataTypeDecimal); } else if (_validDouble.IsMatch(value)) { //Is a Double return new Uri(XmlSpecsHelper.XmlSchemaDataTypeDouble); } else { throw new RdfParseException("Unable to automatically Infer a Type for this PlainLiteralToken. Plain Literals may only be Booleans, Integers, Decimals or Doubles"); } }
/// <summary> /// Infers the Type of a Plain Literal /// </summary> /// <param name="p">Plain Literal to infer the Type of</param> /// <param name="syntax">Turtle Syntax</param> /// <returns>A Uri representing the XML Scheme Data Type for the Plain Literal</returns> public static Uri InferPlainLiteralType(PlainLiteralToken p, TurtleSyntax syntax) { String value = p.Value; StringComparison comparison = (syntax == TurtleSyntax.Original ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase); if (value.Equals("true", comparison) || value.Equals("false", comparison)) { //Is a Boolean return UriFactory.Create(XmlSpecsHelper.XmlSchemaDataTypeBoolean); } else if (_validInteger.IsMatch(value)) { //Is an Integer return UriFactory.Create(XmlSpecsHelper.XmlSchemaDataTypeInteger); } else if (_validDecimal.IsMatch(value)) { //Is a Decimal return UriFactory.Create(XmlSpecsHelper.XmlSchemaDataTypeDecimal); } else if (_validDouble.IsMatch(value)) { //Is a Double return UriFactory.Create(XmlSpecsHelper.XmlSchemaDataTypeDouble); } else { throw new RdfParseException("Unable to automatically Infer a Type for this PlainLiteralToken. Plain Literals may only be Booleans, Integers, Decimals or Doubles"); } }