5
6:- module(gocam,
7 [
8 model/1,
9 model_title/2,
10 model_state/2,
11 production_model/1,
12 model_gene/2,
13
14 gene_to_function/2,
15 gene_to_process/2,
16 gene_to_component/2,
17 gene_to_go/2,
18
19 gene_to_gene/3,
20 igene_to_igene/3,
21
22 inf_biological_process/1
23
24 ]). 25
26:- use_module(library(sparqlprog)). 27:- use_module(library(semweb/rdf11)). 28:- use_module(library(obo_ro/ro)). 29:- use_module(library(obo_core/goslim)). 30
31
32:- rdf_register_prefix(obo,'http://purl.obolibrary.org/obo/'). 33:- rdf_register_prefix(go,'http://purl.obolibrary.org/obo/GO_'). 34:- rdf_register_prefix(bds,'http://www.bigdata.com/rdf/search#'). 35:- rdf_register_prefix(lego,'http://geneontology.org/lego/'). 36:- rdf_register_prefix(prov,'http://www.w3.org/ns/prov#'). 37:- rdf_register_prefix(gocam,'http://model.geneontology.org/'). 38
39
40gene_to_go(GC,C) :- gene_to_process(GC,C).
41gene_to_go(GC,C) :- gene_to_component(GC,C).
42gene_to_go(GC,C) :- gene_to_function(GC,C).
43
44gene_to_process(GC,PC) :-
45 ro:enabled_by(F,G),
46 ro:part_of(F,P),
47 rdf(G,rdf:type,GC),
48 rdf(P,rdf:type,PC).
49
50gene_to_component(GC,CC) :-
51 ro:enabled_by(F,G),
52 ro:occurs_in(F,C),
53 rdf(G,rdf:type,GC),
54 rdf(C,rdf:type,CC).
55
56gene_to_function(GC,FC) :-
57 ro:enabled_by(F,G),
58 rdf(G,rdf:type,GC),
59 rdf(F,rdf:type,FC).
60
61gene_to_gene(G1C,R,G2C) :-
62 ro:enabled_by(F1,G1),
63 rdf(F1,R,F2),
64 ro:enabled_by(F2,G2),
65 rdf(G1,rdf:type,G1C),
66 rdf(G2,rdf:type,G2C).
67
68igene_to_igene(G1,R,G2) :-
69 ro:enabled_by(F1,G1),
70 rdf(F1,R,F2),
71 ro:enabled_by(F2,G2).
72
73
75model(M) :- rdf(M,rdf:type,owl:'Ontology').
76
77
78model_title(M,T) :- model(M),rdf(M,dc:title,T).
79model_state(M,X) :- model(M),rdf(M,lego:modelstate,X).
80production_model(M) :- model_state(M,"production").
81
82model_gene(M,GC) :-
83 ro:enabled_by(_,G,M),
84 rdf(G,rdf:type,GC).
85
86inf_biological_process(X) :-
87 rdf(X,rdf:type,T),
88 rdf(T,rdfs:subClassOf,'http://purl.obolibrary.org/obo/GO_0008150').
89
91