@prefix ex: <https://sparql.uniprot.org/.well-known/sparql-examples/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <https://schema.org/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .

ex:64_diseases_related_to_mutation_in_active_site a sh:SPARQLExecutable,
        sh:SPARQLSelectExecutable ;
    rdfs:comment "Find (Human Genetic) diseases, that are related to a natural variant on the active site of an enzyme."@en ;
    sh:prefixes _:sparql_examples_prefixes ;
    sh:select """PREFIX faldo: <http://biohackathon.org/resource/faldo#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX taxon: <http://purl.uniprot.org/taxonomy/>
PREFIX up: <http://purl.uniprot.org/core/>

SELECT
  DISTINCT
   ?disease
WHERE {
  ?protein a up:Protein ;
    up:organism taxon:9606 ;
    up:annotation ?disease_annotation, ?active_site_annotation, ?natural_variant_annotation .
  {
    ?protein up:enzyme [] .
  } UNION {
  ?protein up:annotation/a up:Catalytic_Activity_Annotation .
  }
  ?disease_annotation a up:Disease_Annotation ;
  up:disease ?disease .
  ?active_site_annotation a up:Active_Site_Annotation ;
  up:range ?active_site_range .
  ?active_site_range faldo:begin ?active_site_begin .
  ?active_site_begin faldo:position ?active_site_position ;
                     faldo:reference ?sequence .
  ?natural_variant_annotation a up:Natural_Variant_Annotation ;
  up:range ?natural_variant_range ;
  skos:related ?disease .
  ?natural_variant_range faldo:begin ?natural_variant_begin ;
                         faldo:end ?natural_variant_end .
  ?natural_variant_begin faldo:position ?natural_variant_begin_position .
  ?natural_variant_end faldo:position ?natural_variant_end_position ;
                       faldo:reference ?sequence .

  FILTER(?natural_variant_begin_position >= ?active_site_position && ?active_site_position <= ?natural_variant_end_position)
}""" ;
    schema:keywords "enzyme" , "disease" , "variant" , "search within sequence" ;
    schema:target <https://sparql.uniprot.org/sparql/> .

