कुछ SPARQL इंजन सीधे अंकगणित दिनांक का समर्थन कर सकते हैं। उदाहरण के लिए, this answers.semanticweb.com question and answer में उल्लेख के रूप में, जेना दिनांक अंकगणित का समर्थन करता है, और आप एक तारीख को दूसरे से घटा सकते हैं और एक xsd प्राप्त कर सकते हैं: अवधि। अन्य कार्यान्वयन एक datediff समारोह का समर्थन कर सकते हैं। उदाहरण के लिए, this Virtuoso example में bif: datediff का उपयोग शामिल है। हालांकि, ये एक्सटेंशन हैं और किसी भी विशेष SPARQL कार्यान्वयन में उपस्थित होने की गारंटी नहीं है।
अधिक पोर्टेबल के लिए, संभवतः कम कुशल समाधान के लिए, आप year का उपयोग डेटाटाइम से वर्ष के हिस्सों को निकालने के लिए कर सकते हैं। यह, उदाहरण के लिए करते हैं, की सुविधा देता है
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)
}
और परिणाम प्राप्त
-------
| age |
=======
| 67 |
-------
यह संभावित महीने और दो तिथियों के दिनों के आधार पर, एक एक करके बंद हो गया है, लेकिन आप इसी तरह से कर सकते हैं month और day फ़ंक्शंस का उपयोग करके इसके आसपास काम करें। This thread उस तरह के कार्यान्वयन के कुछ वर्णन करता है।
स्रोत
2013-09-04 02:10:23
क्या आपने इस प्रश्न को पहले अज्ञात उपयोगकर्ता के रूप में पूछा था और फिर इसे हटा दिया था? मैंने शपथ ली थी कि मैंने आज पहले लगभग एक समान सवाल का जवाब दिया था। –
@ जोशुआ टेलर मैंने एक प्रश्न पूछा था, लेकिन वह इसका हिस्सा था और वास्तव में यह सवाल नहीं था। दो प्रश्न अलग हैं और मैंने इसे हटाया नहीं है। –
ठीक है, सिर्फ उत्सुक है, क्योंकि xsd के घटाव के बारे में कोई प्रश्न था: तिथियां, और तथ्य यह है कि वे एक अवधि का उत्पादन करते हैं, और इसके बजाय वर्षों की संख्या कैसे प्राप्त करें। यही कारण है कि मेरे पास SPARQL कोड जाने के लिए तैयार था। बस एक अजीब संयोग, शायद। –