A set of SPARQL examples that are used in different SIB resources
list = EC numbers not linked to UniProt entries
PREFIX up:<http://purl.uniprot.org/core/>
PREFIX ec:<http://purl.uniprot.org/enzyme/>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
SELECT
(count(distinct ?ecNumber) as ?ecCount)
WHERE
{
?ecNumber rdfs:subClassOf up:Enzyme .
FILTER (NOT EXISTS {?ecNumber up:obsolete true .} )
FILTER (!regex(?ecNumber,'-')) .
FILTER (NOT EXISTS {
?protein up:enzyme ?ecNumber .
?protein up:reviewed true .
})
FILTER (NOT EXISTS {
?protein up:domain/up:enzyme ?ecNumber .
?protein up:reviewed true .
})
FILTER (NOT EXISTS {
?protein up:reviewed true .
?protein up:component/up:enzyme ?ecNumber .
})
}
graph TD
classDef projected fill:lightgreen;
classDef literal fill:orange;
classDef iri fill:yellow;
v3("?ecCount")
v2("?ecNumber"):::projected
v1("?protein")
a2((" "))
a1((" "))
c9(["up:Enzyme"]):::iri
c2(["true^^xsd:boolean"]):::literal
f0[["not "]]
subgraph f0e0["Exists Clause"]
e0v1 --"up:reviewed"--> e0c2
e0v1 --"up:component"--> e0a1
e0a1 --"up:enzyme"--> e0v2
e0v2("?ecNumber"):::projected
e0v1("?protein"):::projected
e0a1((" ")):::projected
e0c2(["true^^xsd:boolean"]):::literal
end
f0--EXISTS--> f0e0
f0 --> v1
f0 --> c1
f0 --> c2
f0 --> c3
f0 --> a1
f0 --> c4
f0 --> v2
v1 --"up:reviewed"--> c2
v1 --"up:component"--> a1
a1 --"up:enzyme"--> v2
f1[["not "]]
subgraph f1e1["Exists Clause"]
e1v1 --"up:domain"--> e1a1
e1a1 --"up:enzyme"--> e1v2
e1v1 --"up:reviewed"--> e1c4
e1v2("?ecNumber"):::projected
e1v1("?protein"):::projected
e1a1((" ")):::projected
e1c4(["true^^xsd:boolean"]):::literal
end
f1--EXISTS--> f1e1
f1 --> v1
f1 --> c5
f1 --> a2
f1 --> c4
f1 --> v2
f1 --> c1
f1 --> c2
v1 --"up:domain"--> a2
a2 --"up:enzyme"--> v2
v1 --"up:reviewed"--> c2
f2[["not "]]
subgraph f2e2["Exists Clause"]
e2v1 --"up:enzyme"--> e2v2
e2v1 --"up:reviewed"--> e2c3
e2v2("?ecNumber"):::projected
e2v1("?protein"):::projected
e2c3(["true^^xsd:boolean"]):::literal
end
f2--EXISTS--> f2e2
f2 --> v1
f2 --> c4
f2 --> v2
f2 --> c1
f2 --> c2
v1 --"up:enzyme"--> v2
v1 --"up:reviewed"--> c2
f3[["not regex(?ecNumber,'-')"]]
f3 --> v2
f4[["not "]]
subgraph f4e3["Exists Clause"]
e3v1 --"up:obsolete"--> e3c2
e3v1("?ecNumber"):::projected
e3c2(["true^^xsd:boolean"]):::literal
end
f4--EXISTS--> f4e3
f4 --> v2
f4 --> c7
f4 --> c2
v2 --"up:obsolete"--> c2
v2 --"rdfs:subClassOf"--> c9
bind6[/"count(?ecNumber)"/]
v2 --o bind6
bind6 --as--o v3