@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf4j: <http://rdf4j.org/schema/rdf4j#> .
@prefix sesame: <http://www.openrdf.org/schema/sesame#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix fn: <http://www.w3.org/2005/xpath-functions#> .

<http://purl.uniprot.org/unirules/MF_01666#construct> a <http://www.w3.org/ns/shacl#SPARQLRule>,
    <http://spinrdf.org/sp#Construct>;
  <https://hamap.expasy.org/rdf/vocab#addsTriple> <http://purl.uniprot.org/unirules/MF_01666#construct-template-23>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-47>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-4>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-2>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-24>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-48>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-25>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-49>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-26>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-5>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-1>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-27>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-28>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-29>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-6>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-0>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-3>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-8>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-90>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-9>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-80>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-81>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-82>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-10>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-83>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-60>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-84>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-85>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-61>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-86>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-62>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-63>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-87>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-64>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-88>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-40>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-89>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-41>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-65>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-42>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-66>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-7>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-67>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-43>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-68>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-20>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-44>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-45>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-69>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-21>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-46>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-22>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-35>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-59>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-11>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-12>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-36>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-13>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-37>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-14>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-38>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-15>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-39>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-16>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-17>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-18>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-19>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-91>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-70>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-71>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-72>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-73>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-74>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-50>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-75>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-51>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-52>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-76>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-53>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-77>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-78>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-30>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-54>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-79>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-31>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-55>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-56>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-32>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-57>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-33>, <http://purl.uniprot.org/unirules/MF_01666#construct-template-34>,
    <http://purl.uniprot.org/unirules/MF_01666#construct-template-58>;
  <http://www.w3.org/ns/shacl#prefixes> <http://purl.uniprot.org/unirules/>;
  <http://spinrdf.org/sp#where> <http://purl.uniprot.org/unirules/MF_01666#construct-where-list-0>;
  <http://spinrdf.org/sp#templates> <http://purl.uniprot.org/unirules/MF_01666#construct-template-list-0>;
  <http://www.w3.org/ns/shacl#construct> """CONSTRUCT {
  _:608544 up:source unirule:MF_01666 .
  _:608545 up:source unirule:MF_01666 .
  _:608546 up:source unirule:MF_01666 .
  _:608547 up:source unirule:MF_01666 .
  _:608548 up:source unirule:MF_01666 .
  _:608549 up:source unirule:MF_01666 .
  _:608550 up:source unirule:MF_01666 .
  _:608551 up:source unirule:MF_01666 .
  _:608552 up:source unirule:MF_01666 .
  _:608553 up:source unirule:MF_01666 .
  _:608554 up:source unirule:MF_01666 .
  _:608555 up:source unirule:MF_01666 .
  _:608556 up:source unirule:MF_01666 .
  _:608557 up:source unirule:MF_01666 .
  _:608558 up:source unirule:MF_01666 .
  _:608559 up:source unirule:MF_01666 .
  _:608560 up:source unirule:MF_01666 .
  ?this up:alternativeName ?name1 ;
    up:annotation ?annotation3 ,
      ?annotation4 ,
      ?annotation6 ,
      ?annotation8 ,
      ?annotation10 ,
      ?annotation12 ;
    up:classifiedWith GO:0016618 ,
      GO:0030267 ,
      keyword:520 ,
      keyword:521 ,
      keyword:560 ,
      keyword:963 ;
    up:recommendedName ?name0 .
  ?name0 up:ecName '1.1.1.81' ,
      '1.1.1.79' ;
    up:fullName 'Glyoxylate/hydroxypyruvate reductase A' ;
    rdf:type up:Structured_Name .
  ?name1 up:fullName '2-ketoacid reductase' ;
    rdf:type up:Structured_Name .
  ?gene2 skos:prefLabel 'ghrA' .
  ?annotation3 a up:Function_Annotation ;
    rdfs:comment 'Catalyzes the NADPH-dependent reduction of glyoxylate and hydroxypyruvate into glycolate and glycerate, respectively.' .
  ?annotation4 up:activity ?activity5 ;
    rdf:type up:Catalytic_Activity_Annotation .
  ?activity5 up:catalyticActivity <http://rdf.rhea-db.org/10992>;
    up:enzymeClass <http://purl.uniprot.org/enzyme/1.1.1.79>.
  ?annotation6 up:activity ?activity7 ;
    rdf:type up:Catalytic_Activity_Annotation .
  ?activity7 up:catalyticActivity <http://rdf.rhea-db.org/17905>;
    up:enzymeClass <http://purl.uniprot.org/enzyme/1.1.1.81>.
  ?annotation8 up:activity ?activity9 ;
    rdf:type up:Catalytic_Activity_Annotation .
  ?activity9 up:catalyticActivity <http://rdf.rhea-db.org/18657>;
    up:enzymeClass <http://purl.uniprot.org/enzyme/1.1.1.81>.
  ?annotation10 a up:Subcellular_Location_Annotation .
  ?annotation10li11 up:cellularComponent <http://purl.uniprot.org/locations/null>.
  ?annotation12 a up:Similarity_Annotation ;
    rdfs:comment 'Belongs to the D-isomer specific 2-hydroxyacid dehydrogenase family. GhrA subfamily.' .
  ?pfs13 up:annotation ?annotation14 .
  ?annotation14 faldo:begin ?pfsb15 ;
    faldo:end ?pfse16 ;
    rdf:type up:Active_Site_Annotation .
  ?pfsb15 faldo:position ?thisPositionOn17 ;
    rdf:type faldo:ExactPosition .
  ?pfse16 faldo:position ?thisPositionOn18 ;
    rdf:type faldo:ExactPosition .
  ?pfs19 up:annotation ?annotation20 .
  ?annotation20 faldo:begin ?pfsb21 ;
    faldo:end ?pfse22 ;
    rdf:type up:Active_Site_Annotation ;
    rdfs:comment 'Proton donor' .
  ?pfsb21 faldo:position ?thisPositionOn23 ;
    rdf:type faldo:ExactPosition .
  ?pfse22 faldo:position ?thisPositionOn24 ;
    rdf:type faldo:ExactPosition .
  _:608561 a rdf:Statement ;
    up:attribution _:608544 ;
    rdf:subject ?this ;
    rdf:predicate up:recommendedName ;
    rdf:object ?name0 .
  _:608562 a rdf:Statement ;
    up:attribution _:608545 ;
    rdf:subject ?this ;
    rdf:predicate up:alternativeName ;
    rdf:object ?name1 .
  _:608563 a rdf:Statement ;
    up:attribution _:608546 ;
    rdf:subject ?gene2 ;
    rdf:predicate up:encodedBy ;
    rdf:object ?gene2 .
  _:608564 a rdf:Statement ;
    up:attribution _:608547 ;
    rdf:subject ?this ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation3 .
  _:608565 a rdf:Statement ;
    up:attribution _:608548 ;
    rdf:subject ?this ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation4 .
  _:608566 a rdf:Statement ;
    up:attribution _:608549 ;
    rdf:subject ?this ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation6 .
  _:608567 a rdf:Statement ;
    up:attribution _:608550 ;
    rdf:subject ?this ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation8 .
  _:608568 a rdf:Statement ;
    up:attribution _:608551 ;
    rdf:subject ?this ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation10 .
  _:608569 a rdf:Statement ;
    up:attribution _:608552 ;
    rdf:subject ?this ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation12 .
  _:608570 a rdf:Statement ;
    up:attribution _:608553 ;
    rdf:subject ?this ;
    rdf:predicate up:classifiedWith ;
    rdf:object keyword:963 .
  _:608571 a rdf:Statement ;
    up:attribution _:608554 ;
    rdf:subject ?this ;
    rdf:predicate up:classifiedWith ;
    rdf:object keyword:520 .
  _:608572 a rdf:Statement ;
    up:attribution _:608555 ;
    rdf:subject ?this ;
    rdf:predicate up:classifiedWith ;
    rdf:object keyword:521 .
  _:608573 a rdf:Statement ;
    up:attribution _:608556 ;
    rdf:subject ?this ;
    rdf:predicate up:classifiedWith ;
    rdf:object keyword:560 .
  _:608574 a rdf:Statement ;
    up:attribution _:608557 ;
    rdf:subject ?this ;
    rdf:predicate up:classifiedWith ;
    rdf:object GO:0016618 .
  _:608575 a rdf:Statement ;
    up:attribution _:608558 ;
    rdf:subject ?this ;
    rdf:predicate up:classifiedWith ;
    rdf:object GO:0030267 .
  _:608576 a rdf:Statement ;
    up:source unirule:MF_01666 ;
    rdf:subject ?pfs13 ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation14 .
  _:608577 a rdf:Statement ;
    up:attribution _:608559 ;
    rdf:subject ?pfs13 ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation14 .
  _:608578 a rdf:Statement ;
    up:source unirule:MF_01666 ;
    rdf:subject ?pfs19 ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation20 .
  _:608579 a rdf:Statement ;
    up:attribution _:608560 ;
    rdf:subject ?pfs19 ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation20 .
}
WHERE {
  #baseURI: http://purl.uniprot.org/unirule/MF_01666
  #Rule MF_01666 Created by:? on:2008-08-05 Modified by:Edouard de Castro on:2024-09-03
  ?this up:organism ?thisOrganism ;
    rdfs:seeAlso signature:MF_01666 .
  ?thisOrganism rdfs:subClassOf+ taxon:91347 .
  BIND(URI(CONCAT(STR(?this), '#MF_01666a0')) AS ?name0) .
  BIND(URI(CONCAT(STR(?this), '#MF_01666a1')) AS ?name1) .
  BIND(URI(CONCAT(STR(?this), '#MF_01666a3')) AS ?annotation3) .
  BIND(URI(CONCAT(STR(?this), '#MF_01666a4')) AS ?annotation4) .
  BIND(URI(CONCAT(STR(?this), '#MF_01666a6')) AS ?annotation6) .
  BIND(URI(CONCAT(STR(?this), '#MF_01666a8')) AS ?annotation8) .
  BIND(URI(CONCAT(STR(?this), '#MF_01666a10')) AS ?annotation10) .
  BIND(URI(CONCAT(STR(?this), '#MF_01666a12')) AS ?annotation12) .
  OPTIONAL {
    ?this up:sequence ?thisSequence .
    ?thisSequence rdf:value ?thisSequenceValue .
    ?templateMotifMatch29 faldo:location ?templateMotifSequenceMatchRegionP7591330 ;
      edam:is_output_of ?templateMotifSequenceProfileAlignmentOperationP7591332 ;
      rdf:type edam:data_0869 ;
      rdf:value ?templateMotifCigarP75913MF_0166625 .
    ?templateMotifSequenceMatchRegionP7591330 faldo:begin ?templateMotifSequenceMatchBeginP7591331 .
    ?templateMotifSequenceMatchBeginP7591331 faldo:position ?templateMotifSequenceMatchBeginPositionP7591326 ;
      faldo:reference isoform:P75913-1 .
    ?templateMotifSequenceProfileAlignmentOperationP7591332 edam:has_input signature:MF_01666 ;
      rdf:type edam:operation_0300 .
    ?targetMotifMatch33 faldo:location ?targetMotifMatchRegionMatch34 ;
      edam:is_output_of ?targetMotifSequenceAlignmentOperationMF_0166636 ;
      rdf:type edam:data_0869 ;
      rdf:value ?targetMotifMatchCigarP75913MF_0166627 .
    ?targetMotifMatchRegionMatch34 faldo:begin ?targetMotifMatchRegionMatchBeginMF_0166635 .
    ?targetMotifMatchRegionMatchBeginMF_0166635 faldo:position ?targetMotifMatchRegionMatchBeginPositionMF_0166628 ;
      faldo:reference ?thisSequence .
    ?targetMotifSequenceAlignmentOperationMF_0166636 edam:has_input signature:MF_01666 ;
      rdf:type edam:operation_0300 .
    BIND(STRLEN(REPLACE(SUBSTR(?templateMotifCigarP75913MF_0166625, 1, (STRLEN(?templateMotifCigarP75913MF_0166625) - STRLEN(REPLACE(?templateMotifCigarP75913MF_0166625, CONCAT('^(?:-*[^-]){', STR(((227 - ?templateMotifSequenceMatchBeginPositionP7591326) + 1)), '}'), '')))), '[a-z]', '')) AS ?step137) .
    BIND((STRLEN(SUBSTR(?targetMotifMatchCigarP75913MF_0166627, 1, (STRLEN(?targetMotifMatchCigarP75913MF_0166627) - STRLEN(REPLACE(?targetMotifMatchCigarP75913MF_0166627, CONCAT('^(?:[a-z]*(?:[A-Z]|-)){', STR(?step137), '}'), ''))))) - STRLEN(REPLACE(SUBSTR(?targetMotifMatchCigarP75913MF_0166627, 1, (STRLEN(?targetMotifMatchCigarP75913MF_0166627) - STRLEN(REPLACE(?targetMotifMatchCigarP75913MF_0166627, CONCAT('^(?:[a-z]*(?:[A-Z]|-)){', STR(?step137), '}'), '')))), '[^-]', ''))) AS ?step238) .
    BIND(((?step238 + ?targetMotifMatchRegionMatchBeginPositionMF_0166628) - 1) AS ?thisPositionOn17) .
    BIND(?thisPositionOn17 AS ?thisPositionOn18) .
    BIND(?this AS ?pfs1t39) .
    BIND(URI(CONCAT(STR(?thisSequence), '#position', STR(?thisPositionOn17))) AS ?pfsb15) .
    BIND(URI(CONCAT(STR(?thisSequence), '#position', STR(?thisPositionOn18))) AS ?pfse16) .
    FILTER ((SUBSTR(?thisSequenceValue, ?thisPositionOn17, 1) = 'R')) .
    BIND(URI(CONCAT(STR(?this), '#MF_01666a14')) AS ?annotation14) .
    BIND(?this AS ?pfs13) .
  }
  OPTIONAL {
    ?this up:sequence ?thisSequence .
    ?thisSequence rdf:value ?thisSequenceValue .
    ?templateMotifMatch44 faldo:location ?templateMotifSequenceMatchRegionP7591345 ;
      edam:is_output_of ?templateMotifSequenceProfileAlignmentOperationP7591347 ;
      rdf:type edam:data_0869 ;
      rdf:value ?templateMotifCigarP75913MF_0166640 .
    ?templateMotifSequenceMatchRegionP7591345 faldo:begin ?templateMotifSequenceMatchBeginP7591346 .
    ?templateMotifSequenceMatchBeginP7591346 faldo:position ?templateMotifSequenceMatchBeginPositionP7591341 ;
      faldo:reference isoform:P75913-1 .
    ?templateMotifSequenceProfileAlignmentOperationP7591347 edam:has_input signature:MF_01666 ;
      rdf:type edam:operation_0300 .
    ?targetMotifMatch48 faldo:location ?targetMotifMatchRegionMatch49 ;
      edam:is_output_of ?targetMotifSequenceAlignmentOperationMF_0166651 ;
      rdf:type edam:data_0869 ;
      rdf:value ?targetMotifMatchCigarP75913MF_0166642 .
    ?targetMotifMatchRegionMatch49 faldo:begin ?targetMotifMatchRegionMatchBeginMF_0166650 .
    ?targetMotifMatchRegionMatchBeginMF_0166650 faldo:position ?targetMotifMatchRegionMatchBeginPositionMF_0166643 ;
      faldo:reference ?thisSequence .
    ?targetMotifSequenceAlignmentOperationMF_0166651 edam:has_input signature:MF_01666 ;
      rdf:type edam:operation_0300 .
    BIND(STRLEN(REPLACE(SUBSTR(?templateMotifCigarP75913MF_0166640, 1, (STRLEN(?templateMotifCigarP75913MF_0166640) - STRLEN(REPLACE(?templateMotifCigarP75913MF_0166640, CONCAT('^(?:-*[^-]){', STR(((275 - ?templateMotifSequenceMatchBeginPositionP7591341) + 1)), '}'), '')))), '[a-z]', '')) AS ?step152) .
    BIND((STRLEN(SUBSTR(?targetMotifMatchCigarP75913MF_0166642, 1, (STRLEN(?targetMotifMatchCigarP75913MF_0166642) - STRLEN(REPLACE(?targetMotifMatchCigarP75913MF_0166642, CONCAT('^(?:[a-z]*(?:[A-Z]|-)){', STR(?step152), '}'), ''))))) - STRLEN(REPLACE(SUBSTR(?targetMotifMatchCigarP75913MF_0166642, 1, (STRLEN(?targetMotifMatchCigarP75913MF_0166642) - STRLEN(REPLACE(?targetMotifMatchCigarP75913MF_0166642, CONCAT('^(?:[a-z]*(?:[A-Z]|-)){', STR(?step152), '}'), '')))), '[^-]', ''))) AS ?step253) .
    BIND(((?step253 + ?targetMotifMatchRegionMatchBeginPositionMF_0166643) - 1) AS ?thisPositionOn23) .
    BIND(?thisPositionOn23 AS ?thisPositionOn24) .
    BIND(?this AS ?pfs1t54) .
    BIND(URI(CONCAT(STR(?thisSequence), '#position', STR(?thisPositionOn23))) AS ?pfsb21) .
    BIND(URI(CONCAT(STR(?thisSequence), '#position', STR(?thisPositionOn24))) AS ?pfse22) .
    FILTER ((SUBSTR(?thisSequenceValue, ?thisPositionOn23, 1) = 'H')) .
    BIND(URI(CONCAT(STR(?this), '#MF_01666a20')) AS ?annotation20) .
    BIND(?this AS ?pfs19) .
  }
}
""" .

<http://purl.uniprot.org/unirules/MF_01666> <http://www.w3.org/ns/shacl#rule> <http://purl.uniprot.org/unirules/MF_01666#construct> .
