2012-10-24 49 views
5

Tôi hiện đang học tập một số SPARQL và tôi đang thực hành trên trang web sau đây với một số báo cáo:mẫu SPARQL phù hợp với

http://data.semanticweb.org/snorql

Tuy nhiên, tôi đang cố gắng để thực hiện các tuyên bố sau:

SELECT DISTINCT ?author WHERE { ?paper swrc:author ?author FILTER(regex(?paper, "2006")) . } . 

Nó nói rằng không có kết quả. Khi tôi chạy truy vấn sau (không có bộ lọc):

SELECT DISTINCT ?paper WHERE { ?paper swrc:author ?author . } 

Tôi thấy rằng có một số giấy tờ có năm 2006 trong chuỗi của nó. Tôi tự hỏi tại sao truy vấn đầu tiên không trả lại các mục này, trong đó có năm 2006 trong chuỗi giấy.

Có ai có thể giúp tôi với điều này không?

Trả lời

7

Các thuật ngữ RDF được trả về cho ?paper là tất cả các URI. Chức năng lọc REGEX không hoạt động trên các URI; nó chỉ hoạt động trên dây. Bạn có thể biến URI thành chuỗi bằng cách sử dụng hàm STR(…). Điều này sẽ hoạt động:

+3

Bạn cũng có thể truy vấn cụ thể trong một năm bằng cách sử dụng thuộc tính có trong bản thể học SWRC 'SELECT DISTINCT? Paper? Year WHERE {? Paper swrc: author? Author. ? Paper swrc: year? Year} '. Thật không may các giấy tờ từ năm 2006 dường như thiếu tài sản này. – toniedzwiedz

+0

Đó là anaswer tôi đã tìm kiếm, cảm ơn! :) – Devos50

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