2012-06-21 39 views
5

Chúng tôi đã tạo ra một điểm cuối SPARQL bằng cách sử dụng dotnetrdf và tôi là người mới bắt đầu khi liên quan đến SPARQL. Các trường ngày tháng đã được lưu dưới dạng chuỗi ở định dạng MM/DD/YYYY. Bây giờ, có yêu cầu cho so sánh ngày (> <) mà chuỗi sẽ phải được chuyển đổi thành xsd:datetime hoặc xsd:date trong truy vấn SPARQL. Có cách nào để làm việc này không? Bất kỳ lựa chọn thay thế nào khác?SPARQL ngày chuyển đổi

Có bất kỳ ví dụ hay nào có sẵn cho các truy vấn SPARQL có liên quan đến ngày trong dotnetrdf không?

Cảm ơn.

+1

dotNetRDF hỗ trợ truy vấn SPARQL dựa trên ngày theo thông số SPARQL để dữ liệu của bạn phải ở định dạng 'xsd: dateTime' hoặc' xsd: date' để làm việc này – RobV

+0

Tôi thêm datetime dưới dạng chuỗi ký tự dưới dạng chuỗi vì không thể tìm phương thức để thêm datetime. – Sandhya

+0

Mã được sử dụng để thêm vào như dưới đây ILiteralNode Datelit = g.CreateLiteralNode (SampleDateValue); IUriNode DateUri = g.CreateUriNode (UriFactory.Create (http: // url/lấy mẫu ")); g.Assert (new Triple (dotNetRDF, DateUri, Datelit)); Phương pháp để thêm dữ liệu vào xsd là gì: Xin hãy gợi ý .. – Sandhya

Trả lời

4

Tôi nghĩ câu trả lời là bạn có thể, nhưng có thể không muốn!

Bạn có thể làm điều đó với SPARQL 1.1 SUBSTR function, cùng với concatstrdt.

cái gì đó dọc theo dòng của

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

đâu ?x là ràng buộc để giá trị MM/DD/YYYY ngày của bạn. Giá trị trả lại của hàm đó phải là hợp pháp xsd:dateTime, giả sử không có lỗi chính tả.

Nếu đó là tôi, tôi sẽ trích xuất tất cả dữ liệu MM/DD/YYYY, xử lý dữ liệu bên ngoài và thêm dữ liệu bổ sung dưới dạng xsd:dates hoặc xsd:dateTimes.

Các vấn đề liên quan