A set of SPARQL examples that are used in different SIB resources
Select the number of reactions with cross-references to MetaCyc
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rh:<http://rdf.rhea-db.org/>
PREFIX CHEBI:<http://purl.obolibrary.org/obo/CHEBI_>
PREFIX up:<http://purl.uniprot.org/core/>
PREFIX keywords:<http://purl.uniprot.org/keywords/>
PREFIX taxon:<http://purl.uniprot.org/taxonomy/>
SELECT
(count(distinct ?rhea) as ?rheaMetacycCount)
(count(distinct ?xref) as ?metacycRheaCount)
(count(?rhea) as ?rheaMetacycXrefCount)
WHERE {
?rhea rdfs:subClassOf rh:Reaction .
?rhea rh:status rh:Approved .
?rhea rh:directionalReaction ?directionalReaction .
?rhea rh:bidirectionalReaction ?bidirectionalReaction .
{
?directionalReaction rdfs:seeAlso ?xref .
FILTER regex(str(?xref), "METACYC") .
}
UNION
{
?bidirectionalReaction rdfs:seeAlso ?xref .
FILTER regex(str(?xref), "METACYC") .
}
UNION
{
?rhea rdfs:seeAlso ?xref .
FILTER regex(str(?xref), "METACYC") .
}
}
graph TD
classDef projected fill:lightgreen;
classDef literal fill:orange;
classDef iri fill:yellow;
v3("?bidirectionalReaction")
v2("?directionalReaction")
v6("?metacycRheaCount")
v1("?rhea"):::projected
v5("?rheaMetacycCount")
v7("?rheaMetacycXrefCount")
v4("?xref"):::projected
c4(["rh:Approved"]):::iri
c2(["rh:Reaction"]):::iri
v1 --"rdfs:subClassOf"--> c2
v1 --"rh:status"--> c4
v1 --"rh:directionalReaction"--> v2
v1 --"rh:bidirectionalReaction"--> v3
subgraph union0[" Union "]
subgraph union0l[" "]
style union0l fill:#abf,stroke-dasharray: 3 3;
subgraph union1[" Union "]
subgraph union1l[" "]
style union1l fill:#abf,stroke-dasharray: 3 3;
f0[["regex(str(?xref),'METACYC')"]]
f0 --> v4
v1 --"rdfs:seeAlso"--> v4
end
subgraph union1r[" "]
style union1r fill:#abf,stroke-dasharray: 3 3;
f1[["regex(str(?xref),'METACYC')"]]
f1 --> v4
v3 --"rdfs:seeAlso"--> v4
end
union1r <== or ==> union1l
end
end
subgraph union0r[" "]
style union0r fill:#abf,stroke-dasharray: 3 3;
f2[["regex(str(?xref),'METACYC')"]]
f2 --> v4
v2 --"rdfs:seeAlso"--> v4
end
union0r <== or ==> union0l
end
bind6[/"count(?rhea)"/]
v1 --o bind6
bind6 --as--o v5
bind7[/"count(?xref)"/]
v4 --o bind7
bind7 --as--o v6
bind8[/"count(?rhea)"/]
v1 --o bind8
bind8 --as--o v7