2012-06-21 12 views
5

dotnetrdf kullanarak bir SPARQL son noktası oluşturduk ve SPARQL ile ilgili bir başlangıç ​​yapıyorum. Tarih alanları, MM/DD/YYYY biçiminde dizeler olarak depolanmıştır. Şimdi, dizenin SPARQL sorgusunda xsd:datetime veya xsd:date'a dönüştürülmesi gereken tarih karşılaştırması (> <) gereksinimi vardır. Bunu yapmanın bir yolu var mı? Başka alternatif var mı?SPARQL tarih dönüşümü

dotnetrdf ile ilgili, ilgili SPARQL sorguları için uygun olan iyi örnekler var mı?

Teşekkürler.

+1

dotNetRDF, SPARQL özelliklerine göre tarih tabanlı SPARQL sorgularını destekler, böylece verilerinizin xsd: dateTime veya xsd: date 'biçiminde olması gerekir. Bunun için – RobV

+0

çalışamaz. datetime ekleme yöntemini bulun. – Sandhya

+0

Eklemek için kullanılan kod, aşağıdaki gibidir: ILiteralNode Datelit = g.CreateLiteralNode (SampleDateValue); IUriNode DateUri = g.CreateUriNode (UriFactory.Create (http: // url/sampledate ")); g.Assert (yeni Üçlü (dotNetRDF, DateUri, Datelit)) xsd'de veri ekleme yöntemi nedir: tarih saat biçimi? en basit türlerine uygulanabilir bir uzatma yöntemi 'ToLiteral()' vardır .. – Sandhya

cevap

4

Bence cevabınız olabilir, ama muhtemelen istemiyorum!

Bunu, concat ve strdt ile birlikte SPARQL 1.1 SUBSTR function ile yapabilmeniz gerekir. ?x sizin MM/DD/YYYY tarih değerine bağlıdır

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

çizgisinde

şey. Bu işlevin dönüş değeri, yazım hatası olmadığında, xsd:dateTime numaralı bir yasal olmalıdır. Yerinde olsaydım

, ben dışarıdan, süreci tüm MM/DD/YYYY veri ayıklamak ve xsd:dates veya xsd:dateTimes gibi ek veri eklemek istiyorum.