1:- module(oma, 2 [ 3 is_orthologous_to/2, 4 is_orthologous_to/5, 5 organism_in_taxon/2, 6 encoded_by/2, 7 ensembl_xref/2, 8 encoded_by_ensembl_gene/2 9 ]). 10 11:- use_module(library(sparqlprog/ontologies/faldo)). 12:- reexport(library(sparqlprog/ontologies/ebi), [in_taxon/2]). 13 14:- sparql_endpoint( oma, 'https://sparql.omabrowser.org/sparql'). 15 16:- rdf_register_prefix(up,'http://purl.uniprot.org/core/'). 17:- rdf_register_prefix(orth, 'http://purl.org/net/orth#'). 18:- rdf_register_prefix(lscr, 'http://purl.org/lscr#'). 19 20is_orthologous_to(P1,P2) :- 21 is_orthologous_to(P1,P2,_,_,_). 22is_orthologous_to(P1,P2,N1,N2,C) :- 23 rdf(C,rdf:type,orth:'OrthologsCluster'), 24 rdf(C,orth:hasHomologousMember,N1), 25 rdf(C,orth:hasHomologousMember,N2), 26 N1\=N2, 27 rdf_path(N1,zeroOrMore(orth:hasHomologousMember),P1), 28 rdf_path(N1,zeroOrMore(orth:hasHomologousMember),P2). 29 30encoded_by(P,G) :- 31 rdf(P,sio:'010079',G). 32 33ensembl_xref(G,X) :- 34 rdf(G,lscr:xrefEnsemblGene,X). 35 36encoded_by_ensembl_gene(P,X) :- 37 encoded_by(P,G),ensembl_xref(G,X). 38 39organism_in_taxon(P,T) :- 40 rdf(P,orth:organism,O), 41 in_taxon(O,T)