Tôi đang cố tìm nạp các thuộc tính cụ thể nhất cho một lớp và tôi bị kẹt. Tôi muốn rút ra tất cả các thuộc tính áp dụng cho một lớp nhất định (bao gồm cả các thuộc tính được thừa hưởng từ các lớp bậc trên), ngoại trừ các thuộc tính đó có các giá trị con trong tập hợp kết quả.SPARQL: Nhận "tài sản cụ thể nhất"
Ví dụ, nếu tôi có một lớp Dân với một trong những thuộc tính của nó là atLocation, và một lớp con của Dân gọi tị nạn. Người tị nạn có một tài sản hiện tạiLocation, là một Thuộc tính con của tại Vị trí.
Vì vậy, những gì tôi muốn là một truy vấn chung chung rằng sẽ cho tôi chỉatLocation nếu tôi đặt trong Dân, và chỉcurrentLocation nếu tôi đặt trong tị nạn. Những gì tôi có điều này là:
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix ex: <http://example.org/vocabulary#>
SELECT DISTINCT ?prop WHERE {
ex:Refugee rdfs:subClassOf* ?domain .
?prop rdfs:domain ?domain .
?subprop rdfs:domain ?domain .
FILTER NOT EXISTS { ?subprop rdfs:subPropertyOf ?prop . }
} ORDER BY ?prop
này mang lại cho tôi cả atLocationvàcurrentLocation, mặc dù.
Điều này có thể thực hiện được trong một truy vấn không? Bất kỳ ý tưởng về cách giải quyết này đánh giá cao!
Cùng một câu hỏi cũng được đăng (và trả lời) trên danh sách gửi thư của W3C sparql-dev, xem http://lists.w3.org/Archives/Public/public-sparql-dev/2012JulSep/0017.html –