2012-06-21 11 views
5

Abbiamo creato un endpoint SPARQL utilizzando dotnetrdf e sono un principiante se correlato a SPARQL. I campi data sono stati memorizzati come stringhe nel formato MM/DD/YYYY. Ora è necessario il confronto della data (> <) per il quale la stringa dovrà essere convertita in xsd:datetime o xsd:date nella query SPARQL. C'è un modo per fare questo? Qualche altra alternativa?Conversione data SPARQL

Sono disponibili esempi validi per query SPARQL relative alla data in dotnetrdf?

Grazie.

+1

dotNetRDF supporta query SPARQL basate sulla data in base alle specifiche SPARQL, quindi i dati devono essere nei formati 'xsd: dateTime' o' xsd: date' affinché questo funzioni – RobV

+0

Ho aggiunto il datetime come stringa letterale come stringa poiché non poteva trova il metodo per aggiungere datetime. – Sandhya

+0

Il codice utilizzato per l'aggiunta è il seguente: ILiteralNode Datelit = g.CreateLiteralNode (SampleDateValue); IUriNode DateUri = g.CreateUriNode (UriFactory.Create (http: // url/sampledate ")); g.Assert (nuovo Triple (dotNetRDF, DateUri, Datelit)); qual è il metodo per aggiungere i dati in xsd: formato datetime? Si prega di suggerire .. – Sandhya

risposta

4

Penso che la risposta sia possibile, ma probabilmente non si vuole!

Si dovrebbe essere in grado di farlo con SPARQL 1.1 SUBSTR function, insieme a concat e strdt.

Qualcosa sulla falsariga di

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

Dove ?x è destinata a vostro valore MM/DD/YYYY data. Il valore di ritorno di tale funzione dovrebbe essere legale xsd:dateTime, in assenza di errori di battitura.

Se si trattasse di me, estrarre tutti i dati MM/DD/YYYY, elaborarli esternamente e aggiungere ulteriori dati come xsd:dates o xsd:dateTimes.