Community-curated SPARQL example queries for multiple life-science endpoints.
In taxanomy multiple taxa exist with the same name. This query lists them
PREFIX gbif: <https://rs.gbif.org/terms/>
PREFIX status: <https://rs.gbif.org/terms/status/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dwc: <http://rs.tdwg.org/dwc/terms/>
SELECT ?name ?rank ?kingdomA ?kingdomB ?a ?b WHERE {
?a rdfs:label ?name ; gbif:rank ?rank ; gbif:taxonomicStatus status:accepted ; dwc:kingdom ?kingdomA .
?b rdfs:label ?name ; gbif:rank ?rank ; gbif:taxonomicStatus status:accepted ; dwc:kingdom ?kingdomB .
FILTER(STR(?a) < STR(?b))
FILTER(STR(?kingdomA) != STR(?kingdomB))
FILTER(STR(?kingdomA) != "incertae sedis" && STR(?kingdomB) != "incertae sedis")
}
graph TD
classDef projected fill:lightgreen;
classDef literal fill:orange;
classDef iri fill:yellow;
v3("?a"):::projected
v4("?b"):::projected
v1("?kingdomA"):::projected
v2("?kingdomB"):::projected
v5("?name"):::projected
v6("?rank"):::projected
c5([https://rs.gbif.org/terms/status/accepted]):::iri
f0[["str(?kingdomA) != 'incertae sedis'str(?kingdomB) != 'incertae sedis'"]]
f0 --> v1
f0 --> v2
f1[["str(?kingdomA) != str(?kingdomB)"]]
f1 --> v1
f1 --> v2
f2[["str(?a) < str(?b)"]]
f2 --> v3
f2 --> v4
v3 --"rdfs:label"--> v5
v3 --https://rs.gbif.org/terms/rank--> v6
v3 --https://rs.gbif.org/terms/taxonomicStatus--> c5
v3 --http://rs.tdwg.org/dwc/terms/kingdom--> v1
v4 --"rdfs:label"--> v5
v4 --https://rs.gbif.org/terms/rank--> v6
v4 --https://rs.gbif.org/terms/taxonomicStatus--> c5
v4 --http://rs.tdwg.org/dwc/terms/kingdom--> v2