Một số công cụ SPARQL có thể hỗ trợ trực tiếp số học ngày. Ví dụ, như đề cập trong this answers.semanticweb.com question and answer, Jena hỗ trợ số học ngày, và bạn có thể trừ một ngày từ một ngày khác và nhận được một xsd: Thời lượng. Các triển khai khác có thể hỗ trợ chức năng dateiff. Ví dụ: this Virtuoso example bao gồm việc sử dụng bif: dateiff. Tuy nhiên, đây là những phần mở rộng và không được bảo đảm có mặt trong bất kỳ việc thực hiện SPARQL cụ thể nào.
Để có giải pháp di động, mặc dù có thể kém hiệu quả hơn, bạn có thể sử dụng year để trích xuất các phần của năm từ ngày giờ. Điều này cho phép bạn làm, ví dụ,
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)
}
và nhận được kết quả
-------
| age |
=======
| 67 |
-------
này có khả năng được giảm một, tùy thuộc vào những tháng và ngày trong hai ngày, nhưng bạn có thể tương tự giải quyết vấn đề này bằng cách sử dụng các hàm month và day. This thread mô tả một số loại triển khai đó.
Nguồn
2013-09-04 02:10:23
Bạn có hỏi câu hỏi này trước đó là người dùng ẩn danh và sau đó xóa nó? Tôi có thể thề rằng hôm qua tôi đã trả lời một câu hỏi gần như giống hệt nhau. –
@JoshuaTaylor Tôi đã đặt câu hỏi, nhưng đó là một phần của nó và không chính xác câu hỏi này. Hai câu hỏi khác nhau và tôi đã không xóa nó. –
Ok, chỉ tò mò, bởi vì có một câu hỏi về trừ của xsd: ngày, và thực tế là họ sản xuất một thời gian, và làm thế nào để có được số năm thay thế. Đó là lý do tại sao tôi đã có mã SPARQL tất cả đã sẵn sàng để đi. Chỉ là một sự trùng hợp kỳ lạ, có lẽ. –