Skip to content

Commit

Permalink
various
Browse files Browse the repository at this point in the history
  • Loading branch information
cmungall committed Sep 4, 2013
1 parent 165e645 commit 3f035b9
Show file tree
Hide file tree
Showing 7 changed files with 141 additions and 18 deletions.
15 changes: 9 additions & 6 deletions packages/ontol/blipkit_ontol.pro
Expand Up @@ -807,6 +807,7 @@ user:opt_insecure(query).
atoms([cr,containment_relation],ContainmentRelations),
bool(showxp,ShowXP),
bool(showxrefs,ShowXrefs),
bool(showaltids,ShowAltIds),
bool(showinvxrefs,ShowInvXrefs),
bool(showsubsets,ShowSubset),
atom(rankdir,RankDir,'BT'), % for dot/graphviz: TB LR BT RL
Expand Down Expand Up @@ -841,6 +842,7 @@ user:opt_insecure(query).
showdefs(ShowDefs),
showxp(ShowXP),
showxrefs(ShowXrefs),
showaltids(ShowAltIds),
showinvxrefs(ShowInvXrefs),
showsubsets(ShowSubset),
subsets(Subsets),
Expand Down Expand Up @@ -1172,11 +1174,11 @@ show_subgraph(formatted,ID,G,[Tab|Tabs],Opts) :-
forall(member(C-ID,G),
show_subgraph(formatted,C,G,[Tab,Tab|Tabs],Opts)).

