A set of SPARQL examples that are used in different SIB resources
Check there are no entries with a subcellular location annotation that do not have the corresponding keyword
PREFIX : <http://nextprot.org/rdf/>
PREFIX cv: <http://nextprot.org/rdf/terminology/>
select distinct ?entry ?subcell ?kw where {
?entry :isoform ?iso.
?iso :subcellularLocation ?loc.
filter not exists {?loc :negativeEvidence ?negev} # No negative evidence
?loc :term ?subcell.
?kw a :UniprotKeywordCv.
?subcell :related ?kw.
filter not exists {?entry :isoform /:keyword /:term ?kw} # No keyword
}
graph TD
classDef projected fill:lightgreen;
classDef literal fill:orange;
classDef iri fill:yellow;
v1("?entry"):::projected
v5("?iso")
v2("?kw"):::projected
v3("?loc")
v4("?negev")
v6("?subcell"):::projected
a1((" "))
a2((" "))
c7([":UniprotKeywordCv"]):::iri
f0[["not "]]
subgraph f0e0["Exists Clause"]
e0v1 --":isoform"--> e0a1
e0a1 --":keyword"--> e0a2
e0a2 --":term"--> e0v2
e0v1("?entry"):::projected
e0v2("?kw"):::projected
e0a1((" ")):::projected
e0a2((" ")):::projected
end
f0--EXISTS--> f0e0
f0 --> v1
f0 --> c1
f0 --> a1
f0 --> c2
f0 --> a2
f0 --> c3
f0 --> v2
v1 --":isoform"--> a1
a1 --":keyword"--> a2
a2 --":term"--> v2
f1[["not "]]
subgraph f1e1["Exists Clause"]
e1v1 --":negativeEvidence"--> e1v2
e1v1("?loc"):::projected
e1v2("?negev"):::projected
end
f1--EXISTS--> f1e1
f1 --> v3
f1 --> c4
f1 --> v4
v3 --":negativeEvidence"--> v4
v1 --":isoform"--> v5
v5 --":subcellularLocation"--> v3
v3 --":term"--> v6
v2 --"a"--> c7
v6 --":related"--> v2