@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_09620 a sh:SPARQLExecutable, sh:SPARQLSelectExecutable ;
  sh:prefixes _:sparql_examples_prefixes ;
  rdfs:comment '''Check there are no entries which are PE2-PE4 with a crosslink annotation with GOLD experimental evidence which is NOT mass spectrometry from a source other than UniProt'''@en ;
  schema:keywords "QC", "protein existence", "PE" ;
  schema:target <https://sparql.nextprot.org/sparql> ;
  sh:select '''PREFIX : <http://nextprot.org/rdf/>
PREFIX cv: <http://nextprot.org/rdf/terminology/>
PREFIX source: <http://nextprot.org/rdf/source/>

select distinct ?entry where {
  ?entry a :Entry.
  ?entry :existence ?pe.
  filter ( ?pe not in (:Evidence_at_protein_level,:Uncertain ))
  ?entry :isoform ?iso.
  ?iso :crossLink /:evidence ?ev.
  ?ev :assignedBy ?src.
  filter ( ?src not in (source:Uniprot))
  ?ev :quality :GOLD.
  ?ev :evidenceCode ?eco.
  filter (?eco not in (cv:ECO_0001096 )) # mass spectrometry
  ?eco :childOf cv:ECO_0000006. # experimental evidence
}''' .
