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

ex:NXQ_00033 a sh:SPARQLExecutable,
        sh:SPARQLSelectExecutable ;
    rdfs:comment "Proteins with at least one phosphotyrosine but no phosphoserine or phosphothreonine"@en ;
    sh:prefixes _:sparql_examples_prefixes ;
    sh:select """PREFIX : <http://nextprot.org/rdf/>
PREFIX nextprot_cv: <http://nextprot.org/rdf/terminology/>

SELECT DISTINCT ?entry WHERE {
 select ?entry ?iso (count(?ptm) as ?ptmCnt) WHERE {
 ?entry :isoform ?iso.
 ?iso :modifiedResidue ?ptm.
 ?ptm :term nextprot_cv:PTM-0255 #phosphotyrosine.
 filter (
 not exists { ?iso :modifiedResidue / :term nextprot_cv:PTM-0253. } #phosphoserine
 &&
 not exists { ?iso :modifiedResidue / :term nextprot_cv:PTM-0254. } #phosphothreonine
 )
 } group by ?entry ?iso having ( count(?ptm) >= 1 )
}""" ;
    schema:keywords "PTM",
        "phosphorylation",
        "tutorial" ;
    schema:target <https://sparql.nextprot.org/sparql> .

