I try to perform the following query on uniprot:
PREFIX rh:<http://rdf.rhea-db.org/>
PREFIX up:<http://purl.uniprot.org/core/>
PREFIX taxon:<http://purl.uniprot.org/taxonomy/>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT
?protein
?ecNumber
?reaction
?equation
WHERE {
?protein a up:Protein .
?protein up:reviewed true .
?taxon a up:Taxon .
?taxon up:scientificName ?name .
VALUES ?taxonlist { taxon:83333 }
{
?taxon rdfs:subClassOf ?taxonlist .
?protein up:organism ?taxon .
} UNION {
?protein up:organism ?taxonlist .
}
?protein up:enzyme|((up:component|up:domain)/up:enzyme) ?ecNumber .
SERVICE <http://rdf.rhea-db.org/> {
?reaction rdfs:subClassOf rh:Reaction .
?reaction rh:status rh:Approved .
?reaction rh:equation ?equation .
?reaction rh:ec ?ecNumber .
}
}
which always results in the error:
VirtuosoException: SQ074: Line 36: SP031:
SPARQL compiler: Internal error: Usupported combination of subqueries and service invocations
When I remove the entire SERVICE
part, it seems to work fine. Is there a way to perform a federated query from uniprot and if so, how?