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)