SPARQL examples for the EMI
View the Project on GitHub earth-metabolome-initiative/sparql-examples
Metrics for retrieving TRY species, trait and non-trait records.
PREFIX emi: <https://w3id.org/emi#>
PREFIX sosa: <http://www.w3.org/ns/sosa/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT
(COUNT(DISTINCT ?trySpName) AS ?speciesCount)
(COUNT(DISTINCT ?traitData) AS ?traitCount)
(COUNT(DISTINCT ?nonTraitData) AS ?nonTraitCount)
WHERE {
?trySpName emi:inTaxon ?wdx .
?trySpObs sosa:isSampleOf ?trySpName ;
sosa:isFeatureOfInterestOf ?tryObId .
?tryObId sosa:hasResult ?tryData .
?tryData rdfs:label ?tryDataLab ;
rdf:value ?tryDataVal .
# separate trait vs. non-trait
OPTIONAL { ?tryData rdf:type emi:Trait . BIND(?tryData AS ?traitData) }
OPTIONAL { ?tryData rdf:type emi:NonTrait . BIND(?tryData AS ?nonTraitData) }
}
graph TD
classDef projected fill:lightgreen;
classDef literal fill:orange;
classDef iri fill:yellow;
v12("?nonTraitCount")
v9("?nonTraitData"):::projected
v10("?speciesCount")
v11("?traitCount")
v8("?traitData"):::projected
v5("?tryData")
v6("?tryDataLab")
v7("?tryDataVal")
v4("?tryObId")
v1("?trySpName"):::projected
v3("?trySpObs")
v2("?wdx")
c9(["emi:NonTrait"]):::iri
c8(["emi:Trait"]):::iri
v1 --"emi:inTaxon"--> v2
v3 --"sosa:isSampleOf"--> v1
v3 --"sosa:isFeatureOfInterestOf"--> v4
v4 --"sosa:hasResult"--> v5
v5 --"rdfs:label"--> v6
v5 --"rdf:value"--> v7
subgraph optional0["(optional)"]
style optional0 fill:#bbf,stroke-dasharray: 5 5;
v5 -."a".-> c8
bind0[/"?tryData"/]
v5 --o bind0
bind0 --as--o v8
end
subgraph optional1["(optional)"]
style optional1 fill:#bbf,stroke-dasharray: 5 5;
v5 -."a".-> c9
bind1[/"?tryData"/]
v5 --o bind1
bind1 --as--o v9
end
bind5[/"count(?trySpName)"/]
v1 --o bind5
bind5 --as--o v10
bind6[/"count(?traitData)"/]
v8 --o bind6
bind6 --as--o v11
bind7[/"count(?nonTraitData)"/]
v9 --o bind7
bind7 --as--o v12