@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_02100#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_02100#construct-template-52>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-53>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-42>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-37>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-38>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-40>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-18>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-30>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-25>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-45>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-1>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-9>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-15>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-60>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-12>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-3>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-64>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-49>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-32>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-13>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-48>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-23>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-19>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-6>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-26>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-20>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-14>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-34>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-16>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-22>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-27>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-5>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-50>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-46>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-17>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-10>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-66>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-39>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-21>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-8>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-29>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-36>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-55>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-51>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-7>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-11>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-59>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-35>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-44>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-28>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-58>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-33>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-57>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-43>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-61>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-47>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-41>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-56>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-31>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-0>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-54>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-24>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-4>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-63>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-2>,
    <http://purl.uniprot.org/unirules/MF_02100#construct-template-65>, <http://purl.uniprot.org/unirules/MF_02100#construct-template-62>;
  <http://www.w3.org/ns/shacl#prefixes> <http://purl.uniprot.org/unirules/>;
  <http://spinrdf.org/sp#where> <http://purl.uniprot.org/unirules/MF_02100#construct-where-list-0>;
  <http://spinrdf.org/sp#templates> <http://purl.uniprot.org/unirules/MF_02100#construct-template-list-0>;
  <http://www.w3.org/ns/shacl#construct> """CONSTRUCT {
  _:745796 up:source unirule:MF_02100 .
  _:745797 up:source unirule:MF_02100 .
  _:745798 up:source unirule:MF_02100 .
  _:745799 up:source unirule:MF_02100 .
  _:745800 up:source unirule:MF_02100 .
  _:745801 up:source unirule:MF_02100 .
  _:745802 up:source unirule:MF_02100 .
  _:745803 up:source unirule:MF_02100 .
  _:745804 up:source unirule:MF_02100 .
  _:745805 up:source unirule:MF_02100 .
  ?this up:annotation ?annotation2 ,
      ?annotation3 ;
    up:classifiedWith GO:0008757 ,
      keyword:489 ,
      keyword:808 ,
      keyword:949 ;
    up:recommendedName ?name0 .
  ?name0 up:ecName '2.1.1.-' ;
    up:fullName ?nameValue1 ;
    rdf:type up:Structured_Name .
  ?annotation2 a up:Function_Annotation ;
    rdfs:comment 'Could be a S-adenosyl-L-methionine-dependent methyltransferase.' .
  ?annotation3 a up:Similarity_Annotation ;
    rdfs:comment 'Belongs to the methyltransferase superfamily. YrrT family.' .
  ?pfs4 up:annotation ?annotation5 .
  ?annotation5 faldo:begin ?pfsb6 ;
    faldo:end ?pfse7 ;
    up:ligand ?ligand8 ;
    rdf:type up:Binding_Site_Annotation .
  ?pfsb6 faldo:position ?thisPositionOn9 ;
    rdf:type faldo:ExactPosition .
  ?pfse7 faldo:position ?thisPositionOn10 ;
    rdf:type faldo:ExactPosition .
  ?ligand8 rdfs:subClassOf chebi:59789 .
  ?pfs11 up:annotation ?annotation12 .
  ?annotation12 faldo:begin ?pfsb13 ;
    faldo:end ?pfse14 ;
    up:ligand ?ligand15 ;
    rdf:type up:Binding_Site_Annotation .
  ?pfsb13 faldo:position ?thisPositionOn16 ;
    rdf:type faldo:ExactPosition .
  ?pfse14 faldo:position ?thisPositionOn17 ;
    rdf:type faldo:ExactPosition .
  ?ligand15 rdfs:subClassOf chebi:59789 .
  ?pfs18 up:annotation ?annotation19 .
  ?annotation19 faldo:begin ?pfsb20 ;
    faldo:end ?pfse21 ;
    up:ligand ?ligand22 ;
    rdf:type up:Binding_Site_Annotation .
  ?pfsb20 faldo:position ?thisPositionOn23 ;
    rdf:type faldo:ExactPosition .
  ?pfse21 faldo:position ?thisPositionOn24 ;
    rdf:type faldo:ExactPosition .
  ?ligand22 rdfs:subClassOf chebi:59789 .
  _:745806 a rdf:Statement ;
    up:attribution _:745796 ;
    rdf:subject ?this ;
    rdf:predicate up:recommendedName ;
    rdf:object ?name0 .
  _:745807 a rdf:Statement ;
    up:attribution _:745797 ;
    rdf:subject ?this ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation2 .
  _:745808 a rdf:Statement ;
    up:attribution _:745798 ;
    rdf:subject ?this ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation3 .
  _:745809 a rdf:Statement ;
    up:attribution _:745799 ;
    rdf:subject ?this ;
    rdf:predicate up:classifiedWith ;
    rdf:object keyword:489 .
  _:745810 a rdf:Statement ;
    up:attribution _:745800 ;
    rdf:subject ?this ;
    rdf:predicate up:classifiedWith ;
    rdf:object keyword:949 .
  _:745811 a rdf:Statement ;
    up:attribution _:745801 ;
    rdf:subject ?this ;
    rdf:predicate up:classifiedWith ;
    rdf:object keyword:808 .
  _:745812 a rdf:Statement ;
    up:attribution _:745802 ;
    rdf:subject ?this ;
    rdf:predicate up:classifiedWith ;
    rdf:object GO:0008757 .
  _:745813 a rdf:Statement ;
    up:source unirule:MF_02100 ;
    rdf:subject ?pfs4 ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation5 .
  _:745814 a rdf:Statement ;
    up:attribution _:745803 ;
    rdf:subject ?pfs4 ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation5 .
  _:745815 a rdf:Statement ;
    up:source unirule:MF_02100 ;
    rdf:subject ?pfs11 ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation12 .
  _:745816 a rdf:Statement ;
    up:attribution _:745804 ;
    rdf:subject ?pfs11 ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation12 .
  _:745817 a rdf:Statement ;
    up:source unirule:MF_02100 ;
    rdf:subject ?pfs18 ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation19 .
  _:745818 a rdf:Statement ;
    up:attribution _:745805 ;
    rdf:subject ?pfs18 ;
    rdf:predicate up:annotation ;
    rdf:object ?annotation19 .
}
WHERE {
  #baseURI: http://purl.uniprot.org/unirule/MF_02100
  #Rule MF_02100 Created by:? on:2009-04-08 Modified by:Edouard de Castro on:2023-01-13
  ?this up:organism ?thisOrganism ;
    rdfs:seeAlso signature:MF_02100 .
  ?thisOrganism rdfs:subClassOf+ taxon:1239 .
  BIND(URI(CONCAT(STR(?this), '#MF_02100a0')) AS ?name0) .
  OPTIONAL {
    ?this up:encodedBy ?gene28 .
    ?gene28 up:locusName ?geneLocus26 .
  }
  OPTIONAL {
    ?this up:encodedBy ?gene28 .
    ?gene28 up:orfName ?geneOrf27 .
  }
  BIND(IF(BOUND(?geneLocus26), ?geneLocus26, ?geneOrf27) AS ?part25) .
  BIND(CONCAT('Uncharacterized methyltransferase ', ?part25) AS ?nameValue1) .
  BIND(URI(CONCAT(STR(?this), '#MF_02100a2')) AS ?annotation2) .
  BIND(URI(CONCAT(STR(?this), '#MF_02100a3')) AS ?annotation3) .
  OPTIONAL {
    ?this up:sequence ?thisSequence .
    ?thisSequence rdf:value ?thisSequenceValue .
    ?templateMotifMatch33 faldo:location ?templateMotifSequenceMatchRegionO3202934 ;
      edam:is_output_of ?templateMotifSequenceProfileAlignmentOperationO3202936 ;
      rdf:type edam:data_0869 ;
      rdf:value ?templateMotifCigarO32029MF_0210029 .
    ?templateMotifSequenceMatchRegionO3202934 faldo:begin ?templateMotifSequenceMatchBeginO3202935 .
    ?templateMotifSequenceMatchBeginO3202935 faldo:position ?templateMotifSequenceMatchBeginPositionO3202930 ;
      faldo:reference isoform:O32029-1 .
    ?templateMotifSequenceProfileAlignmentOperationO3202936 edam:has_input signature:MF_02100 ;
      rdf:type edam:operation_0300 .
    ?targetMotifMatch37 faldo:location ?targetMotifMatchRegionMatch38 ;
      edam:is_output_of ?targetMotifSequenceAlignmentOperationMF_0210040 ;
      rdf:type edam:data_0869 ;
      rdf:value ?targetMotifMatchCigarO32029MF_0210031 .
    ?targetMotifMatchRegionMatch38 faldo:begin ?targetMotifMatchRegionMatchBeginMF_0210039 .
    ?targetMotifMatchRegionMatchBeginMF_0210039 faldo:position ?targetMotifMatchRegionMatchBeginPositionMF_0210032 ;
      faldo:reference ?thisSequence .
    ?targetMotifSequenceAlignmentOperationMF_0210040 edam:has_input signature:MF_02100 ;
      rdf:type edam:operation_0300 .
    BIND(STRLEN(REPLACE(SUBSTR(?templateMotifCigarO32029MF_0210029, 1, (STRLEN(?templateMotifCigarO32029MF_0210029) - STRLEN(REPLACE(?templateMotifCigarO32029MF_0210029, CONCAT('^(?:-*[^-]){', STR(((53 - ?templateMotifSequenceMatchBeginPositionO3202930) + 1)), '}'), '')))), '[a-z]', '')) AS ?step141) .
    BIND((STRLEN(SUBSTR(?targetMotifMatchCigarO32029MF_0210031, 1, (STRLEN(?targetMotifMatchCigarO32029MF_0210031) - STRLEN(REPLACE(?targetMotifMatchCigarO32029MF_0210031, CONCAT('^(?:[a-z]*(?:[A-Z]|-)){', STR(?step141), '}'), ''))))) - STRLEN(REPLACE(SUBSTR(?targetMotifMatchCigarO32029MF_0210031, 1, (STRLEN(?targetMotifMatchCigarO32029MF_0210031) - STRLEN(REPLACE(?targetMotifMatchCigarO32029MF_0210031, CONCAT('^(?:[a-z]*(?:[A-Z]|-)){', STR(?step141), '}'), '')))), '[^-]', ''))) AS ?step242) .
    BIND(((?step242 + ?targetMotifMatchRegionMatchBeginPositionMF_0210032) - 1) AS ?thisPositionOn9) .
    BIND(?thisPositionOn9 AS ?thisPositionOn10) .
    BIND(?this AS ?pfs1t43) .
    BIND(URI(CONCAT(STR(?thisSequence), '#position', STR(?thisPositionOn9))) AS ?pfsb6) .
    BIND(URI(CONCAT(STR(?thisSequence), '#position', STR(?thisPositionOn10))) AS ?pfse7) .
    FILTER ((SUBSTR(?thisSequenceValue, ?thisPositionOn9, 1) = 'G')) .
    BIND(URI(CONCAT(STR(?this), '#MF_02100a5')) AS ?annotation5) .
    BIND(?this AS ?pfs4) .
  }
  OPTIONAL {
    ?this up:sequence ?thisSequence .
    ?thisSequence rdf:value ?thisSequenceValue .
    ?templateMotifMatch48 faldo:location ?templateMotifSequenceMatchRegionO3202949 ;
      edam:is_output_of ?templateMotifSequenceProfileAlignmentOperationO3202951 ;
      rdf:type edam:data_0869 ;
      rdf:value ?templateMotifCigarO32029MF_0210044 .
    ?templateMotifSequenceMatchRegionO3202949 faldo:begin ?templateMotifSequenceMatchBeginO3202950 .
    ?templateMotifSequenceMatchBeginO3202950 faldo:position ?templateMotifSequenceMatchBeginPositionO3202945 ;
      faldo:reference isoform:O32029-1 .
    ?templateMotifSequenceProfileAlignmentOperationO3202951 edam:has_input signature:MF_02100 ;
      rdf:type edam:operation_0300 .
    ?targetMotifMatch52 faldo:location ?targetMotifMatchRegionMatch53 ;
      edam:is_output_of ?targetMotifSequenceAlignmentOperationMF_0210055 ;
      rdf:type edam:data_0869 ;
      rdf:value ?targetMotifMatchCigarO32029MF_0210046 .
    ?targetMotifMatchRegionMatch53 faldo:begin ?targetMotifMatchRegionMatchBeginMF_0210054 .
    ?targetMotifMatchRegionMatchBeginMF_0210054 faldo:position ?targetMotifMatchRegionMatchBeginPositionMF_0210047 ;
      faldo:reference ?thisSequence .
    ?targetMotifSequenceAlignmentOperationMF_0210055 edam:has_input signature:MF_02100 ;
      rdf:type edam:operation_0300 .
    BIND(STRLEN(REPLACE(SUBSTR(?templateMotifCigarO32029MF_0210044, 1, (STRLEN(?templateMotifCigarO32029MF_0210044) - STRLEN(REPLACE(?templateMotifCigarO32029MF_0210044, CONCAT('^(?:-*[^-]){', STR(((74 - ?templateMotifSequenceMatchBeginPositionO3202945) + 1)), '}'), '')))), '[a-z]', '')) AS ?step156) .
    BIND((STRLEN(SUBSTR(?targetMotifMatchCigarO32029MF_0210046, 1, (STRLEN(?targetMotifMatchCigarO32029MF_0210046) - STRLEN(REPLACE(?targetMotifMatchCigarO32029MF_0210046, CONCAT('^(?:[a-z]*(?:[A-Z]|-)){', STR(?step156), '}'), ''))))) - STRLEN(REPLACE(SUBSTR(?targetMotifMatchCigarO32029MF_0210046, 1, (STRLEN(?targetMotifMatchCigarO32029MF_0210046) - STRLEN(REPLACE(?targetMotifMatchCigarO32029MF_0210046, CONCAT('^(?:[a-z]*(?:[A-Z]|-)){', STR(?step156), '}'), '')))), '[^-]', ''))) AS ?step257) .
    BIND(((?step257 + ?targetMotifMatchRegionMatchBeginPositionMF_0210047) - 1) AS ?thisPositionOn16) .
    BIND(?thisPositionOn16 AS ?thisPositionOn17) .
    BIND(?this AS ?pfs1t58) .
    BIND(URI(CONCAT(STR(?thisSequence), '#position', STR(?thisPositionOn16))) AS ?pfsb13) .
    BIND(URI(CONCAT(STR(?thisSequence), '#position', STR(?thisPositionOn17))) AS ?pfse14) .
    FILTER (REGEX('[ED]', SUBSTR(?thisSequenceValue, ?thisPositionOn16, 1))) .
    BIND(URI(CONCAT(STR(?this), '#MF_02100a12')) AS ?annotation12) .
    BIND(?this AS ?pfs11) .
  }
  OPTIONAL {
    ?this up:sequence ?thisSequence .
    ?thisSequence rdf:value ?thisSequenceValue .
    ?templateMotifMatch63 faldo:location ?templateMotifSequenceMatchRegionO3202964 ;
      edam:is_output_of ?templateMotifSequenceProfileAlignmentOperationO3202966 ;
      rdf:type edam:data_0869 ;
      rdf:value ?templateMotifCigarO32029MF_0210059 .
    ?templateMotifSequenceMatchRegionO3202964 faldo:begin ?templateMotifSequenceMatchBeginO3202965 .
    ?templateMotifSequenceMatchBeginO3202965 faldo:position ?templateMotifSequenceMatchBeginPositionO3202960 ;
      faldo:reference isoform:O32029-1 .
    ?templateMotifSequenceProfileAlignmentOperationO3202966 edam:has_input signature:MF_02100 ;
      rdf:type edam:operation_0300 .
    ?targetMotifMatch67 faldo:location ?targetMotifMatchRegionMatch68 ;
      edam:is_output_of ?targetMotifSequenceAlignmentOperationMF_0210070 ;
      rdf:type edam:data_0869 ;
      rdf:value ?targetMotifMatchCigarO32029MF_0210061 .
    ?targetMotifMatchRegionMatch68 faldo:begin ?targetMotifMatchRegionMatchBeginMF_0210069 .
    ?targetMotifMatchRegionMatchBeginMF_0210069 faldo:position ?targetMotifMatchRegionMatchBeginPositionMF_0210062 ;
      faldo:reference ?thisSequence .
    ?targetMotifSequenceAlignmentOperationMF_0210070 edam:has_input signature:MF_02100 ;
      rdf:type edam:operation_0300 .
    BIND(STRLEN(REPLACE(SUBSTR(?templateMotifCigarO32029MF_0210059, 1, (STRLEN(?templateMotifCigarO32029MF_0210059) - STRLEN(REPLACE(?templateMotifCigarO32029MF_0210059, CONCAT('^(?:-*[^-]){', STR(((97 - ?templateMotifSequenceMatchBeginPositionO3202960) + 1)), '}'), '')))), '[a-z]', '')) AS ?step171) .
    BIND((STRLEN(SUBSTR(?targetMotifMatchCigarO32029MF_0210061, 1, (STRLEN(?targetMotifMatchCigarO32029MF_0210061) - STRLEN(REPLACE(?targetMotifMatchCigarO32029MF_0210061, CONCAT('^(?:[a-z]*(?:[A-Z]|-)){', STR(?step171), '}'), ''))))) - STRLEN(REPLACE(SUBSTR(?targetMotifMatchCigarO32029MF_0210061, 1, (STRLEN(?targetMotifMatchCigarO32029MF_0210061) - STRLEN(REPLACE(?targetMotifMatchCigarO32029MF_0210061, CONCAT('^(?:[a-z]*(?:[A-Z]|-)){', STR(?step171), '}'), '')))), '[^-]', ''))) AS ?step272) .
    BIND(((?step272 + ?targetMotifMatchRegionMatchBeginPositionMF_0210062) - 1) AS ?thisPositionOn23) .
    BIND(?thisPositionOn23 AS ?thisPositionOn24) .
    BIND(?this AS ?pfs1t73) .
    BIND(URI(CONCAT(STR(?thisSequence), '#position', STR(?thisPositionOn23))) AS ?pfsb20) .
    BIND(URI(CONCAT(STR(?thisSequence), '#position', STR(?thisPositionOn24))) AS ?pfse21) .
    FILTER ((SUBSTR(?thisSequenceValue, ?thisPositionOn23, 1) = 'D')) .
    BIND(URI(CONCAT(STR(?this), '#MF_02100a19')) AS ?annotation19) .
    BIND(?this AS ?pfs18) .
  }
}
""" .

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