Community-curated SPARQL example queries for multiple life-science endpoints.
a SPARQL query against the GBIF backbone RDF that finds true taxonomic homonyms: distinct taxa that share the same name but sit on different branches of the tree.
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX gbif: <https://rs.gbif.org/terms/>
PREFIX rank: <https://rs.gbif.org/terms/rank/>
PREFIX status: <https://rs.gbif.org/terms/status/>
SELECT ?pref ?rank ?a ?rootA ?b ?rootB WHERE {
?a skos:prefLabel ?pref ; gbif:rank ?rank ;
gbif:taxonomicStatus status:accepted ; skos:broader+ ?ra .
?b skos:prefLabel ?pref ; gbif:rank ?rank ; # same rank on both sides
gbif:taxonomicStatus status:accepted ; skos:broader+ ?rb .
?ra gbif:rank rank:kingdom ; skos:prefLabel ?rootA .
?rb gbif:rank rank:kingdom ; skos:prefLabel ?rootB .
FILTER(STR(?a) < STR(?b))
FILTER(?rootA != ?rootB)
FILTER(?rootA != "incertae sedis" && ?rootB != "incertae sedis")
}
graph TD
classDef projected fill:lightgreen;
classDef literal fill:orange;
classDef iri fill:yellow;
v3("?a"):::projected
v4("?b"):::projected
v5("?pref"):::projected
v7("?ra")
v6("?rank"):::projected
v8("?rb")
v1("?rootA"):::projected
v2("?rootB"):::projected
c5([https://rs.gbif.org/terms/status/accepted]):::iri
c7([https://rs.gbif.org/terms/rank/kingdom]):::iri
f0[["?rootA != 'incertae sedis'?rootB != 'incertae sedis'"]]
f0 --> v1
f0 --> v2
f1[["?rootA != ?rootB"]]
f1 --> v1
f1 --> v2
f2[["str(?a) < str(?b)"]]
f2 --> v3
f2 --> v4
v3 --"skos:prefLabel"--> v5
v3 --https://rs.gbif.org/terms/rank--> v6
v3 --https://rs.gbif.org/terms/taxonomicStatus--> c5
v3 --"skos:broader"--> v7
v4 --"skos:prefLabel"--> v5
v4 --https://rs.gbif.org/terms/rank--> v6
v4 --https://rs.gbif.org/terms/taxonomicStatus--> c5
v4 --"skos:broader"--> v8
v7 --https://rs.gbif.org/terms/rank--> c7
v7 --"skos:prefLabel"--> v1
v8 --https://rs.gbif.org/terms/rank--> c7
v8 --"skos:prefLabel"--> v2