The named graph a treatment is loaded into and the treatment's own subject IRI use different URI schemes. The graph is https://, the subject is http://.
Example — the largest treatment graph in the store:
- graph name:
https://treatment.plazi.org/id/8E33E30FFFD9FFCC4AD302B2FFB04209
- treatment subject:
http://treatment.plazi.org/id/8E33E30FFFD9FFCC4AD302B2FFB04209
This is systematic, not a one-off. Measured against https://qlever.ld.plazi.org/sparql on 2026-07-10:
PREFIX trt: <http://plazi.org/vocab/treatment#>
SELECT (SUM(IF(STRSTARTS(STR(?s), "https://"), 1, 0)) AS ?https)
(SUM(IF(STRSTARTS(STR(?s), "http://"), 1, 0)) AS ?http)
WHERE { ?s a trt:Treatment }
→ https = 0, http = 852755. Meanwhile all 852,756 named graphs carry the https:// prefix.
Why it matters
The obvious way to join a treatment to its own provenance graph is:
SELECT * WHERE { GRAPH ?g { ?g ?p ?o } }
This returns nothing. Every newcomer writing their first integrative query against the Plazi store will hit this, and the failure is silent — an empty result set, not an error. We are currently discussing exactly such cross-store queries with GBIF/SIB (linking GBIF and NCBI taxon identifiers to Plazi treatments), so this will bite people outside Plazi soon.
Suggested fix
Make https:// canonical for both graph names and resource IRIs, and keep graphUriPrefix as it is. All Plazi hosts already serve https, so the canonical IRI should be the one that resolves. The change belongs upstream in gg2rdf, which must emit https:// subjects: see plazi/gg2rdf#33.
Note the existing comment on graphUriPrefix here — "do not change this prefix, removing the previous version depends on this not changing". Leaving the prefix untouched is therefore the safer path, but this store still needs a full reload once the subject IRIs are rewritten.
Companion issue for the QLever side: plazi/turtle-hook-nq#5.
The named graph a treatment is loaded into and the treatment's own subject IRI use different URI schemes. The graph is
https://, the subject ishttp://.Example — the largest treatment graph in the store:
https://treatment.plazi.org/id/8E33E30FFFD9FFCC4AD302B2FFB04209http://treatment.plazi.org/id/8E33E30FFFD9FFCC4AD302B2FFB04209This is systematic, not a one-off. Measured against
https://qlever.ld.plazi.org/sparqlon 2026-07-10:→
https= 0,http= 852755. Meanwhile all 852,756 named graphs carry thehttps://prefix.Why it matters
The obvious way to join a treatment to its own provenance graph is:
This returns nothing. Every newcomer writing their first integrative query against the Plazi store will hit this, and the failure is silent — an empty result set, not an error. We are currently discussing exactly such cross-store queries with GBIF/SIB (linking GBIF and NCBI taxon identifiers to Plazi treatments), so this will bite people outside Plazi soon.
Suggested fix
Make
https://canonical for both graph names and resource IRIs, and keepgraphUriPrefixas it is. All Plazi hosts already serve https, so the canonical IRI should be the one that resolves. The change belongs upstream ingg2rdf, which must emithttps://subjects: see plazi/gg2rdf#33.Note the existing comment on
graphUriPrefixhere — "do not change this prefix, removing the previous version depends on this not changing". Leaving the prefix untouched is therefore the safer path, but this store still needs a full reload once the subject IRIs are rewritten.Companion issue for the QLever side: plazi/turtle-hook-nq#5.