2012-06-21 31 views
5

Hemos creado un punto final SPARQL usando dotnetrdf y soy un principiante cuando se relaciona con SPARQL. Los campos de fecha se han almacenado como cadenas en el formato MM/DD/YYYY. Ahora, hay un requisito para la comparación de fechas (> <) para el cual la cadena deberá convertirse a xsd:datetime o xsd:date en la consulta SPARQL. ¿Hay alguna forma de hacer esto? ¿Alguna otra alternativa?SPARQL conversión de fecha

¿Hay algún buen ejemplo disponible para las consultas SPARQL relacionadas con la fecha en dotnetrdf?

Gracias.

+1

dotNetRDF soporta consultas SPARQL basadas en fechas de acuerdo con las especificaciones SPARQL por lo que sus datos deben estar en formatos 'xsd: dateTime' o' xsd: date' para que esto funcione – RobV

+0

Agregué el datetime como una cadena literal como cadena ya que no encuentre el método para agregar datetime. – Sandhya

+0

El código utilizado para agregar es el siguiente ILiteralNode Datelit = g.CreateLiteralNode (SampleDateValue); IUriNode DateUri = g.CreateUriNode (UriFactory.Create (http: // url/sampledate ")); g.Assert (nuevo Triple (dotNetRDF, DateUri, Datelit)); ¿Cuál es el método para agregar los datos en xsd: formato de fecha y hora? Sugiera ... – Sandhya

Respuesta

4

Creo que la respuesta es que puede, pero probablemente no lo desee.

Debería poder hacerlo con SPARQL 1.1 SUBSTR function, junto con concat y strdt.

Algo a lo largo de las líneas de

strdt(concat(substr(?x, 7, 4), '-', substr(?x, 1, 2), '-', substr(?x, 4, 2), 'T00:00:00'), xsd:dateTime) 

Dónde ?x está obligado a su valor MM/DD/YYYY fecha. El valor de retorno de esa función debe ser legal xsd:dateTime, suponiendo que no hay errores tipográficos.

Si fuera yo, extraería todos los datos MM/DD/YYYY, los procesaría externamente y agregaría datos adicionales como xsd:dates o xsd:dateTimes.

Cuestiones relacionadas