Tôi đang sử dụng dòng này trong một truy vấn SPARQL trong chương trình python của tôi:Làm thế nào để sử dụng hợp lý HOẶC trong SPARQL regex()?
FILTER regex(?name, "%s", "i")
(nơi %s
là nội dung tìm kiếm nhập vào bởi người sử dụng)
Tôi muốn này để phù hợp nếu một trong hai ?name
hay ?featurename
chứa %s
, nhưng tôi không thể tìm thấy bất kỳ tài liệu hoặc hướng dẫn nào để sử dụng regex(). Tôi đã thử một vài điều mà có vẻ hợp lý:
FILTER regex((?name | ?featurename), "%s", "i")
FILTER regex((?name || ?featurename), "%s", "i")
FILTER regex((?name OR ?featurename), "%s", "i")
FILTER regex((?name, ?featurename), "%s", "i")
và mỗi người trong số những người mà không có sự ()
FILTER regex(?name, "%s", "i") || regex(?featurename, "%s", "i")
đúng cách để làm điều này là gì? Cảm ơn
CẬP NHẬT: Sử dụng công trình UNION. Nhưng tôi đã tìm ra rằng nó cũng hoạt động nếu bạn chỉ cần lặp lại một phần regex() như sau:
FILTER (regex(?name, "%s", "i") || regex(?featurename, "%s", "i"))
Cả hai giải pháp có vẻ một chút lộn xộn trong đó bạn phải sử dụng một tuple 2 phần tử với bản sao của cùng một chuỗi để điền vào cả hai %s
s.