Bazı SPARQL motorları doğrudan tarih aritmetiğini destekleyebilir. Örneğin, this answers.semanticweb.com question and answer'da belirtildiği gibi, Jena tarih aritmetiğini destekler ve bir tarihi diğerinden çıkararak xsd: Süresini alabilirsiniz. Diğer uygulamalar dated işlevini destekleyebilir. Örneğin, this Virtuoso example bif: datediff kullanımını içerir. Bununla birlikte, bunlar belirli bir SPARQL uygulamasında mevcut olması garantilidir ve mevcut değildir.
Daha taşınabilir, ancak muhtemelen daha az verimli bir çözüm için yıl parçalarını bir tarih saatinden ayıklamak üzere year'u kullanabilirsiniz. Bu, sen mesela do
select ?age where {
bind("1799-12-14"^^<http://www.w3.org/2001/XMLSchema#date> as ?death)
bind("1732-02-22"^^<http://www.w3.org/2001/XMLSchema#date> as ?birth)
bind(year(?death)-year(?birth) as ?age)
}
ve almak sonuçları
-------
| age |
=======
| 67 |
-------
Bu, iki tarih arasında ay ve günlere göre birer kapalı olma potansiyeline sahip sağlayan ama aynı can month ve day işlevlerini kullanarak bu konuda çalışın. This thread, bu tür uygulamalardan bazılarını açıklar.
Bu soruyu daha önce anonim kullanıcı olarak sordunuz ve sonra silinsin? Yemin edebilirdim, bugün neredeyse aynı soruya cevap verdim. –
@JoshuaTaylor Bir soru sordum, ama bunun bir parçasıydı ve tam olarak bu soru değildi. İki soru farklı ve ben onu silmedim. –
Tamam, sadece merak ediyorum, çünkü xsd'nin çıkarılmasıyla ilgili bir soru vardı: tarihler, bir süre ürettikleri ve bunun yerine yılların sayısını nasıl alacakları. İşte bu yüzden SPARQL kodunun tamamı hazırdı. Belki de garip bir tesadüf. –