2012-01-29 33 views
6

Giả sử nếu tôi muốn trả lại kết quả "có niềm vui" của ba. Tôi không biết cách tính toán khoảng trống giữa các từ. Dưới đây là một truy vấn tôi đã thử nhưng nó không hoạt động. Hãy cho tôi biết nếu có ai có thể phát hiện ra những gì tôi làm saiTruy vấn với Spaces Sparql

<rdf:Description rdf:about="http://website.com/urls/playing games"> 
    <owl:sameAs rdf:resource="http://website.com/urls/having fun"/> 
</rdf:Description> 

"PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT * WHERE { ?y owl:sameAs+ <http://website.com/urls/playing fun> }"; 

Trả lời

9

Câu trả lời ngắn: Bạn không thể, ít nhất không trực tiếp.

Câu trả lời hơi dài hơn: RDF tự sử dụng tham chiếu URI RDF. Mặt khác, ngôn ngữ truy vấn SPARQL sử dụng các IRI (lý do là RDF đặt trước các IRI và khái niệm các tham chiếu RDF URI đã được phát triển với dự đoán IRI được mong đợi cuối cùng trông như thế nào. Chúng gần như đúng). Thật không may, có sự khác biệt giữa các định nghĩa của tham chiếu URI RDF và IRI, và bạn vừa nhấn một trong các trường hợp: trong khi tài liệu tham khảo URI RDF cho phép khoảng trắng, IRI thì không. Cú pháp SPARQL không thể đối phó với các tham chiếu URI chẳng hạn như một trong ví dụ của bạn. Hãy xem this discussion để biết thêm chi tiết.

Đặt cược tốt nhất của bạn? Tránh sử dụng khoảng trắng trong URI refs. Thay thế chúng bằng dấu gạch dưới hoặc chỉ xóa chúng.

Tất cả những gì đang được nói, có một cách giải quyết để làm cho công việc truy vấn của bạn:

PREFIX owl: <http://www.w3.org/2002/07/owl#> 
SELECT ?y 
WHERE { 
    ?y owl:sameAs+ ?x 
    FILTER (str(?x) = "http://website.com/urls/playing fun") 
} 
+0

câu trả lời tuyệt vời có thể sẽ tránh không gian – Sam

2
  1. Đó là owl:sameAs không owl:sameas. Lưu ý vốn A.
  2. Bạn không thể có khoảng trắng trong IRI.
+0

chúc mừng cảm ơn vì các mẹo – Sam

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