sparql-examples

A set of SPARQL examples that are used in different SIB resources

View the Project on GitHub sib-swiss/sparql-examples

66_Select_all_compounds_and_count_their_occurrence_in_Rhea_reactions

rq turtle/ttl

Select all compounds and count their occurrence in Rhea reactions

Use at

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rh:<http://rdf.rhea-db.org/>

SELECT
  ?reaction
  ?reactionSide1
  (count(distinct ?participant1) as ?side1ParticipantCount)
  ?reactionSide2
  (count(distinct ?participant2) as ?side2ParticipantCount)
WHERE {
  ?reaction rdfs:subClassOf rh:Reaction .
  ?reaction rh:status rh:Approved .

  ?reaction rh:side ?reactionSide1 .
  ?reactionSide1 rh:contains ?participant1 .
  ?reactionSide1 rh:curatedOrder ?curatedOrder1 .

  ?reaction rh:side ?reactionSide2 .
  ?reactionSide2 rh:contains ?participant2 .
  ?reactionSide2 rh:curatedOrder ?curatedOrder2 .

  ?reactionSide1 rh:transformableTo ?reactionSide2 .
  FILTER (?curatedOrder1 < ?curatedOrder2) .
}
GROUP BY ?reaction ?reactionSide1 ?reactionSide2
ORDER BY DESC(?side1ParticipantCount) DESC(?side2ParticipantCount) ?reaction

graph TD
classDef projected fill:lightgreen;
classDef literal fill:orange;
classDef iri fill:yellow;
  v4("?curatedOrder1")
  v5("?curatedOrder2")
  v7("?participant1"):::projected 
  v9("?participant2"):::projected 
  v3("?reaction"):::projected 
  v6("?reactionSide1"):::projected 
  v8("?reactionSide2"):::projected 
  v10("?side1ParticipantCount")
  v10("?side2ParticipantCount")
  c4(["rh:Approved"]):::iri 
  c2(["rh:Reaction"]):::iri 
  f0[["?curatedOrder1 < ?curatedOrder2"]]
  f0 --> v4
  f0 --> v5
  v3 --"rdfs:subClassOf"-->  c2
  v3 --"rh:status"-->  c4
  v3 --"rh:side"-->  v6
  v6 --"rh:contains"-->  v7
  v6 --"rh:curatedOrder"-->  v4
  v3 --"rh:side"-->  v8
  v8 --"rh:contains"-->  v9
  v8 --"rh:curatedOrder"-->  v5
  v6 --"rh:transformableTo"-->  v8
  bind3[/"count(?participant1)"/]
  v7 --o bind3
  bind3 --as--o v10
  bind4[/"count(?participant2)"/]
  v9 --o bind4
  bind4 --as--o v10