@prefix ex: <https://sparql.rhea-db.org/.well-known/sparql-examples/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <https://schema.org/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

ex:6 a sh:SPARQLExecutable,
        sh:SPARQLSelectExecutable ;
    rdfs:comment "Select all Rhea reactions mapped to MetaCyc reactions"@en ;
    sh:prefixes _:sparql_examples_prefixes ;
    sh:select """PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rh: <http://rdf.rhea-db.org/>

# Query 6 
# Select all Rhea reactions mapped to MetaCyc reactions
# MetaCyc reactions are mapped to either undirected, left-to-right, right-to-left or bidirectional reactions
# Rhea web query: https://www.rhea-db.org/rhea?query=metacyc:*
#
SELECT distinct ?rhea ?rheaDir ?metacyc
WHERE {
  ?rhea rdfs:subClassOf rh:Reaction .
  {
    ?rhea rdfs:seeAlso ?metacyc .
    FILTER CONTAINS(str(?metacyc), "METACYC") 
    BIND(?rhea as ?rheaDir)
  }
  UNION
  {
    ?rhea rh:directionalReaction ?directionalReaction .
    ?directionalReaction rdfs:seeAlso ?metacyc . 
    FILTER CONTAINS(str(?metacyc), "METACYC") 
    BIND(?directionalReaction as ?rheaDir  )
  }
  UNION
  {
    ?rhea rh:bidirectionalReaction ?bidirectionalReaction .
    ?bidirectionalReaction rdfs:seeAlso ?metacyc . 
    FILTER CONTAINS(str(?metacyc), "METACYC") 
    BIND(?bidirectionalReaction as ?rheaDir  )
  }
}""" ;
    schema:target <https://sparql.rhea-db.org/sparql> .

