2012-06-27 41 views
8

Tôi muốn nhận kết quả từ truy vấn sparql và kết quả không chứa không gian tên. ví dụ: có kết quả ở định dạng ba như:Kết quả Truy vấn Sparql không có Không gian tên

"http://www.xyz.com#Raxit" "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" "http://www.xyz.com#Name" 

Vì vậy, tôi muốn có được chỉ sau:

Raxit type Name 

Tôi muốn để có được kết quả này trực tiếp từ truy vấn SPARQL. Tôi đang sử dụng virtuoso.

Có thể nhận được điều này từ sparql không?

Hãy chia sẻ suy nghĩ của bạn về vấn đề này.

Cảm ơn trước.

Trả lời

7

Nếu dữ liệu của bạn là bình thường và bạn biết rằng chuỗi phụ bạn muốn luôn luôn xảy ra sau một ký tự #, thì bạn có thể sử dụng hàm strafter từ SPARQL 1.1. Tôi không biết liệu điều này có sẵn trong việc thực hiện của Virtuoso hay không.

Tuy nhiên, đây là một chiến lược rất mạo hiểm. Không phải tất cả URI đều được định dạng với một phần tên cục bộ sau một ký tự #. Trong thực tế, nói chung, một URI có thể không có một tên địa phương hợp pháp hoặc hữu ích nào cả. Vì vậy, bạn nên tự hỏi: tại sao bạn nghĩ rằng bạn cần điều này? Nói chung, một ứng dụng web ngữ nghĩa sử dụng toàn bộ URI như một định danh không thể tách rời. Nếu nhu cầu của bạn là thực sự cho một cái gì đó thân thiện với con người để hiển thị trong một giao diện người dùng, có truy vấn của bạn cũng tìm kiếm các thuộc tính rdfs:label hoặc skos:label. Trường hợp xấu nhất, hãy thử viết tắt URI thành dạng q-name (ví dụ: prefix:name), sử dụng các tiền tố từ mô hình hoặc dịch vụ như prefix.cc

+0

Có, tôi cần điều này. Tôi muốn hiển thị dữ liệu cho người dùng và tôi không muốn sử dụng chức năng tách hoặc indexof trong java. Đó là lý do tại sao tôi muốn nhận được trực tiếp từ truy vấn sparql. – Raxit

+1

Tôi thấy nó không thể tin được vì vậy rất ít công cụ có một tùy chọn cho việc này. Tôi đoán những người làm việc với rdf hiếm khi làm việc với định dạng văn bản? Đầu ra 'arq' của Apache Jena theo mặc định được đặt trước thay vì uris đầy đủ mặc dù – olejorgenb

1

Cách đơn giản nhất để đạt được điều này là không bận tâm với việc điều chỉnh truy vấn của bạn, mà chỉ cần tự xử lý kết quả. Tùy thuộc vào thư viện khách hàng mà bạn sử dụng để liên lạc với Virtuoso, bạn thường sẽ tìm thấy nó có hỗ trợ API để phân tích kết quả, lấy lại các giá trị và mỗi giá trị chỉ nhận được tên cục bộ (tôi đề nghị bạn tìm một phương thức URI.getLocalName() hoặc một cái gì đó tương tự).

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