@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_00003 a sh:SPARQLExecutable,
        sh:SPARQLSelectExecutable ;
    rdfs:comment "Proteins with 7 transmembrane regions"@en ;
    sh:prefixes _:sparql_examples_prefixes ;
    sh:select """PREFIX : <http://nextprot.org/rdf/>

SELECT DISTINCT ?entry WHERE {
 ?entry :isoform ?iso.
 ?iso :topology ?statement.
 ?statement a :TransmembraneRegion.
} group by ?entry ?iso having(count( ?statement)=7)

# 'a' can also be used instead of 'rdf:type'
# 'a' is a synonym of 'rdf:type'
#
# Apply the grouping criterion (group by) for the results.
# This groups entries with isoforms having 7 transmembrane regions.
# Apply the aggregate function (count) to the variable ?statement.
# This counts the number of transmembrane region statements for each isoform.""" ;
    schema:keywords "domain",
        "region",
        "topology",
        "transmembrane",
        "tutorial" ;
    schema:target <https://sparql.nextprot.org/sparql> .

