Bunu yapabilirsiniz, ancak sorunuzu tam olarak istediğiniz gibi değil. DateTimes için tam formlar, tüm alanları (zaman dilimi hariç) içermelidir, yani "2014-08-15" ^^ xsd: dateTime aslında yasal bir dateTime değildir. Tarih saat biçimi hakkında daha fazla bilgi için bkz. the definition.
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
select ?dt ?date where {
values ?dt { "2011-01-10T14:45:13.815-05:00"^^xsd:dateTime }
bind(xsd:date(concat(str(year(?dt)),"-",
str(month(?dt)),"-",
str(day(?dt))))
as ?date)
}
--------------------------------------------------------------------------
| dt | date |
==========================================================================
| "2011-01-10T14:45:13.815-05:00"^^xsd:dateTime | "2011-01-10"^^xsd:date |
--------------------------------------------------------------------------
: bahsedilen
, bir datetime gelen yıl, ay ve günü çekin ve diğer tarihleri ile karşılaştırabilirsiniz bir tarihte bir araya onları geri koymak için yeterince kolay
Saat dilimini eklemek isterseniz, bunu da yapabilirsiniz; xsd'de izin verilir: tarihler. Yeni tarih yaratmadan filtrelemek istese
, ayrıca oldukça temiz bir çözüm olabilir
filter (year(?dt) = 2015 &&
month(?dt) = 01 &&
day(?dt) = 10)
gibi bir şey yapabilirdi.
filtrenizle ilgili bir not. Bir değişkenin değerini, yaptığınız gibi sabit olarak filtreleyebilirsiniz, ancak çoğu zaman (ama her zaman değil) daha kolay bir yol önerir. Yerine Örneğin:
select ?s where {
?s a ?o .
filter (?o = <something>)
}
genellikle sadece yerinde değeri kullanmak ya da bir değişkenin değerini belirtmek içindeğerleri kullanmak istiyorum:
select ?s where {
?s a <something> .
}
select ?s where {
values ?o { <something> }
?s a ?o .
}
"xsd: date" yasal olsa bile "2014-08-15" ^^ xsd: dateTime öğesinin yasal bir tarih olmayabileceğine dikkat edin. –
Bunun yerine '' 2014-08-15 '^ ^^ xsd: date' kullanılmasını öner. – scotthenninger