/// <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"); } }