1/*
    2
    3  
    4*/
    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
   74% TODO - restrict
   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
   90% obo:go/extensions/go-graphstore.owl#subclass_closure
   91
   92/*
   93
   94rdfs_subclass_of
   95  
   96  $ pq-go "aggregate(count(X),inf_biological_process(X),N)" "x(N)"
   973410772
   98
   99  direct
  100  
  101~/repos/linkml-gocam $ pq-go "aggregate(count(X),inf_biological_process(X),N)" "x(N)"
  10279538
  103
  104  rdfs:subClassOf
  105  
  106~/repos/linkml-gocam $ pq-go "aggregate(count(X),inf_biological_process(X),N)" "x(N)"
  1073410772
  108
  109
  110*/