@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:152_topology_of_subcellular_location a sh:SPARQLExecutable,
        sh:SPARQLSelectExecutable ;
    rdfs:comment "Find the membrane topology (e.g. peripheral membrane protein, lipid-anchor, multi-pass membrane protein) recorded for a subcellular location of reviewed human proteins"@en ;
    sh:prefixes _:sparql_examples_prefixes ;
    sh:select """PREFIX up: <http://purl.uniprot.org/core/>
PREFIX taxon: <http://purl.uniprot.org/taxonomy/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

SELECT
  ?protein
  ?subcellularLocation
  ?topology
WHERE {
  ?protein a up:Protein ;
    up:organism taxon:9606 ;
    up:reviewed true ;
    up:annotation ?annotation .
  ?annotation a up:Subcellular_Location_Annotation ;
    up:locatedIn ?location .
  ?location up:cellularComponent ?component ;
    up:topology ?topologyResource .
  ?component skos:prefLabel ?subcellularLocation .
  ?topologyResource skos:prefLabel ?topology .
}""" ;
    schema:keywords "subcellular location" , "membrane" , "topology" ;
    schema:target <https://sparql.uniprot.org/sparql/> .
