2012-07-06 57 views
5

Tôi đang cố gắng khớp một từ trong SPARQL bằng cách sử dụng bộ lọc regex, nhưng không thành công ...:/ Tôi đang gửi truy vấn đến điểm cuối tại "http://dbtune.org/ musicbrainz/sparql ". Vâng, truy vấn sau đây hoạt động:Bộ lọc regex SPARQL

PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX mo: <http://purl.org/ontology/mo/> 
SELECT ?artist ?name 
WHERE { 
    ?artist a mo:MusicArtist 
    . ?artist foaf:name "Switchfoot" 
    . ?artist foaf:name ?name 
    . FILTER(regex(str(?name), "switchfoot", "i")) 
} 

Nhưng, nếu tôi loại bỏ các dòng 7 (nghệ sĩ foaf:.? Tên "Switchfoot"), các truy vấn sau đây không phù hợp:

PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX mo: <http://purl.org/ontology/mo/> 
SELECT ?artist ?name 
WHERE { 
    ?artist a mo:MusicArtist 
    . ?artist foaf:name ?name 
    . FILTER(regex(str(?name), "switchfoot", "i")) 
} 

tôi không biết nếu tôi đang làm điều gì sai hoặc đó là lỗi của điểm cuối ...

Ai đó có thể giúp tôi không?

+0

Đó là lỗi của một trong hai lỗi (như bạn nói) hoặc một số loại điều chỉnh truy vấn. Tôi tự hỏi họ dùng điểm cuối nào? – user205512

+0

Điểm cuối là "http://dbtune.org/musicbrainz/sparql" ... Tôi đã thực hiện một thử nghiệm và tôi nhận ra rằng điểm cuối giới hạn kết quả đến 1000. Tôi đã gửi truy vấn sau: CHỌN đếm (? nghệ sĩ) WHERE {? nghệ sĩ a mo: MusicArtist} Và nó trở lại 1000, quá ít ... Tôi nghĩ có lẽ đó thực sự là lỗi ... =/ –

Trả lời

7

Trong truy vấn thứ hai của bạn, không có mẫu biểu đồ nào để lập chỉ mục. Cách duy nhất mà bộ xử lý truy vấn có thể đáp ứng truy vấn đó là truy xuất tên của mỗi nghệ sĩ trong cửa hàng ba và sau đó áp dụng đối sánh cụm từ thông dụng cho mỗi một. Không có gì ngạc nhiên khi bạn nhấn một số giới hạn tài nguyên, cho dù đó là thời gian CPU hay thời gian trôi qua.

Nếu bạn muốn thực hiện tìm kiếm văn bản miễn phí như vậy, tôi khuyên bạn nên tải xuống tập dữ liệu về điểm cuối cục bộ và sử dụng chỉ mục văn bản miễn phí chẳng hạn như LARQ. Truy vấn của bạn sẽ nhanh hơn và người dùng của bạn sẽ cảm ơn bạn vì điều đó!

+0

Cảm ơn bạn, Ian! –

+0

Tôi nghĩ rằng tôi sẽ làm cho một máy chủ chỉ lưu trữ dữ liệu mà tôi cần để phù hợp với cụm từ thông dụng, như "tên", "nhãn" và những người khác, để tôi có thể lấy URI tài nguyên bằng máy chủ của riêng mình và sử dụng nó để có được những tài sản khác! –