重複を返す sparql クエリがあり、値の 1 つ (subjectID) のみでそれらをクリーンアップしたい。パラメータの1つだけではなく、選択された値の組み合わせに対して一意の値を見つけるように見えるDISTINCTとは異なります。ここで誰かがグループ化を提案しているのを見ましたが、グループ化の後にすべてのパラメーターをリストする場合にのみ適用できるようです (私の sparql エンドポイントは、たとえば、SELECT の非グループ キー変数: ?occupation に文句を言います)。内部選択を実行しようとしましたが、この特定のクエリでは機能しないようです。クエリ自体に問題がある可能性があります(liveInオプションの値が重複を引き起こしているようです)?
SPARQL の学習曲線の早い段階でリレーショナル DB に十分満足していますが、それ以外の場合は初心者のために明白なことを自由に説明してください! :)
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