@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_00218 a sh:SPARQLExecutable,
        sh:SPARQLSelectExecutable ;
    rdfs:comment "Proteins for which different splice isoforms have a different subcellular location or function"@en ;
    sh:prefixes _:sparql_examples_prefixes ;
    sh:select """PREFIX : <http://nextprot.org/rdf/>
PREFIX nextprot_cv: <http://nextprot.org/rdf/terminology/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

#A0A1B0GVQ0,A0AVT1 ,A0PJK1...



SELECT DISTINCT ?entry WHERE {
 ?entry :isoform ?iso1, ?iso2.
 ?iso1 :swissprotDisplayed true .
 ?iso2 :swissprotDisplayed false .
 {
 ?iso2 :function / :term ?functerm .
 filter (?functerm != nextprot_cv:GO_0005515) #protein-binding
 filter not exists {?iso1 :function / :term ?functerm .}
 }
 UNION
 {
 ?iso2 :functionInfo / rdfs:comment ?functext .
 filter not exists {?iso1 :functionInfo / rdfs:comment ?functext .}
 }
 UNION
 {
 ?iso2 :cellularComponent / :term ?locterm .
 filter not exists {?iso1 :cellularComponent / :term ?locterm}
 }
}""" ;
    schema:keywords "function",
        "isoforms",
        "subcellular location",
        "tutorial" ;
    schema:target <https://sparql.nextprot.org/sparql> .

