Ho una query sparql che restituisce i duplicati e voglio che li pulisca solo su uno dei valori (subjectID). A differenza di DISTINCT sembra trovare un valore univoco per la combinazione di valori selezionati, piuttosto che per uno solo dei parametri. Ho visto qualcuno qui proporre il gruppo, ma ciò sembra applicabile solo se elenco tutti i parametri dopo il gruppo (il mio endpoint sparql si lamenta, ad esempio variabile chiave non di gruppo in SELECT:? Occupazione). Ho provato a eseguire una selezione interna, ma non sembra funzionare per questa query specifica. Quindi potrebbe essere un problema con la query stessa (i valori del vissutoIn opzionale sembrano causare il duplicato)?Chiavi Sparql rispetto a valori distinti
Mentre sei abbastanza felice con i DB relazionali nelle prime fasi della curva di apprendimento con SPARQL, quindi sentiti libero di spiegare l'ovvio per il contrario non iniziato! :)
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 per (IMHO) uso molto non ortodosso di CAMPIONE. –
Grazie Rob, è davvero utile! Immagino che sia un campionamento un po 'non deterministico, quindi da usare con cautela? :) – Nava
PS Will upvote una volta guadagnerò un po 'più di reputazione. – Nava