Tôi có truy vấn sparql trả về các bản sao và tôi muốn nó xóa sạch chúng trên một trong các giá trị (subjectID). Không giống như DISTINCT mà dường như tìm một giá trị duy nhất cho sự kết hợp của các giá trị được chọn, thay vì chỉ một trong các tham số. Tôi thấy ai đó ở đây đề xuất nhóm theo, nhưng điều đó chỉ có thể áp dụng nếu tôi liệt kê tất cả các tham số sau nhóm (điểm cuối sparql của tôi phàn nàn, ví dụ: biến khóa không phải nhóm trong SELECT:? Occupation). Tôi đã thử chạy một lựa chọn nội bộ, nhưng nó dường như không hoạt động cho truy vấn cụ thể này. Vì vậy, có thể là một vấn đề với các truy vấn chính nó (các giá trị của các liveIn tùy chọn dường như gây ra bản sao)?Phím Sparql so với các giá trị khác nhau
Trong khi đủ hạnh phúc với các DB quan hệ sớm trong đường cong học tập với SPARQL, vì vậy hãy giải thích rõ ràng cho các trường hợp không được khởi xướng! :)
select distinct
?subjectID ?englishName ?sex ?locatedIn15Name
?dob ?dod ?dom ?bornLocationName ?occupation
where {
?person a hc:Person ;
hc:englishName ?englishName ;
hc:sex ?sex;
hc:subjectID ?subjectID;
optional { ?person hc:livedIn11 ?livedIn11 .
?livedIn11 hc:englishName ?lived11LocationName .
?livedIn11 hc:locatedIn11 ?locatedIn11 .
?locatedIn11 hc:englishName ?locatedIn11Name .
?locatedIn11 hc:locatedIn15 ?locatedIn15 .
?locatedIn15 hc:englishName ?locatedIn15Name .
} .
optional {?person hc:born ?dob } .
optional {?person hc:dateOfDeath ?dod } .
optional {?person hc:dateOfMarriage ?dom } .
optional { ?person hc:bornIn ?bornIn .
?bornIn hc:englishName ?bornLocationName .
?bornIn hc:easting ?easting .
?bornIn hc:northing ?northing } .
optional { ?person hc:occupation ?occupation }
FILTER regex(?englishName, "^FirstName LastName")
}
GROUP BY
?subjectID ?englishName ?sex
?locatedIn15Name ?dob ?dod ?dom
?bornLocationName ?occupation
+1 cho (IMHO) sử dụng SAMPLE không chính thống. –
Cảm ơn Rob, đó là thực sự tiện dụng! Tôi đoán rằng đó là một số mẫu không xác định, do đó, để được sử dụng một cách thận trọng? :) – Nava
PS Sẽ upvote một lần tôi kiếm được một chút danh tiếng hơn. – Nava