blipkit:example('blip ontol-solr -r go -url http://localhost:8984/solr -attval foo=bar -facet isa_partof_closure ',
blipkit:example('blip ontol-solr -r go -url http://localhost:8984/solr -attval isa_partof_closure=GO:0022008 -facet isa_partof_closure ',
'As ontol-subset, but include counts for facets from a SOLR query').
:- blip('ontol-solr',
'Requires plsolr',
[atom(url,URL,'http://localhost:8984/solr'),
[atom(url,URL,'http://golr.berkeleybop.org'),
atoms([attval],AttVals),
atom([facet],Facet),
atoms([relation,rel],Rels),
Expand Down Expand Up @@ -1529,17 +1531,17 @@ compare_feature_pair(X,Y,Scores) :-

show_score_cols(maxIC(MaxIC,L)) :-
!,
format('\tmaxIC\t\~w\t',[MaxIC]),
format('\tmaxIC\t~w\t',[MaxIC]),
maplist(labelify,L,L2),
write(L2).
show_score_cols(maxICnr(MaxIC,L)) :-
!,
format('\tmaxICnr\t\~w\t',[MaxIC]),
format('\tmaxICnr\t~w\t',[MaxIC]),
maplist(labelify,L,L2),
write(L2).
show_score_cols(avgICCSnr(MaxIC,L)) :-
!,
format('\tavgICCSnr\t\~w\t',[MaxIC]),
format('\tavgICCSnr\t~w\t',[MaxIC]),
findall(S2,
( member(S,L),
maplist(labelify,S,S2)),
Expand Down Expand Up @@ -1601,12 +1603,13 @@ blipkit:example('blip -i ~/ontologies/biopax-level2.owl ontol-schema -local bio
[atom(ns,NS),
atom(local,Local),
atom(prefix,Prefix,Local),
bool(labels,UseLabels),
bool(prolog_properties,FixProps)],
_,
( nonvar(NS),
nonvar(Local),
ensure_loaded(bio(ontol_bridge_to_schema)),
write_schema(Local,NS,[prefix(Prefix),prolog_properties(FixProps)]))).
write_schema(Local,NS,[prefix(Prefix),use_labels(UseLabels),prolog_properties(FixProps)]))).

:- blip('ontol-serql-server',
'starts serql server',
Expand Down
51 changes: 49 additions & 2 deletions packages/ontol/ontol_bridge_from_dbpedia.pro
Expand Up @@ -8,9 +8,13 @@
:- use_module(bio(metadata_db)).

dbpedia(Page) :-
setof(Page,T^(user:rdf(Page,'http://www.w3.org/1999/02/22-rdf-syntax-ns#type',T)),Pages),
setof(Page,T^(user:rdf(Page,'http://xmlns.com/foaf/0.1/isPrimaryTopicOf',T)),Pages),
member(Page,Pages).

%dbpedia(Page) :-
% setof(Page,T^(user:rdf(Page,'http://www.w3.org/1999/02/22-rdf-syntax-ns#type',T)),Pages),
% member(Page,Pages).

wpxref_url(X,URL) :-
var(URL),!,
atom_concat('Wikipedia:',Page,X),
Expand All @@ -27,6 +31,15 @@ ontol_db:def(X,D) :-
ontol_db:def_xref(C,C) :-
class(C).


ontol_db:subclass(Sub,Sup) :-
user:rdf(SubU,'http://purl.org/dc/terms/subject',SupU),
atom_concat('http://dbpedia.org/resource/Category:',Cat,SupU),
atom_concat('WikipediaCategory:',Cat,Sup),
%wpxref_url(Sup,SupU),
wpxref_url(Sub,SubU).


% e.g. anterior spinal to vertebral
ontol_db:restriction(Post,branch_of,Pre) :-
user:rdf(PreX,'http://dbpedia.org/property/branchFrom',PostX),
Expand Down Expand Up @@ -58,16 +71,32 @@ ontol_db:restriction(Post,develops_from,Pre) :-
user:rdf(PostX,Rel,PreX),
wpxref_url(Post,PostX),
wpxref_url(Pre,PreX).


ontol_db:restriction(P,part_of,W) :-
user:rdf(PX,'http://dbpedia.org/property/ispartof',WX),
wpxref_url(P,PX),
wpxref_url(W,WX).

metadata_db:entity_label(C,S) :-
dbpedia(U),
wpxref_url(C,U),
wpurl_label(U,S).

% todo - use depiction property
metadata_db:entity_xref(C,X) :-
user:rdf(U,'http://xmlns.com/foaf/0.1/depiction',X),
wpxref_url(C,U).

metadata_db:entity_resource(C,dbpedia) :-
dbpedia(U),
wpxref_url(C,U).

metadata_db:entity_partition(C,Cat) :-
user:rdf(U,'http://purl.org/dc/terms/subject',CatURL),
atom_concat('http://dbpedia.org/resource/Category:',Cat,CatURL),
atom_concat(_,'_anatomy',Cat),
wpxref_url(C,U).

synprop('http://dbpedia.org/property/redirect').
synprop('http://dbpedia.org/property/wikiPageRedirects').
metadata_db:entity_synonym(C,S) :-
Expand All @@ -76,6 +105,24 @@ metadata_db:entity_synonym(C,S) :-
wpxref_url(C,Canonical),
wpurl_label(SynURL,S).

% e.g. club (anatomy)
metadata_db:entity_synonym(C,S) :-
metadata_db:entity_label(C,Label),
atomic_list_concat([S,_],' (',Label).


latin(X,N) :-
user:rdf(U,'http://dbpedia.org/property/latin',literal(lang(en,N))),
wpxref_url(X,U).

metadata_db:entity_synonym(X,S) :-
latin(X,S).
metadata_db:entity_synonym_type(X,S,'LATIN') :-
latin(X,S).
metadata_db:entity_synonym_scope(X,S,'EXACT') :-
latin(X,S).


wpurl_label(U,N) :-
atom_concat('http://dbpedia.org/resource/',Page,U),
concat_atom(Toks,'_',Page),
Expand Down
45 changes: 38 additions & 7 deletions packages/ontol/ontol_bridge_to_schema.pro
Expand Up @@ -12,15 +12,32 @@

maketerm(URI,Args,Term):-
maketerm(URI,Args,Term,_,_,[]).
maketerm(URI,Args,Term,Opts):-
maketerm(URI,Args,Term,_,_,Opts).

%% maketerm(+URI,+Args,?Term,?NS,?Functor,+Opts)
maketerm(URI,Args,Term,_NS,Functor,Opts):-
member(use_labels(1),Opts),
ont_label(URI,Label),
member(module(M),Opts),
!,
downcase_atom(Label,R1),
concat_atom(L,'-',R1),
concat_atom(L,'_',Pred),
debug(schema,' pred= ~w ',[Pred]),
T=..[Pred|Args],
Term=..[':',M,T].

maketerm(URI,Args,Term,NS,Functor,Opts):-
rdf_global_id(NS:Functor,URI),
property_to_predicate(Functor,FunctorSafe,Opts),
T1=..[FunctorSafe|Args],
Term=..[':',NS,T1].
rdf_global_id(NS:Functor,URI),
debug(schema,' P2P ~w ',[Functor]),
property_to_predicate(Functor,FunctorSafe,Opts),
T1=..[FunctorSafe|Args],
Term=..[':',NS,T1].

inf_clause( _NS, (Head:-Body), _Opts):-
inf_clause( _NS, (Head:-Body), Opts):-
rdfs_individual_of(C,owl:'Class'),
maketerm(C,[I],Head),
maketerm(C,[I],Head,Opts),
Body=rdfs_individual_of(I,C).


Expand All @@ -43,6 +60,16 @@ property_to_predicate(R,Pred,Opts):-
property_to_predicate1(R,Pred0,Opts),
safe_predicate(Pred0,Pred,Opts).

% used?
property_to_predicate1(R,Pred,Opts):-
member(use_labels(1),Opts),
!,
debug(schema,'FETCHING ~w ',[R]),
ont_label(R,Label),
debug(schema,'~w ==> ~w',[R,Label]),
downcase_atom(Label,R1),
concat_atom(L,'-',R1),
concat_atom(L,'_',Pred).
property_to_predicate1(R,Pred,Opts):-
member(prolog_properties(1),Opts),
!,
Expand All @@ -59,7 +86,10 @@ safe_predicate(P1,P2,Opts):-
-> concat_atom([M,P1],'_',P2)
; atom_concat(P1,'_',P2)).
safe_predicate(P,P,_).


ont_label(X,Label) :- rdfs_label(X,Label),!.
ont_label(X,Label) :- rdf(X,rdfs:label,S),S=literal(type(_,Label)).


%inf_clause(X):- inf_clauses(Xs),member(X,Xs).

Expand Down Expand Up @@ -89,6 +119,7 @@ assert_clauses(M):-
forall(inf_clause(M,X),
M:assert(X)).

%% E.g. write_schema(bp2,'http://www.biopax.org/release/biopax-level2.owl#')
write_schema(Local,Global):-
write_schema(Local,Global,[]).
write_schema(Local,Global,Opts):-
Expand Down
36 changes: 35 additions & 1 deletion packages/ontol/ontol_db.pro
Expand Up @@ -10,6 +10,8 @@
subclass/2,
equivalent_class/2,
equivalent_class_symm/2,
class_quad_flip/4,
class_quad_flipT/4,
restriction/3,
restriction/4,
restriction/5,
Expand Down Expand Up @@ -76,6 +78,7 @@
obsolete/3,
obsolete_class/2,
class_or_obsolete_class/1,
class_idspace/2,
idspace/2,
inst_of/2,
inst_rel/3,
Expand Down Expand Up @@ -479,7 +482,6 @@ parentT1(ID,[T|TL],IDp,Via):-
; parent(ID,T,IDz,Via),
parentT1(IDz,TL,IDp,Via)).


% parentRT/4
parentRT(ID,[],ID,_).
parentRT(ID,TL,IDp,Via):- parentT(ID,TL,IDp,Via).
Expand Down Expand Up @@ -794,6 +796,10 @@ all_some(Rel):- % all_some by default
\+ disjoint_over(Rel,_),
\+ is_metadata_tag(Rel),
\+ complement_of(Rel,_).
all_some(Rel):- % all_some by default for undeclared
\+ var(Rel),
\+ property(Rel).


all_some_relationship(C,R,P) :-
parent(C,R,P),
Expand Down Expand Up @@ -966,6 +972,9 @@ referenced_id(ID,RefID):- genus(ID,RefID).
% INTER-ONTOLOGY REFERENCES AND MIREOT
% ----------------------------------------

class_idspace(C,S) :- class(C),id_idspace(C,S).


%% idspace_references(?S,?Ref)
% true if Ref is in the parentRT/2 closure of a class
% in idspace S.
Expand Down Expand Up @@ -1033,6 +1042,16 @@ bf_parentRT(ID,PID) :-
member(PID,L).
bf_parentRT(ID,ID) :-
class(ID).
bf_parentRT(L,PID) :-
nonvar(L),
is_list(L),
ids_ancestors(L,[],[],AL),
append(AL,L,AL_2),
sort(AL_2,AL_3),
member(PID,AL_3).




ids_ancestors([ID|IDs],DoneIDs,Ancs,AncsFinal) :-
setof(XID,R^all_some_or_subclass_relationship(ID,R,XID),Parents),
Expand Down Expand Up @@ -1239,6 +1258,21 @@ entity_inverse_relations_closure([Class-_Conns|ScheduledCCPairs],Visited,ResultC
entity_inverse_relations_closure(ScheduledCCPairs,[Class|Visited],ResultCCPairs,FinalCCPairs).
entity_inverse_relations_closure([],_,ResultCCPairs,ResultCCPairs).

% -----------------------------------
% SIMPLE RULES
% -----------------------------------
class_quad_flip(C1,P1,C2,P2) :-
equivalent_class(C1,C2),
subclassT(C1,P1),
equivalent_class(P1,P2),
subclassT(P2,C2).
class_quad_flipT(C1,P1,C2,P2) :-
equivalent_class(C1,C2),
subclassT(C1,P1),
equivalent_class(P1,P2),
subclassRT(P2,C2).




% -----------------------------------
Expand Down
4 changes: 3 additions & 1 deletion packages/ontol/ontol_writer_obo.pro
Expand Up @@ -107,7 +107,9 @@ write_header(obo):-
; Label=SubSet)),
format('subsetdef: ~w "~w"~n',[SubSet,Label])),
forall_distinct(synonym_type_desc(S,T,D),
format('synonymtypedef: ~w "~w" ~w~n',[S,D,T])),
( T=''
-> format('synonymtypedef: ~w "~w"~n',[S,D,T])
; format('synonymtypedef: ~w "~w" ~w~n',[S,D,T]))),
forall_distinct(treat_xrefs_as_equivalent(X),
format('treat-xrefs-as-equivalent: ~w~n',[X])),
forall_distinct(treat_xrefs_as_subclass(X),
Expand Down
4 changes: 4 additions & 0 deletions packages/ontol/ontol_writer_text.pro
Expand Up @@ -92,6 +92,10 @@ ontol_writer:write_class(text,ID,Opts):-
-> format(' [xref: ~w "~w"]',[X,XN])
; format(' [xref: ~w]',[X])))
; true),
( member(showaltids(1),Opts)
-> forall(entity_alternate_identifier(ID,X),
format(' [alt_id: ~w]',[X]))
; true),
( member(showinvxrefs(1),Opts)
-> forall(entity_xref(X,ID),
( class(X,XN)
Expand Down
4 changes: 3 additions & 1 deletion packages/ontol/sparql_util.pro
Expand Up @@ -121,13 +121,15 @@ neurocommons_query_links(A,Row,Limit,Opts) :-
% ----------------------------------------

%% dbpedia_query_links(+A,?Row,+Limit,+Opts) is nondet
% Opts = [sameAs(P),...]
dbpedia_query_links(A,Row,Limit,Opts) :-
( atom_concat('http://',_,A)
-> URL=A
; atom_concat('http://dbpedia.org/resource/',A,URL)),
debug(dbpedia,'focus: ~w',[A]),
sparql_set_server([host('dbpedia.org'),port(80),path('/sparql/')]),
sparql_query_links(URL,Row,Limit,[sameAs('http://dbpedia.org/property/redirect')|Opts]).
sparql_query_links(URL,Row,Limit,Opts).
% sparql_query_links(URL,Row,Limit,[sameAs('http://dbpedia.org/property/redirect')|Opts]).

% ----------------------------------------
% QUERY+REDIRECTS
Expand Down

0 comments on commit 3f035b9

Please sign in to comment.