1:- module(kghub,
2 [
3 category/2,
4 '^'/2,
5
6 edge/5,
7 edge/6,
8 edge_property_value/3,
9 provided_by/2,
10 provided_by/4,
11
12 relation_count/2,
13 category_count/2,
14 chained_provider/3,
15
16 category_provider_count/3,
17 category_node_property_count/3,
18 category_relation_count/3,
19 category_link_count/3,
20 category_link_count/4,
21 category_link_count/5,
22 chained_edge_provider_count/3,
23 edge_provider_count/2,
24 provided_by_count/2,
25 relation_provider_count/3
26 27 ]). 28
31
32
33:- rdf_register_prefix(biolink, 'https://w3id.org/biolink/vocab/'). 34:- rdf_register_prefix(uniprotkb, 'http://identifiers.org/uniprot/'). 35:- rdf_register_prefix(tmp, 'https://www.example.org/UNKNOWN/'). 36:- sparql_endpoint( kgcovid19, 'http://kg-hub-rdf.berkeleybop.io/sparql'). 37
38category(I,C) :- rdf(I,biolink:category,C).
39
40capitalize(W,W2) :-
41 atom_chars(W,[C|W1]),
42 upcase_atom(C,C2),
43 atom_chars(W2,[C2|W1]).
44
45
46'^'(I,C) :-
47 pre((
48 kghub:capitalize(C,Cx),
49 rdf_global_id(biolink:Cx,URI)
50 )),
51 category(I,URI).
52
53edge(I,R,J,P,V) :-
54 edge(_,I,R,J,P,V).
55edge(A,I,R,J,P,V) :-
56 rdf(A,biolink:subject,I),
57 rdf(A,biolink:relation,R),
58 rdf(A,biolink:object,J),
59 rdf(A,P,V).
60
61edge_property_value(A,P,V) :-
62 rdf(A,biolink:subject,_),
63 rdf(A,P,V).
64
65provided_by(A,X) :-
66 rdf(A,biolink:provided_by,X).
67provided_by(I,R,J,X) :-
68 rdf(A,biolink:subject,I),
69 rdf(A,biolink:relation,R),
70 rdf(A,biolink:object,J),
71 rdf(A,biolink:provided_by,X).
72
73
74chained_provider(Src1,Src2,JoinNode) :-
75 rdf(A1,biolink:object,JoinNode),
76 rdf(A2,biolink:subject,JoinNode),
77 rdf(A1,biolink:provided_by,Src1),
78 rdf(A2,biolink:provided_by,Src2).
79
80
81relation_count(P,N) :- aggregate_group(count(*),[P],rdf(_,P,_),N).
82category_count(C,N) :- aggregate_group(count(I),[C],category(I,C),N).
83category_provider_count(C,S,N) :- aggregate_group(count(I),[C,S],(category(I,C),provided_by(I,S)),N).
84category_relation_count(C,P,N) :- aggregate_group(count(*),[C,P],(category(I,C),rdf(I,P,_)),N).
85category_node_property_count(C,P,N) :- aggregate_group(count(*),[C,P],(category(I,C),rdf(I,P,O),is_literal(O)),N).
86category_link_count(C1,C2,N) :- aggregate_group(count(*),[C1,C2],(category(I1,C1),rdf(I1,_P,I2),category(I2,C2)),N).
87category_link_count(C1,R,C2,N) :- aggregate_group(count(*),[C1,R,C2],(category(I1,C1),rdf(I1,R,I2),category(I2,C2)),N).
88category_link_count(C1,R,C2,Src,N) :- aggregate_group(count(*),[C1,R,C2],(category(I1,C1),rdf(I1,R,I2),category(I2,C2),provided_by(I1,R,I2,Src)),N).
89chained_edge_provider_count(Src1,Src2,N) :- aggregate_group(count(*),[Src1,Src2],chained_provider(Src1,Src2,_),N).
90provided_by_count(P,N) :- aggregate_group(count(*),[P],provided_by(_,P),N).
91edge_provider_count(S,N) :- aggregate_group(count(*),[],(provided_by(_I1,_R,_I2,S)),N). 92relation_provider_count(R,S,N) :- aggregate_group(count(A),[R],(rdf(A,biolink:relation,R),rdf(A,biolink:provided_by,S)),N).
93